iOS rebuild from bitcode对ipa大小的影响

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编译时间,如下图

iOS rebuild from bitcode对ipa大小的影响

2次生成的文件表面看差不多

iOS rebuild from bitcode对ipa大小的影响

但是,开了bitcode的ipa是1.1M,没开的是1.3M。

在看看App Thinning Size Report里的区别,

开了rebuilt from bitcode的

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

上一篇:javascript 统计字符串中每个字符出现的次数


下一篇:ES - Dynamic templates 动态模板