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有优化效果,值得推荐。