Podfile.lock에는 CHECKSUM이 부여됩니다. Podfile.lock의 유일성을 보증하는 해쉬값인 셈이죠. 만약 버전에 변경이 생기면 CHECKSUM 또한 변하게 됩니다.
pod update
pod update {팟이름}을 실행시키면, 코코아팟은 해당 팟의 업데이트된 버전이 있는지 검색합니다. Podfile.lock을 참조하지 않죠. 이 명령어는 팟을최신 버전으로 업데이트시켜주는 것입니다. (단, Podfile의 버전 조건과 일치해야 합니다.) 단순하게pod update만 실행시키면 코코아팟은 모든 팟에 대해 가능한 최신 버전으로 업데이트를 실행합니다.
pod outdated
pod outdated를 실행하면, 코코아팟은 Podfile.lock에 리스트된 것보다 새로운 버전을 가진 모든 팟을 나열합니다. 이 팟들에 대해pod update {팟이름}을 실행한다면 업데이트가 될 것이라는 것을 의미합니다. (역시나 Podfile의 버전 조건과 부합하는 한!)
pod repo update
/Users/{사용자이름}/.cocoapods/repos에 있는 모든podspec파일을 업데이트 합니다.podspec파일에는 해당 pod 의 주소 등 중요한 정보들이 담겨있습니다.
~/.cocoapods/repos에는 모든 pod에 대해 가능한 버전들의podspec파일들이 모여있습니다.pod repo update를 실행하게 되면 최신podspec파일들로 업데이트되게 되는 것입니다. 추가한 라이브러리에 대한podspec이 업데이트되지 않아 오류가 날 경우 이 명령어를 통하여 해결할 수 있습니다.
Podfile.lock을 커밋하세요!
동료와 같이 협업하고 있다면! 꼭Podfile.lock을 공유해야 합니다. pod 버전을 모두가 동일하게 쓰도록 유지시키는 역할을 하는 것이죠. 그리고 Podfile이 수정될 일이 생긴다면pod install명령어를 통해 의존성을 관리하면 됩니다. 만약 동료들과 같은 CHECKSUM을 얻는데에 실패했다면 간단하게rm -rf Pods && pod install을 실행하면 됩니다. 😎
iOS 10 버전 부터, Apple은 앱 개발자에게 사용하는 프레임웍에 대한 설명을 info.plist 파일에 기술하도록 요청하고 있습니다. 이 설명은 사용자에게 해당 기능 사용에 대한 허가를 요청할때 보여지게 됩니다(e.g. location, accelerometer, etc.). 이 요구사항은 탭조이 같은 써드파티 SDK까지 확대 되었습니다. 탭조이는 편의를 위해 탭조이가 사용하고 있는 프레임웍에 대해서 info.plist에 포함해야할 내용을 다음과 같이 제공해 드립니다.
Function
Key
Suggested Text
Accessing media library
NSAppleMusicUsageDescription
광고 경험 향상을 위해서 미디어 라이브러리가 사용됩니다.
Accessing location data all time*
NSLocationAlwaysUsageDescription
광고 경험 향상을 위해서 위치 정보에 접근할 수 있습니다.
Accessing location data when the app is in use*
NSLocationWhenInUseUsageDescription
광고 경험 향상을 위해서 위치 정보에 접근할 수 있습니다.
Accessing accelerometer
NSMotionUsageDescription
광고 경험 향상을 위해서 가속센서를 사용할 수 있습니다.
Accessing photo library
NSPhotoLibraryUsageDescription
개인화된 광고 경험 향상을 위해서 사진 정보에 접근할 수 있습니다.
* SDK 11.9.0부터 CoreLocation.framework 은 optional 입니다.
만일 위와 같은 정보를 info.plist에 추가하지 않으면 다음과 같은 사유로 앱스토어 등록이 거부될 수 있습니다.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSAppleMusicUsageDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSLocationAlwaysUsageDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSLocationWhenInUseDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSMotionUsageDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.
맥의 하드용량이 내가 파일을 하드에 저장하는 것을 인지하는 것 보다 더 빨리 줄어드는 것 같다. 그래서 Hazel 에 규칙을 만들어서 주기적으로 안쓰는 파일을 지우거나 외장하드에 백업하기도 한다.
최근에는 맥북의 SSD에 16GB정도가 남아 있었는데, spotlight 인덱싱 때문인지 임시적으로 0이 될때도 있어서, 몇일 전에는 애플메일에는 spotlight 인덱싱을 뺐더니 하드확보는 되는 것 같다. magican으로 임시파일들을 청소하기도하고, Hazel 규칙을 만들어서 청소하기도 한다.
근데 오늘 뜻하지 않게 약 70GB를 확보하게 되었다.
결론 부터 얘기하면, Xcode 가 빌드할때 마다 아카이브하고 있는 파일들을 청소해서이다.
Xcode 프로젝트에서 기존에 있던 파일명으로 새로 파일을 만들고나서 빌드 오류가 나서 해결책을 찾다가 ~/Library/Developer/Xcode/DerivedData directory 라는 것을 발견했는데, 여기게 62GB가 있었다.
1. ~/Library/Developer/Xcode/DerivedData 지우기
찾아보니 이 디렉토리에 프로젝트 별로 빌드에 관한 정보가 다 저장되어 있다고 한다. 그래서 프로젝트 인덱싱이 잘 안되면 이 디렉토리를 지우는 것이 좋다는 팁도 있는데, 이게 계속 쌓이기만 하고 있는 것이 문제인 것 같다. 이 디렉토리를 지우고 다시 빌드를 하면 다시 생기니 여러 프로젝트를 하는 경우에 이 디렉토리를 지워도 되는 것 같다.
이 디렉토리르 지워서 62GB 가 생겼다.
2. ~/Library/Developer/Xcode/Archives 지우기
찾은 김에 Xcode 디렉토리들을 하나씩 봤는데, Archives 디렉토리도 있었다. 이건 릴리즈한 것에 대해서 디버깅을 할 수 있는 정보들이 있었다. 이것도 Xcode 에서 archive 할때마다 쌓이는 모양이다. 이 디렉토리는 지워서 8GB를 얻었다.
3. ~/Library/Developer/Xcode/iOS Device Logs 지우기
여기에 560MB 가 있었고, 로그를 볼일이 없어서 지웠다.
4. ~/Library/Developer/Xcode/ iOS DeviceSupport 필요 없는 시뮬레이터 지우기
여기에 8.64 GB 가 있었는데, 보니 iOS 5 부터 시뮬레이터들이 있었다. 최근것 남기도 다 지웠다.
Xcode 디렉토리들을 지워서 약 70GB를 확보 했다. 256 GB SSD 에서 70GB는 겁나 큰 수확이었다.
DerivedData directory 는 빌드할때 문제가 있을때 지우고 해보거나 하는 식의 팁들이 있었지만, 내 경우에는 하드용량을 확보하기 위해서 지우게된 셈이다.
매번 볼수는 없으니 Hazel 로 이 빌드 폴더가 5 기가 이상이 되면 자동으로 지워지게 규칙을 만들었다.
혹시 Xcode 를 사용하는 분 중에서 하드용량 확보 필요가 있다면 ~/Library/Developer/Xcode/ 디렉토리 용량이 얼마나 되는지 확인한번 해보는 것도 좋을 것같다.