1、配置编译选项
generate debug symbols = YES
这个会设置会跳过断点,可以在 release下设置为NO(可能会影响CrashReporter的使用),但我试的没有什么变化 依旧是83 M
2.舍弃部分架构
现在我们项目的架构为 armv7s、armv7、arm64
模拟器 32 为处理器 i386架构(iPhone5,iPhone5s以下的模拟器)
模拟器 64 为处理器 x86_64架构(iPhone6以上的模拟器)
模拟器 32 为处理器 armv7或者 armv7s架构(iPhone4真机/armv7, iPhone5,iPhone5s真机/armv7s)
模拟器 64 为处理器 arm64架构(iPhone6以上的真机)
舍弃 armv7后 体积缩小为 62.1 M,如果你们机型统计中有iPhone4用户那就谨慎使用,可以和领导沟通后选择处理方案。
3、dead code stripping 去除被定义但未被调用的代码
dead code stripping.png dead code stripping = YES
设置后 体积缩小为 60.7 M
4、压缩 Images.xcassets 下的图片资源
图片压缩之后 体积缩小为 56.8 M
之所以压缩图片,是因为我在解压IPA包查看包内容时,发现这里的图片资源所占体积还是挺大的,于是也处理了一下这里的资源,这块可以让UI给压缩好的图片也可以自行选择压缩工具,我使用的是一个在线工具,https://tinypng.com/ 效果挺好,能压缩 70%左右,就是每次只能压缩20张。
5、压缩部分其他资源图片
图片压缩之后 体积缩小为 52.6 M(这里只压了其中一部分)
我们项目是组件化开发的,在网上搜索图片资源大小是不占IPA包体积的,我有点好奇,所以也尝试着压缩了一些图片,发现影响还蛮大,可能是因为我们垃圾图片比较多。另外推荐一款不错的垃圾图片检测(https://github.com/onevcat/FengNiao),他能检测出未使用的图片资源。效果挺好,但也有一些检测不到,或者有些图片是通过拼接使用的 [NSString stringWithFormat:@"xxx_%ld",1]; 这时候可能也会被误认为未使用,不过检测之后可以查看检测的结果选择性的移除。
6、去除符号信息(xcode默认处理)
strip debug symbols during copy 和 symbols hidden by default 在release版本应该设为yes,可以去除不必要的调试符号。symbol hidden by default 会把所有的符号定义为 private extern。设了后会缩小体积
debug 下 设置为 NO
release 下 设置为 YES
strip debug symbols during cop
debug = NO, release = NO
symbols hidden by default
debug = NO, release = YES
7、strip linked product : debug 下设为NO,release下设为 YES,用语release模式下缩减APP的大小(xcode默认处理)
strip linked product
debug = NO, release = YES
8、Optimization Level (xcode默认处理)
release下选择 Fastest Smalllest,
网友评论