随着时间的推移、项目开发和迭代, App包体积越来越大, App瘦身势在必行!
分析App的组成
- 资源文件
- 数据库、配置文件、数据文件
- 字体文件
- 图片
- 源代码
生成LinkMap
通过生成LinkMap
文件可以分析生成ipa包的内容组成:Xcode
—>TARGETS
—>Build Settings
—>搜索Link Map
—>在Write Link Map File
中把Debug中的值改为YES, Release中改为NO—>在Path to Link Map File
中是生成文件的路径, 一般默认在~/Library/Developer/Xcode/DerivedData/XXX-eumsvrzbvgfofvbfsoqokmjprvuh/Build/Intermediates.noindex/XXX.build/Debug-iphoneos/XXX.build/XXX-LinkMap-normal-arm64.txt
LinkMap会包含每个可执行文件的偏移量及大小,所以可以很方便的知道每个可执行文件的大小。可以通过LinkMap分析工具快速分析App内组成。
图片
图片压缩
图片是相当占用资源的, 对于一些比较大的图片, 我们可以无损压缩一下, 这样可以节约60%的图片大小的空间。
- 在线压缩
- 软件工具
查找未使用的图片
以下两种方式删除图片时都需要谨慎, 最好删除之前项目中搜索一下。
- 方式一: 通过
ack
命令自己写一个脚本
1 | 判断是否安装了ack命令, 没有则安装 |
- 方式二: LSUnusedResources
字体
系统字体
系统字体, 但不在预装字体列表中, 注意: 退出当前控制器或者App重启后都需要重新下载
1 | //用字体的PostScript名字创建一个Dictionary NSMutableDictionary *attrs = [NSMutableDictionary dictionaryWithObjectsAndKeys:fontName, kCTFontNameAttribute, nil]; |
自定义字体
字体文件相对来说比较大, 我们可以把字体文件放在服务器, 使用的时候从服务器下载后再使用。可以一次下载多次使用.
1 | //下载字体后, 本地沙盒路径 |
代码
第三方库
项目中或多或少的使用一些第三方SDK, 清理一些不使用的SDK, 或者根据需要使用精简版的SDK。
bitcode
Xcode中要使用bitcode要求说有的SDK都必须支持bitcode, 可以在Xcode
—>PROJECT
—>Build Settings
—>搜索bitcode
开启。
未使用的类
注意防止误删!