ฉันย้อนกลับไปในประวัติ 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
ซึ่งมีขนาดรวมมากกว่า 32 MB ในบันเดิลที่สร้างโดย Xcode 6 ทั้งสองไฟล์มีทั้งหมดเพียง 3 MB
คำถาม # 1 คือทำไมไฟล์ Swift core ถึงมีสองครั้ง? ( เนื้อหาที่ฝังประกอบด้วย Swift Codeถูกตั้งค่าเป็นไม่ใช่ )
และคำถาม # 2 คือเกิดอะไรขึ้น? เหตุใดขนาดคอร์ของ Swift จึงเพิ่มขึ้น 15 MB ถาวรหรือไม่?
หมายเหตุเพิ่มเติมบางประการ:
- นี่เป็นโครงการที่เป็น Objective-C ทั้งหมด แต่ตอนนี้ส่วนใหญ่เป็น Swift กำหนดโมดูลการตั้งค่าถูกตั้งไว้ที่ใช่
- โครงการใช้ CocoaPods พร้อม
use_frameworks!
ชุด - ฉันได้ยืนยันขนาดการดาวน์โหลดจริงจาก TestFlight บนอุปกรณ์และ iOS หลายเวอร์ชันแล้วและอยู่ในช่วง 30–60 MB (น่าจะเป็นความแตกต่างเนื่องจากการแบ่งส่วนแอป) เคยมีขนาด 9 MB