文档章节

正确理解 Bitcode

FTD_SL
 FTD_SL
发布于 2016/10/12 14:59
字数 647
阅读 24
收藏 0

今天看完文档发现并不是这么回事

Bitcode,干的事情是指令集优化。根据你设备的状态去做编译优化,进而提升性能,但这对包的大小优化起不到什么本质上的作用

那么美团那个事件是怎么回事呢?

App Thinning in Xcode

在查文档之前,我干了这么样一件事。对比了一下 iOS 8、iOS 9 上的美团占手机大小。结果发现了一个问题,如图。


我确定美团是 Universial 版本,也确定这两个美团是同一版本号。然而体积差了 40+ MB。直接把 iOS 8 上的二进制包拿出来(需越狱),在命令行下

file imeituan

我们发现,他是同时存在 armv7 和 arm64 两个指令集的。


我又在 iOS 7 上干了同样的事情,与 iOS 8 结果一致。于是我们能得出一个推论:这个 ipa 变小的事情是 iOS 9 的 feature

知道是 iOS 9 的问题了,就回过头来去看 WWDC 2015 Session 404,App Thinning in Xcode,我当初看这篇睡着了。官方有这么一张 PPT。

说明,APP Thining 这件事并不只是 Bitcode,而是由: App SlicingOn Demand Resources, Bitcode 组成

其中,App Slicing 干的事情是如下图这样,根据你设备型号,生成对应资源的 ipa,以节省空间。

并且我们在文档里看到了这么一句话:

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 减肥起不到什么作用。

本文转载自:http://mp.weixin.qq.com/s?__biz=MzIwMTYzMzcwOQ==&mid=403331342&idx=1&sn=c0e2b6d127060a802a6f6668e60c

FTD_SL
粉丝 2
博文 35
码字总数 14614
作品 0
南京
私信 提问
iOS 9 sdk bitcode

今天试着用Xcode 7 beta 3在真机(iOS 8.3)上运行一下我们的工程,结果发现工程编译不过。看了下问题,报的是以下错误: 1 得到的信息是我们引入的一个第三方库不包含bitcode。嗯,不知道bit...

飞翔我的梦想
2015/10/10
114
0
关于ios8以后BitCode一词,关于在xcode7(bate3)中报错的解决以及普及

突然之间,你就会发现,Bitcode什么鬼???这是什么鬼? 在Apple官方文档中提到了这一段 Bitcode is an intermediate representationof a compiled program. Apps you upload to iTunes Co...

MisterXia
2015/12/28
426
0
IOS9.0升级后以及xcode7后引起的问题

一、iOS9 bitcode导致编译不通过的问题 首先来说说bitcode,这到底是什么龟! 在官方文档App Distribution Guide–App Thinning (iOS, watchOS)一节中,有这样一个定义:Bitcode is an inter...

街角d咖啡店
2015/09/24
1K
6
does not contain bitcode. You must rebuild it with

does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE 分类: iOS Error2015-09-17 11:37 953人阅读 评论(2) 收藏 举报 Appthinning Xcode ......

法斗斗
2015/09/22
5.9K
0
升级 xcode7之后,真机测试编译失败

昨天 xcode 升级为7之后,真机编译过不去,模拟器能编译过,编译不过, 方法一:更新library使包含Bitcode,否则会出现以下中的警告; 1 (null): URGENT: all bitcode will be dropped beca...

kamy_Shi
2015/09/24
889
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx 快速安装详解

一、Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамбле...

网络小虾米
4分钟前
2
0
技术分享 | slave_relay_log_info 表认知的一些展开

作者:胡呈清 slave_relay_log_info 表是这样的: mysql> select * from mysql.slave_relay_log_info\G *************************** 1. row *************************** Number_of_lin......

爱可生
7分钟前
1
0
nginx配置http访问自动跳转到https

server {listen 80;server_name www.域名.com;rewrite ^(.*) https://$server_name$1 permanent;}server {listen 443;server_name www.域名.com;root /home/www;ssl on;......

很好亦平凡ms
7分钟前
1
0
SpreadJS:一款中国研发的类Excel开发工具,功能涵盖Excel的 95% 以上

Excel 作为一款深受用户喜爱的电子表格工具,借助其直观的界面、出色的计算性能、数据分析和图表,已经成为数据统计领域不可或缺的软件之一。 基于Excel对数据处理与分析的卓越表现,把Excel...

葡萄城技术团队
7分钟前
1
0
用javafx框架tornadofx做了个天气预报的程序

class WeatherApp : App(WeatherView::class)class WeatherView : View("十五天天气预报") { val weatherVM: WeatherViewModel by inject() val controller: WeatherController by......

oschina4cyy
11分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部