Swift打包的IPA過大

最近在用Swift重構公司項目,數據庫方面還是想用FMDB,但也想看看混編之後包會增長到多大,於是在沒有引入FMDB時先進行了一次打包。讓我吃的是,打出來的包居然有110M+,這還是沒有編寫任何複雜邏輯的情況。爲了探究爲何會出現這一現象,我做了如下實驗:
1.使用xcode重新創建一個Swift項目Test,打包發現只有100k左右。
2.將Test按照公司項目的配置通過CocoaPods導入相同的三方庫,打包發現還是隻有100k+,說明和CocoaPods沒有關係.
3.通過Xcode->Organizer-> 在公司項目打包的文件上面右鍵選擇“Show in Finder” -> 在Finder中的文件上右鍵選擇“顯示包內容”,對比Test項目,發現公司項目目錄下多了一個SwiftSupport文件夾,裏面包含了Swift的核心動態庫文件,如圖:
Swift打包的IPA過大
可以看出,IPA主要是被這部分"帶大"的。
4.經過仔細對比,最終發現是因爲公司項目在Build Settings裏面設置了iOS Deployment Target爲9.0。若設置爲12.2以上的系統,則IPA包不會包含這些動態庫;但如果設置低於12.2,則IPA包會包含這些動態庫。
5.這種現象我在 Stack Overflow:IPA generated by swift is so big, about 5MB上找到了原因:

The libraries containing the entire Swift language have to be embedded in the IPA. Those libraries are part of the app, not part of the system - because Swift has to work even with backwards compatibility, in part because it is constantly changing (independently of system updates), and in part in order to work on iOS 7 (where the system has never heard of Swift). And they are about 5MB in size.

總結起來就是一句話:由於Swift語言的不穩定性,爲了向後兼容,IPA包需要包含完整的Swift動態庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章