sdk 버전 별 symbol을 다운로드 하는 방법
IOS의 SDK를 다운로드 받기 위해서는 꼭 해당 버전이 install 되어있는 아이폰이 필요하다.
Apple은 PAD와 IPHONE의 상위 버전은 같게 하는 경우도 있지만 SDK의 빌드 버전을 다르게 설정하는 경우도 있어서 pad의 sdk가 필요하다면 마찬가지로 해당 버전이 install되어있는 패드가 꼭 필요하다.
Xcode에서는 Pad나 iphone이 연결되어있을 때 폰이나 pad가 가지고 있는 sdk 버전이 mac에 없는 경우 다운로드를 시작한다.
다운로드가 되는 경로는
/Users/{본인ID}/Library/Developer/Xcode/iOS\ DeviceSupport/
이며 이 하위에 자신이 가지고 있는 SDK 버전들이 있다.
중요한 SDK가 있다고 하더라도 모든 Cpu architecure를 지원하는 것은 아니라는 것이다.
iphone4, 4s의 경우 기기가 armv7이고 iphone5는 armv7s, iphone6는 arm64 cpu를 가지고 있기 때문에 실제 모든 architecture 별로 SDK를 갖기 위해서는 4, 5, 6를 모두 연결해야만 한다.
IOS는 다운그레이드도 매우 어려운 편이기 때문에 실제 모든 SDK의 SYMBOL을 갖기 위해서는 각 sdk가 나올 때마다 3개 기기를 모두 Xcode에 연결해서 sdk를 다운받아야 한다.
(분명 꼭 기기가 필요없이 다른 방법이 있을 것 같긴한데 현재 확인된 방법은 이것 뿐이다. Xcode를 까서 SDK를 다운 받는 루틴을 모두 확인하지 않는 한 딱히 다른 방법이 없다.)
다운 받은 SDK에서 지원하는 cpu architecture를 확인하는 방법은 dwarfdump를 이용하거나 lipo를 이용한다.
lipo -info /Users/{본인ID}/Library/Developer/Xcode/iOS\ DeviceSupport/8.3\ \(12F70\)/Symbols/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
> 결과
Architectures in the fat file: /Users/{본인ID}/Library/Developer/Xcode/iOS DeviceSupport/8.3 (12F70)/Symbols/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation are: arm64 armv7s armv7
위 결과를 보면 8.3 12F70 버전 SDK는 arm64, armv7s, armv7에 대한 Symbol을 모두 가지고 있는 것을 확인 할 수 있다.