Bitcode,乾的事情是指令集優化。根據你設備的狀態去作編譯優化,進而提高性能,但這對包的大小優化起不到什麼本質上的做用架構
那麼美團那個事件是怎麼回事呢?app
在查文檔以前,我幹了這麼樣一件事。對比了一下 iOS 八、iOS 9 上的美團佔手機大小。結果發現了一個問題,如圖。性能
我肯定美團是 Universial 版本,也肯定這兩個美團是同一版本號。然而體積差了 40+ MB。直接把 iOS 8 上的二進制包拿出來(需越獄),在命令行下優化
file imeituan
咱們發現,他是同時存在 armv7 和 arm64 兩個指令集的。spa
我又在 iOS 7 上幹了一樣的事情,與 iOS 8 結果一致。因而咱們能得出一個推論:這個 ipa 變小的事情是 iOS 9 的 feature。命令行
知道是 iOS 9 的問題了,就回過頭來去看 WWDC 2015 Session 404,App Thinning in Xcode,我當初看這篇睡着了。官方有這麼一張 PPT。3d
說明,APP Thining 這件事並不僅是 Bitcode,而是由: App Slicing
、On Demand Resources
, Bitcode
組成code
其中,App Slicing
乾的事情是以下圖這樣,根據你設備型號,生成對應資源的 ipa,以節省空間。blog
而且咱們在文檔裏看到了這麼一句話:遊戲
In fact, app slicing handles the majority of the app thinning process. ‘App Slicing’ feature finally switched on in iOS 9.0.2
也就是說,對於 ipa 減肥,主要是由拆分架構、資源文件來起到絕對性做用。而這個功能 iOS 9.0.2 以前的用戶都享受不到。
再來講一下 On Demand Resource
的做用,蘋果的示意圖很清晰。
做爲遊戲,只須要下載公共資源文件、初始關卡。每過一關,再下載對應資源文件能夠大幅減小包的大小。這對安裝包只有 200M 限制的 Apple TV 格外重要。
那麼,咱們知道。開了 Bitcode 後,會根據不一樣設備來分包。會不會能起到 iOS 8 縮減體積的做用呢?事實上並非如此,你們能夠去下載一下手機百度。會發現 iOS 8,比 iOS 9 大得多。
因此咱們能得出來 2 個不大不小的結論:
1. 若是想給 ipa 減肥,Bitcode 乃至 App Thinning 都對 iOS 9.0.2 如下用戶無效。 2. 其實Bitcode 對 ipa 減肥起不到什麼做用。