一、素材相关
1. 音视频
- 本地工程尽量不内置视频文件,走网络动态加载。
- 本地音频文件一般控制在20~50KB。
2. 图片规范
- 图片使用@2x,@3x即可,不需要用单倍的图片。
- 非Gif图源文件不得高于120KB,一般控制在50KB,建议控制在20KB以下,小按钮图标一般Byte大小。
- Gif图源文件尽量不高于1M。
3. 素材排查方式
- 解压缩ipa包,检查ipa素材文件大小,同步替换工程内置图片和工厂打包所调整的图片素材,减少图片大小,可以利用图片在线压缩进行图片压缩。
- 利用LSUnusedResource筛选工程中未使用的图片素材,如果有部分代码在git上以frameWork形式存在,调整需小心。
二、冗余代码检查
- 利用AppCode检测未使用的代码:菜单栏 ->Code->InspectCode
三、编译器优化
1. Generate Debug Symbols
(Levels选项内)Generate Debug Symbols 设置为NO,这个配置选项应该会让你减去小半的体积。注意这个如果设置成NO就不会在断点处停下
2. 舍弃架构armv7
armv7用于支持4s和4,4s是2011年11月正式上线,虽然还有小部分人在使用,但是追求包体大小的完全可以舍弃了。
3. DEAD_CODE_STRIPPING
build setting 里 DEAD_CODE_STRIPPING = YES去掉冗余的代码
4. Optimization Level
Build Settings->Optimization Level有几个编译优化选项,release版应该选择Fastest, Smalllest[-Os],这个选项会开启那些不增加代码大小的全部优化,并让可执行文件尽可能小。
5. 去除符号信息
Strip Debug Symbols During Copy 和 Symbols Hidden by Default 在release版本应该设为yes,可以去除不必要的调试符号。Symbols Hidden by Default会把所有符号都定义成”private extern”,设了后会减小体积。
6. Strip Linked Product
Strip Linked Product:DEBUG下设为NO,RELEASE下设为YES,用于RELEASE模式下缩减app的大小;
7. Enable C++ Exceptions、Enable Objective-C Exceptions
编译器优化,去掉异常支持。Enable C++ Exceptions、Enable Objective-C Exceptions设置为NO,Other C Flags添加-fno-exceptions
- Enable C++ Exceptions
- Enable Objective-C Exceptions
- Other C Flags添加-fno-exceptions