日常知识点收集

iOS 瘦身

2019-06-27  本文已影响0人  孔朝阳

一、简介

1、Apple对于App可执行文件大小有明确规定Maximum build file sizes

Maximum build file sizes
2、Apple的限制针对于可执行文件的__TEXT段大小,可使用命令行size+可执行文件查看
3、Apple的1MB按1000KB计算
4、对于超过150MB(之前是100MB)的App只能通过WiFi环境下载,无法使用移动网络下载
5、可以通过删除资源文件和无用代码等方式减少安装包大小

二、数据维度

1、AppStore中实际大小

根据机型不同,配置(如bitcode等)不同,最终大小有所差异

2、ipa大小

使用不同的证书打包,ipa大小不同?(待查)

3、资源文件大小

资源文件包括图片、声音、配置文件、文本文件(例如rtf文件)、xib(在安装包中后缀名为nib)、storyboard等

4、可执行文件大小

解包ipa,可查看

5、__TEXT段大小

6、代码行数

find . -name "*.m" -or -name "*.h" -or -name "*.c" -or -name "*.xib" -or -name "*.storyboard" | xargs wc -l

三、图片资源

1、删除@1X图片

非Retain屏幕使用1X图片,即iPhone 3GS及更早的手机。目前的App可以选择不使用1X图片了,如果老项目中存在,可以删除

2、删除未使用图片

扫描工具:LSUnusedResources

LSUnusedResources

3、压缩图片

扫描工具:上述工具稍稍改动下源码,即可扫描所有图片并查看大小信息
压缩工具:ImageOptim 无损压缩

ImageOptim
压缩工具:TinyPNG 有损压缩
TinyPNG

4、导入方式

Assets.car:在编译时,Images.xcassets中的所有文件会被打包为Assets.car的文件,较直接导入或者Bundle的方式有压缩功能

5、图片本地转网络

6、图片格式

WebP是Google提供的一种图片编码格式,通常情况下WebP格式的图片是原始JPG/PNG图片的1/3,所以对于重度依赖图片显示的应用,转换使用WebP可以节省大量的网络传输数据和时间。对于APP瘦身,使用WebP格式可能是一种方式,可以使用WebP格式的图片替代现有的图片资源,可以一定程度的节省空间

四、可执行文件

1、扫描无用代码

1.1、使用AppCode代码静态检查可扫描无用类、方法和引用等
Code->Inspect Code 自定义检查项
1.2、使用Fui扫描
Fui

// 安装fui
gem install fui
// 切换到工程目录
cd ~
// 扫描
fui find

2、扫描相似代码

使用SameCodeFinder扫描相似代码,输出扫描结果中的数字代表两个文件的海明距离,数字越小,相似度越高

// 查看python版本
python --verison
// 安装pip
sudo easy_install pip
// 安装simhash实现
pip install simhash
// 扫描
python SameCodeFinder.py [path] .m

3、查看目标文件大小

LinkMap文件是Xcode产生可执行文件的同时生成的链接信息,用来描述可执行文件的构造成分,包括代码段(__TEXT,保存程序代码段编译后的机器码)和数据段(__DATA,保存变量值)的分布情况
Build Setting - Write Link Map File 修改为YES
Build Setting - Path to Link Map File 为生成文件路径
获取LinkMap文件后使用LinkMap分析工具分析

LinkMap

五、编译选项优化

上一篇下一篇

猜你喜欢

热点阅读