Tôi đã quay ngược lại lịch sử Git để tìm nguyên nhân của sự thay đổi kích thước tệp lớn, nhưng lý do thực sự duy nhất mà tôi có thể tìm thấy là việc chuyển từ Xcode 6 sang Xcode 7 GM.
Tôi nhận thấy rằng đây là 10 người đóng góp kích thước tệp hàng đầu trong hoạt động .ipa
được tạo từ hoạt động Lưu trữ trên cấu hình bản phát hành :
$ 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
Cho đến nay, các tệp lớn nhất là hai tệp (hơi khác nhau) libswiftCore.dylib
, tổng cộng hơn 32 MB. Trong gói được xây dựng bởi Xcode 6, tổng cộng hai tệp này chỉ có 3 MB.
Vì vậy, câu hỏi số 1 là: Tại sao các tệp lõi Swift lại có hai lần? ( Nội dung nhúng Chứa Mã Swift được đặt thành Không ).
Và câu hỏi số 2 là: Chuyện gì đã xảy ra? Tại sao kích thước lõi của Swift lại tăng 15 MB? Cái này có vĩnh viễn không?
Một số lưu ý bổ sung:
- Đây là một dự án hoàn toàn là Objective-C nhưng bây giờ chủ yếu là Swift. Các Định nghĩa Mô-đun thiết lập được thiết lập để Yes .
- Dự án sử dụng CocoaPods với
use_frameworks!
bộ. - Tôi đã xác nhận kích thước tải xuống thực tế từ TestFlight trên nhiều thiết bị và phiên bản iOS và nó nằm trong khoảng 30–60 MB (có lẽ sự khác biệt là do cắt ứng dụng). Nó từng là 9 MB.