iOS-App瘦身

关于App瘦身的实践
构成

  • 可执行文件
  • 资源

大纲

删除无用资源

未使用的图片

工具

LSUnusedResources

下载后用Xcode运行,会启动一个Mac程序。

操作

  • 一般都是启动图比较大,往期启动图没有及时清理
  • 不是特别大的工程,未使用图片没多少。不要灰心
  • 要选中ignore similar name防止误删
  • 序列图会误报,一定要检查好。防止误删
  • 某些动画的资源,也会误报,要检查好

定期检查
防止误删

删除重复的资源

重复资源(主要指图片)不是指命名重复而是内容相同。
fdupes是Linux下的一个工具,可以在指定的目录及子目录中查找重复的文件。fdupes通过对比文件的MD5签名,以及逐字节比较文件来识别重复内容。

项目中图片分两处存放,Assets.xcassets和images文件夹,所以在这两个目录查找就可以。

1
fdupes -r xxx/images xxx/Images.xcassets

图片压缩

  • ImageOptim
  • Tinypng
  • WebP图片压缩
    WebP是Google提供的一种图片编码格式,通常情况下WebP格式的图片是原始JPG/PNG图片的1/3,所以对于重度依赖图片显示的应用,转换使用WebP可以节省大量的网络传输数据和时间。对于APP瘦身,使用WebP格式可能是一种方式,可以使用WebP格式的图片替代现有的图片资源,可以一定程度的节省空间。

代码瘦身

AppCode代码静态检查

1
菜单栏 -> code -> Inspect Code

编译器优化

  • Strip Linked ProductMake Strings Read-OnlySymbols Hidden by Default设置为YES
  • 去掉异常支持,Enable C++ Exceptions、Enable Objective-C Exceptions设置为NO, Other C Flags添加-fno-exceptions

LinkMap分析包大小

生成LinkMap文件,可以查看可执行文件的具体组成

可借助第三方工具解析LinkMap文件: https://github.com/huanxsd/LinkMap