iOS项目优化:可执行文件瘦身

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS项目优化:可执行文件瘦身相关的知识,希望对你有一定的参考价值。

1.删除无用资源文件

1X的图片可以全部删掉

重复的图片分两种,一种是名字一样的图片,如果你使用.xcassets来管理图片,那么Xcode的左边栏会有警告提示图片名字重复,直接按提示一一处理即可。另一种是名字不一样但是文件一样的图片,我们使用了一个Python脚本(@甘超江 大神出品)来扫描,每次编译的时候执行该脚本,如果有扫描命中则会让Xcode编译失败,此时需要人工去处理。需要注意的一点就是使用.xcassets来管理图片的时候回存在一个映射关系,通过imageNamed:方法使用的名字和图片的真实名字有可能不一样,脚本扫描的时候需要特别处理下。

未使用的图片可以通过LSUnusedResources扫描出来,不过要注意的是可能会有误伤,该工具是全匹配,一些拼接名字来使用的图片要注意手动剔除。笔者就因为误删图片被惩罚过o(╯□╰)o

一些音频、视频和多余的plist文件以及readme文件什么的目测只能肉眼扫描了,我们没用到这些资源暂时没这个问题。

2.资源压缩

首先是图片压缩,ImageOptim工具可以实现无损压缩。

另外关于图片,建议使用Apple推荐的.xcassets来管理,它会把里边的所有png格式的图片压缩成一个Assets.car文件,压缩比率比其他方式管理图片要高。不过测试发现jpg图片不会在Assets.car文件里。

另如果你有用到音频或视频资源,也可以考虑压缩。

3.H5页面远端化

如果你的H5有本地页面和资源,可以考虑全部远端化。本地资源主要是一些js、html文件和图片。

4.代码部分优化

通过appcode 打开对应的工程文件 选择 Code - > inspect Code 分析代码,去掉无用的引用及代码。

5.分析可执行文件

(下面的方式 我试过之后暂时未看懂)

使用link map
XCode开启编译选项Write Link Map File
XCode -> Project -> Build Settings -> 搜map -> 把Write Link Map File选项设为yes
在 编译后的工程文件夹可以找到 命名为 xxxlinkmapxxx.txt的文件(查找方式为,Winodw - Project - derived data - build - Intermediates -xxx.build - 对应debug或者Release文件下)分析 该txt文件,可以得到项目编译后各个模块生成的.o文件在可执行文件中的组成。

如何分析
本文采用node + js 的方式分析。 js代码地址https://gist.github.com/bang590/8f3e9704f1c2661836cd 使用方法,node js路径 xxlinkmapxxx.txt 路径 -hl 分析出来 过大的可以考虑缩减和替换。





以上是关于iOS项目优化:可执行文件瘦身的主要内容,如果未能解决你的问题,请参考以下文章

iOS App 瘦身方案

SpringBoot 部署 Jar 文件,瘦身优化指南 !

Spring Boot部署JAR文件瘦身优化经验分享

iOS安装包瘦身

iOS安装包瘦身

iOS之深入解析App Thinning的应用瘦身优化流程