问题
每次产品迭代的次数越多,你就会发现安装包的大小也会随之增大,因为有很多废弃的代码,UI素材堆积在项目里面,导致了冗余。这边按照自己亲身经验对APP进行瘦身。
说干就干
优化编译选项
1、BuildSettings -> Optimization Level
,Xcode默认设置为“Fastest, Smallest”
,保持默认即可。
2、Build Settings -> Linking -> Dead Code Stripping
设置成 YES
。
3、Deployment Postprocessing
设置成 YES
。
4、Strip Linked Product
设置成 YES
。
5、工程的 Enable C++ Exceptions
和 Enable Objective-C Exceptions
选项都设置为 NO
,手动管理异常(本人没有关闭)。
6、symbols hidden by default
选项设置为 YES
。
瘦身结果 | 总结 |
---|---|
没什么变化 | 配置编译选项未必能够减少安装包大小,根据实际情况而定。 |
优化图片
Targets -> Build Settings -> Compress PNG Files
设置为NO
。- 全部或绝大部分图要用压图软件手动压缩(推荐使用
TinyPNG
软件)。 - 不同尺寸兼容建议(如下)
当遇到使用全屏帮助页时,一开始我是这样做的:
这样做导致了如果我帮助页多的话,就会导致安装包变大。其实这种情况一般能将这些帮助页放在网页是最合适不过的,因为使用频率不高。没必要放在项目中。但是如果非要放在项目中的话,我们就需要尽可能的想办法较少占用。
我们知道,iPhone的屏幕尺寸有着几种:
设备型号 | 尺寸 | 逻辑分辨率(point) | 设备分辨率(pixel) | 高宽比 |
---|---|---|---|---|
iPhone 4,4s | 3.5寸 | 320x480 | 640x960 | 640/960 = 1.5 |
iPhone SE,5,5s,5c | 4寸 | 320x568 | 640x1136 | 1136/640 = 1.775 |
iPhone 8,7,6s,6 | 4.7寸 | 375x667 | 750x1334 | 1334/750 = 1.775 |
iPhone 8P,7P,6sP,6P | 5.5寸 | 414x736 | 1242x2208 | 2208/1242 = 1.778 |
iPhone X | 5.8寸 | 375x812 | 1125x2436 | 2436/1125 = 2.165 |
那么是不是美工妹妹要切4套图呢,如果这样,编译的APP就非常大了!有经验的美工只会给你两套图!为什么呢?请看各型号手机的高宽比,发现了吧:只有4/4s的高宽比是1.5其他都近视1.775!也就是说,我们通过判断手机的屏幕高度来区分加载那套图,然后做适当的等比例放大就行了!为了保险起见,个人建议保留3.5寸和4.7寸两套图(如下图),然后根据如果是非3.5寸的屏幕时,固定宽度,高度=宽度*1.778。另外需要特别说明,4.7寸的图最好底部多留几个像素,方便拉伸。
2018-06-12补充
由于出了iPhone X的缘故,高宽比跟原本保留的两套不一样,所以需要再加一套图进行适配。
代码实现:
|
|
瘦身结果 | 总结 |
---|---|
瘦身显著,UI素材从17.9M压缩到8.1M | UI素材一定要进行一遍压缩,因为UI人员未必会帮你压缩之后发给你,所以有时候一张素材少则几KB,多则几百KB不止。 |
尾巴
通过上面的各种折腾,安装包从原来的47.6M缩小为27.2M。当然,上传到AppStore之后会再大一些,不过总体来说已经缩小了很多了。
再一次感谢您花费时间阅读这篇文章!
微博: @Danny_吕昌辉
博客: SuperDanny