包体积优化
问题
如何有效减小 iOS App 的安装包体积?
答案
包体积组成
资源优化
| 方法 | 效果 |
|---|---|
| 使用 Asset Catalog | 自动 App Thinning(按设备下发) |
| 图片压缩(TinyPNG) | 可减 50%+ |
| 使用 WebP 替代 PNG | 体积减 30% |
| 使用 SF Symbols | 替代自定义图标 |
| 删除无用资源 | 工具扫描(FengNiao) |
| 大资源按需下载 | On-Demand Resources |
代码优化
| 方法 | 说明 |
|---|---|
| Strip 符号 | Build Settings: Strip Linked Product = YES |
| Dead Code Stripping | 移除未使用代码 |
| 删除无用类/方法 | AppCode 静态分析 |
| 合并动态库 | 减少 Mach-O 开销 |
| Swift 标准库 | iOS 12.2+ 系统自带,不再打入包 |
| 编译优化 | -Osize 优化体积(vs -O 优化速度) |
App Thinning
Apple 自动为不同设备生成最优包:
- Slicing:按 CPU 架构(arm64)和屏幕(@2x/@3x)裁剪
- Bitcode:Apple 服务器重新编译优化(已弃用)
- On-Demand Resources:按需下载游戏关卡等资源
常见面试问题
Q1: 如何分析 IPA 包的组成?
答案:
- App Thinning Size Report:Archive → Distribute → 导出报告
- 解压
.ipa(改后缀.zip),查看各文件大小 xcrun size -x -l -m YourApp分析 Mach-O 段大小- 使用 LinkMap 文件,分析各模块代码体积占比