1 图片处理
1-1 下载https://github.com/tinymind/LSUnusedResources/
主要是删除不用的图片
1-2 下载ImageOptim
对图片进行压缩 有些图片效果不错 有些图片就不能压缩
1-3 把工程里之前文件夹的图片放在Assets.xcassets 这样@2x和@3x取对应需要的图片
1-4 删除@1x图片
1-5 和UI沟通减小大的图片的设计
2 framework处理
2-1 Generate Debug Symbols 设置为NO
2-2 查看framework支持的架构
lipo -info 对应framework路径
只支持对应的arm64就可以 这个效果比较明显
lipo xxxFramework -thin arm64 -output xxxFramework_arm64
2-3 Optimization Level
下的Release模式为:Fastest,Smallest[-Os]
None: 不做优化使用这个设置,编译器的目标是减少编译成本,使调试产生预期的结果。
Fast:编译器将尝试减少代码的大小和执行时间,不进行任何优化,需要大量编译时间。如果希望编译器为大函数占用更多的时间和内存可以使用这个设置。
Faster:编译器执行几乎所有支持的优化,它不考虑空间和速度之间的平衡与“Fast”设置相比,该设置会增加编译时间和生成代码的性能。编译器不进行循环展开、内联函数和寄存器变量的重命名。
Fastest:开启“Faster”支持的所有的优化,同时也开启内联函数和寄存器变量的重命名选项
Fastest,smallest:这个设置启用“Faster”所有的优化,一般不增加代码大小,它还执行旨在减小代码大小的进一步优化。
2-4 设置Dead Code Stripping为YES
3 主工程也可以用以上的思路
3-1 Strip Linked Product 设置为YES
3-2 Symbols Hidden by Default 设置为YES
3-3 Make Strings Read-Only 设置为YES
3-4 Deployment Postprocessing 设置为YES(主工程不要设置)
4 删除不用的代码 类 文档文件等
这个需要当前业务熟悉
https://github.com/wuba/WBBlades
5 大的文件放在远程服务器下载
比如OCR联想字库等
6 相同功能的三方库自研或者用一种
比如转model的库 网络库
7 用到某些单一功能
比如md5 base64 需要引入很多三方库等支持 可以单一抽出
8 部分页面可以考虑引入H5/RN
减少原生的代码