Xcode 7로 전환한 후 앱 크기가 9MB에서 60MB로 커졌는데 해결책이 있나요?
저는 엄청난 파일 크기 변경의 원인을 찾기 위해 Git 역사를 거슬러 올라가지만, 제가 찾을 수 있는 유일한 이유는 Xcode 6에서 Xcode 7 GM으로 전환했기 때문입니다.
저는 이 사람들이 한 해 동안 상위 10개의 파일 크기 기여자라는 것을 발견했습니다..ipa
릴리스 빌드 구성에 대한 보관 작업에서 생성됩니다.
$ unzip -lv Roger\ Release.ipa | sort -k +3nr | head
41802768 Defl:N 16887199 60% 09-14-15 23:47 dc24cdc1 Payload/Roger.app/Frameworks/libswiftCore.dylib
41802400 Defl:N 16886076 60% 09-06-15 18:33 f939ea6a SwiftSupport/iphoneos/libswiftCore.dylib
11184032 Defl:N 5915625 47% 09-14-15 23:48 6ceac4a2 Payload/Roger.app/Roger
6399584 Defl:N 2670275 58% 09-14-15 23:47 0ac52d3f Payload/Roger.app/Frameworks/libPhoneNumber_iOS.framework/libPhoneNumber_iOS
5410384 Defl:N 2334189 57% 09-14-15 23:47 7a8cb03f Payload/Roger.app/Frameworks/Alamofire.framework/Alamofire
4521904 Defl:N 2292789 49% 09-14-15 23:47 95da0882 Payload/Roger.app/Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit
4731552 Defl:N 1926357 59% 09-14-15 23:48 e05337de Payload/Roger.app/Frameworks/libswiftFoundation.dylib
4731168 Defl:N 1925355 59% 09-06-15 18:33 19a5c3c4 SwiftSupport/iphoneos/libswiftFoundation.dylib
2659232 Defl:N 1232897 54% 09-14-15 23:47 1a53a401 Payload/Roger.app/Frameworks/AFNetworking.framework/AFNetworking
1196624 Defl:N 545343 54% 09-14-15 23:47 19a063cb Payload/Roger.app/Frameworks/Bolts.framework/Bolts
까지 가장 큰은 두의 ( 다른)입니다.libswiftCore.dylib
입니다. 에서 이 두. Xcode 6의 파일은 3MB입니다.
1번 질문은 다음과 같습니다.Swift 코어 파일이 두 번 있는 이유는 무엇입니까? (Embedded Content Contains Swift Code는 No로 설정됨)
그리고 두번째 질문은: 무슨 일이 일어났는가 하는 것입니다.Swift 코어 크기가 15MB 증가한 이유는 무엇입니까? 영구적입니까?
몇 가지 추가 참고 사항
- 이것은 전적으로 목표-C였지만 지금은 대부분 스위프트인 프로젝트입니다.Defines Module(모듈 정의) 설정이 Yes(예)로 설정됩니다.
- 이 프로젝트는 코코아 포드를 사용합니다.
use_frameworks!
세트 - 여러 기기와 iOS 버전에서 TestFlight의 실제 다운로드 크기를 확인했으며 30-60MB 범위입니다(아마 앱 슬라이싱으로 인한 차이일 것입니다).원래는 9MB였어요.
비트코드가 원인일 가능성이 가장 높지만 앱스토어에서 배포한 후에는 앱 크기가 실제로 증가하지 않았습니다.
당신은 당신의 앱과 다른 대상에서도 비트코드를 비활성화할 수 있으며, 당신은 수축을 볼 것입니다.
저는 많은 설정과 조합을 테스트해 보았는데 Xcode 7에서 생성되는 번들의 파일 크기는 기기와 iOS 버전에 따라 매우 다양한 것 같습니다.또한 TestFlight 빌드는 이전에 비해 크게 증가했지만, 좋은 소식은 앱 스토어에서 한 번 크게 증가하지 않았다는 것입니다(이전에 비해 번들 크기가 약 1-2MB 증가했음에도 불구하고).
다음은 TestFlight, AppStore 및 장치 간의 차이를 보여주는 몇 가지 샘플입니다.
on 버전, iOS 9.1 버전 5s.
35.6MB
iOS 8.4.에서 아이폰 6 테스트 플라이트
70.1MB
.8MB
앱스토어 크기는 제가 테스트한 모든 기기에서 동일했습니다.iPhone6 Plus에서는 테스트하지 않았지만, @3x 자산을 사용하기 때문에 번들 크기가 더 클 가능성이 높습니다.
swift dylibs의 크기와 사용자 자신의 코드는 비트 코드가 포함되어 있기 때문에 .xcarchive에서 그리고 스토어 배포를 위해 내보낼 때 훨씬 더 클 것으로 예상됩니다.이 추가 크기는 실제로 사용자에게 제공되는 크기에 반영되지 않으므로 문제가 되지 않습니다.앱을 스토어에 제출하면 스토어가 비트코드를 제거하기 위해 해당 앱을 처리하고 해당 IPA의 처리된 버전이 사용자가 다운로드합니다.
저장소 내보내기(예: 임시 배포용으로 저장)를 제외하고 아카이브에서 내보내기 유형을 수행하는 경우, 로컬로 비트코드를 제거합니다(그리고 내보내기 워크플로우에서 해당 옵션을 선택한 상태로 두면 먼저 비트코드에서 바이너리를 다시 컴파일하여 저장소에서 발생할 작업을 다시 생성할 수도 있습니다). 그러면 실제로 앱이 얼마나 클지 알 수 있습니다.TestFlight는 또한 당신을 위해 비트코드를 제거하고 당신의 실제 앱 크기를 보여줄 것입니다.
또한 https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Introduction/Introduction.html 에서 읽을 수 있는 앱 씬닝을 통해 앱의 크기를 줄일 수도 있습니다.어쨌든 앱의 각 얇은 변형의 크기를 확인하기 위해 임시 내보내기를 수행할 수 있습니다.
임베디드 비트코드가 그 이유입니다.
ENABLE_B를 비활성화하지 않을 경우ITCODE, 디버그 기호를 제거할 수 있습니다.
비트 코드를 포함하기 전에 디버그 기호를 제거하는 것이 가능한 옵션 중 하나입니다. http://oguzbastemur.blogspot.com/2015/09/xcode-7-and-increaded-binary-size.html 을 참조하십시오.
Swift 1.2에서도 이 문제가 발생했습니다.동일한 문제에 대한 원래 질문에 대해 SwiftSupport 라이브러리가 두 번 포함되지 않도록 방지하는 방법을 참조하십시오.
나는 이것이 툴체인의 문제라고 꽤 확신합니다.
언급URL : https://stackoverflow.com/questions/32588757/after-switching-to-xcode-7-app-size-grew-from-9-mb-to-60-mb-is-there-a-fix
'programing' 카테고리의 다른 글
호스트에서 VirtualBox의 Oracle DB에 액세스하는 방법(창) (0) | 2023.08.10 |
---|---|
스키마 이름을 지정하지 않고 테이블에 액세스 (0) | 2023.08.10 |
어떻게 하면 호버링되는 동안 부트스트랩 팝오버를 유지할 수 있습니까? (0) | 2023.08.10 |
CodeIgniter의 활성 레코드 메서드를 사용하여 ORDER BY 절을 추가하는 방법은 무엇입니까? (0) | 2023.08.10 |
사용 후 DB Command를 폐기해야 합니까? (0) | 2023.08.10 |