APP达到一定体量后,瘦身是必经之路。各路大佬也都有优秀的文章,我自己也记录下方便以后查找,不对的地方也请大佬们评论区指正。
资源优化
-
删除无用资源
- 重复的图片:1.名字一样 2.名字一样但是文件一样
- 未使用的图片、音频、视频、plist文件等
- 类似Readme这种无用文件
- @1x的图片
-
资源压缩
- 图片无损/有损压缩(imageoptimizer压缩工具)
- 音频压缩(降低采样率)
- H5资源包压缩
- 使用Assets.xcassets来管理图片
-
H5页面远端化(参考饿了么)
-
动态下载资源:字体、图片、配置数据等非必须资源
编译选项优化
Build Settings编译选项
- Optimization level设置为Fastest, Smallest[-Os](指定被编译代码的执行速度和二进制文件大小的优化程度)
- Strip Debug Symbols During Copy设置为YES(copy时剥离二进制符号)
- Strip Link Product 设为YES(控制是否剥离)
- Make Strings Read-Only设为YES(复用字符串字面量)
- Linking->Dead Code Stripping设为YES(消除无效代码)
- Deployment Postprocessing 设为YES(参考链接)
- Symbols hidden by default 设为YES(release时去除不必要的调试符号)(参考链接
- Enable bitcode 设为YES
- 去掉异常支持
- Enable C++ Exceptions和Enable Objective-C Exception设为NO
- 可以对默写文件单独支持异常,编译选项加上-fexceptions即可
- 不能去掉,否则线程回溯就没了,会影响到崩溃日志的生成
- 所有没有使用C++动态性的lib库
可执行文件优化
- 去掉未使用的第三方库
- 整理重复的第三方库
- 去掉未使用的代码
- 未使用的类
- 未使用的方法/函数
- 空函数可以删掉,比如仅实现了[super function]这种
- 整理重复代码
- 代码中很长的字符串抽离(提升压缩比率)
- 其他
- 删除Framework中无用mach-O文件
- 尽量少的使用属性,减少getter和setter
- 用C函数代替OC函数
网友评论