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

iOS rebuild from bitcode对ipa大小的影响的更多相关文章

  1. iOS 如何缩小打包项目ipa大小

    之前项目上线完全由技术老大搞,这次独立开发自己来,觉得自己的打包项目体积略大,网上搜索了一些比较不错的方法,这里总结下 1.配置编译选项 (Levels选项内)Genetate Debug Symbo ...

  2. iOS快速打企业包ipa

    简 首页 专题 发钱啦 注册 登录 简首页专题下载手机应用 gege 2016.01.19 16:55 写了24604字,被92人关注,获得了152个喜欢 iOS快速打企业包ipa 字数256 阅读1 ...

  3. hbase集群region数量和大小的影响

    1.Region数量的影响 通常较少的region数量可使群集运行的更加平稳,官方指出每个RegionServer大约100个regions的时候效果最好,理由如下: 1)Hbase的一个特性MSLA ...

  4. iOS 缩小 ipa 大小

    一.爱奇艺 爱奇艺移动应用优化之路:如何让崩溃率小于千分之二 iOS8 对于 App 的 text 段有 60MB 的限制: 超过 200MB 的 App 需要连接 WIFI 下载(之前是 150MB ...

  5. iOS开发:bitcode介绍和使用cocoapods出现“target overrides the `OTHER_LDFLAGS`……”的解决方案

    在开发中,不免需要引入第三方库,但是因为库的问题,会发生很多错误.如: 1.因为一些第三方库不包含bitcode就会报错: 一次使用xcode7.1时,发现编译失败,报错信息: umeng messa ...

  6. ios自定义View自动布局时计算大小

    https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Impleme ...

  7. ios中[UIScreen mainscreen].bounds 的大小是由什么决定的?

    ios中经常会用[UIScreen mainScreen].bounds 来获取屏幕的frame,但最近网上下载了个项目,在模拟器运行起来,打印[UIScreen mainScreen].bounds ...

  8. iOS开发-App Icons的尺寸大小

    每个App中Icon的尺寸大小是不一样的,如果你添加部分尺寸的Icon,有些没有添加,xCode会给出相应的警告,最近遇到一个问题就是A 76x76 app icon is required for ...

  9. iOS企业开发In House ipa发布流程

    这两天需要发布一个ipa放到网上供其他人安装,需要用到企业级开发者账号.在网上查了一下资料,感觉没有一个比较完善的流程,于是决定把整个流程写下来,供大家参考. 首先详细说明一下我们的目标,我们需要发布 ...

随机推荐

  1. 几种c++字符串split 函数实现的比较

    文中的字符串split函数功能是 从字符串中按照特定的分隔符进行分割,分割的结果保存到std::vector中. 1. strtok实现 std::vector<std::string> ...

  2. springboot2.0整合shiro出现ShiroDialect报错 找不到org/thymeleaf/processor/attr/AbstractTextChildModifierAttrPr

    包版本过低,找最新包 https://mvnrepository.com/ <dependency> <groupId>com.github.theborakompanioni ...

  3. JAVA多线程-实现通讯

    一.多线程之间如何实现通讯 1)什么是多线程之间通讯 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同. 2)如何通讯 wait().notify().notifyAll()是三个 ...

  4. 爬虫免登录进入github

    import requests import re ret = requests.get('https://github.com/login') print(ret.headers) cookies ...

  5. ORM关于表那些事

    一.. ORM表和表之间的关系 1. 一对多 --> 外键(ForeignKey) 2. 多对多 --> 另外一张关系表(ManyToManyField) 1. 三种方式 1. 自己建立第 ...

  6. 在Magento 2中创建管理员菜单

    在Magento 2中创建管理员菜单 第1步:创建menu.xml 第2步:添加菜单项 第3步:刷新Magento缓存 第1步:创建menu.xml 创建名为:menu.xml文件的管理菜单文件 ap ...

  7. A.01.11—模块的输出—输出复用和可配

    对于输入来说,高边输入与低边输入可配,那对于输出来说,它有哪些可配的情况呢. 下图中展示了2种常见的类型. 第一种为同一驱动芯片内部的情况.对于OPL与ODL,即PWM低端输出和固态的低端输出,它们是 ...

  8. 洛谷P2257 YY的GCD 莫比乌斯反演

    原题链接 差不多算自己推出来的第一道题QwQ 题目大意 \(T\)组询问,每次问你\(1\leqslant x\leqslant N\),\(1\leqslant y\leqslant M\)中有多少 ...

  9. (二分查找 结构体) leetcode33. Search in Rotated Sorted Array

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  10. vbox安装增强功能,实现宿主机文件夹共享并浏览器访问

    虚拟机版本:6.0.4 r128413 (Qt5.6.2) linux:centos7/6 点击菜单栏中的设备->安装增强功能,再reboot 获取内核版本号 uname -r 查看yum的内核 ...