最近公司给我安排了一个任务,想要给公司的iOS app瘦身,上传前的包是24.3M,上传后在app store上显示的是28.8M,在iOS平台中,这个大小不算大,可是公司希望这个app的大小能够在15M以内,这个感觉难度有点大
直接说我用到的几个方案吧
1.删除不用的代码、第三方库、图片等资源 这一步负责这个项目的同事已经做过一次了,app包之前是32M,他删除之后变成了28.8M,所以我就没有再去搞这一步
2.我发现里面有一个第三方的sdk非常大,在国外支付paypal比较方便,它是通过cocoapods管理的第三方库,集成paypal的sdk之后,会发现多了一个CardIO的库(280M)和paypal-iOS-SDK(53M),因为我之前做的项目中有做过支付宝支付使用h5调用原生支付宝app,不用集成支付宝的sdk,所以我就去查了paypal的文档,发现它也是支持的,后来我就建议这个paypal支付直接用h5实现,删除之后,打的包变成了18.9M,已经小了不少了 。 ps微信支付、支付宝支付都是支持h5调用原生微信、支付宝的,只是微信的h5支付申请起来可能比较困难,这个项目恰好也用了微信分享的功能,它们的支付和分享是一个sdk,支付宝的sdk大小也就9M,所以就没有删微信和支付宝的sdk
3.bitcode,这个是官方提倡的瘦身方案,结果我设置bitcode = YES之后项目编译就报错,后来查了一下,原来是用了声网的sdk,它支持的是armv7 和 arm64,没有armv7s。因为这个就不支持bitcode,这条路走不通了
4.删除对iPhone 4s的支持。这个项目支持的最低版本是iOS8. armv7、armv7s、arm64系列的机型,armv7主要有iPhone3GS iPhone4 iPhone4s。 但是能够升级到iOS 8 的只有iPhone 4s。
所以我就把armv7删除了,这样子打包的结果是14.6M
后来把armv7和paypal、支付宝的sdk删除之后的打包的大小是10.5M
5.现在这个Xcode 8把包上传到app store会变大,有些app还是变小,具体是怎么样的我还不知道,但是上传之前有一个选项 include app symbols for your application to receive symbolicated reports from Apple,把这个去掉,包也会小1、2M,现在很多app都集成了各种统计的SDK,这个用的也不多
6.在build setting中把Generate Debug Symbols在release模式下关闭
这样子编译出来的.o文件会小一些,但是目前发现效果不明显,不知道是不是其它原因影响的
7.Build Settings->Optimization Level有几个编译优化选项,release版应该选择Fastest, Smalllest,这个选项会开启那些不增加代码大小的全部优化,并让可执行文件尽可能小。这个好像release模式下默认就是这样子的