https://developer.apple.com/library/content/technotes/tn2432/_index.html
為了測試一下rebuild from bitcode的具體作用,我做了以下測試
Section One : 應用程序enable_bitcode 是 true,就是允許app可以bitcode。
1.選擇企業發布,發布一版只支持iphone5的ipa,並選擇rebuild from bitcode
2.用同樣的archive 文件,再發布一版iphone5的ipa,這次不選擇rebuild from bitcode
首先,選擇了rebuild from bitcode的,會多出一個漫長的 bitcode編譯時間,如下圖
2次生成的文件表面看差不多
但是,開了bitcode的ipa是1.1M,沒開的是1.3M。
在看看App Thinning Size Report里的區別,
開了rebuilt from bitcode的
Supported devices: iPhone 5 App + On Demand Resources size: 1.1 MB compressed, 2.5 MB uncompressed App size: 1.1 MB compressed, 2.5 MB uncompressed On Demand Resources size: Zero KB compressed, Zero KB uncompressed
沒有選擇rebuilt from bitcode的
Supported devices: iPhone 5 App + On Demand Resources size: 1.3 MB compressed, 3.5 MB uncompressed App size: 1.3 MB compressed, 3.5 MB uncompressed On Demand Resources size: Zero KB compressed, Zero KB uncompressed
如果不對特定機型編譯,選擇生成一個通用的ipa,也存在rebuilt from bitcode選項。我們再比較一下。
選擇了的話,ipa是1.7m。 不選擇的話,是2.1m。可以看出rebuilt from bitcode 在這種情況下能夠減小ipa體積,即使不是針對特定機型生成的ipa。
Section One 可以得出結論:如果app使用了 enable_bitcode,那么在organizer里生成ipa時,選擇rebuild from bitcode選項,會使ipa的體積縮小。
Section Two 應用程序enable_bitcode 是 false
首先,生成的archive 文件就比較小,是33m ,而剛才開了 bitcode的是36m。
1.選擇企業發布,發布一版iphone5的ipa,並選擇rebuild from bitcode
2.用同樣的archive 文件,再發布一版iphone5的ipa,這次不選擇rebuild from bitcode
開啟rebuild from bitcode 的ipa 是1.3m,不開的ipa 也是 1.3m,2者只差了 2 Byte。
Supported devices: iPhone 5 App + On Demand Resources size: 1.3 MB compressed, 3.5 MB uncompressed App size: 1.3 MB compressed, 3.5 MB uncompressed On Demand Resources size: Zero KB compressed, Zero KB uncompressed
和Section One 測試中的,不開啟rebuild from bitcode 的ipa,差50 Byte 左右。
如果不對特定機型編譯,選擇生成一個通用的ipa,也存在rebuilt from bitcode選項。我們再比較一下。
選擇了的話,ipa是2.1m。 不選擇的話,是2.1m,差了200Byte左右。和Section One中的相應結果比較,差了100 Byte 左右。
通過Section Two的測試,可以得出:如果一個app 的enable_bitcode 是false,那么在 Organizer里生成ipa的時候,無論宣布選擇rebuild from bitcode都是沒有用的。生成的結果基本一致。
通過Section One 和 Two的比較,可以看出,如果一個程序enable_bitcode 為true,並使用 bitcode 技術編譯出了ipa,會比普通的編譯方法得到更小的ipa,也許代碼優化方面也會更好。對於企業級發布,最常用的可能是Section One 里 enable_bitcode ,並且使用rebuilt from bitcode 生成一個通用ipa的情況。對於這種情況,雖然沒有辦法做到 像APP store那樣『針對不同的型號設備,下載到不同的編譯ipa』,但是也對ipa有優化效果,值得推薦。