Xcode的App Thinning Size Report分析包体积
们来详细梳理一下如何使用 Xcode 的 App Thinning Size Report 来分析 iOS App 的包体积,这个工具是苹果官方提供的,能最准确地反映 App 在不同设备上的实际大小和构成。
一、核心概念:App Thinning(应用瘦身)
在分析前,先了解 App Thinning 的作用:App Thinning 是苹果的优化技术,能让 App 只包含对应设备所需的资源(如 2x/3x 图片、特定架构的二进制文件),从而减小用户下载的 IPA 大小(下载大小 ≤ 安装大小)。Size Report 就是基于这项技术,生成不同设备的大小报告,帮你定位体积 “元凶”。
二、生成 App Thinning Size Report 的步骤
1. 先通过 Xcode 打包(Archive)
要生成报告,必须先对 App 进行 Archive(归档),操作如下:
- 打开 Xcode,选择项目的 Target → 顶部菜单栏选择 Product → Archive。
- 等待 Xcode 完成编译、打包,之后会自动打开 Organizer 窗口(若未打开,可通过
Window → Organizer手动打开)。
2. 从 Archive 生成 Size Report
在 Organizer 窗口中,选中你刚刚生成的 Archive,按以下步骤操作:
- 点击右上角的 Distribute App 按钮。
- 选择分发渠道:默认选 iOS App Store Connect(无论是否上传到 App Store,都能生成报告),点击 Next。
- 选择分发类型:选 Ad Hoc 或 App Store(两者都支持生成 Size Report),点击 Next。
- 配置 App Thinning:
- 勾选 Use App Thinning(默认已勾选)。
- 选择 All compatible device variants(生成所有兼容设备的报告,方便对比不同设备的大小),点击 Next。
- 签名配置:保持默认的 Automatically manage signing,点击 Next。
- 等待 Xcode 处理:Xcode 会自动生成不同设备的优化后的 IPA 文件,并计算大小。
- 完成后,点击 Done 旁边的 小箭头(📁),选择 Exported Products,会打开一个文件夹。
3. 找到 Size Report 文件
在导出的文件夹中,会有一个名为 App Thinning Size Report.txt 的文件,这就是我们需要的体积分析报告。
三、解读 Size Report 的核心内容
打开 App Thinning Size Report.txt,内容分为 3 个关键部分,我们逐一拆解:
1. 整体概览:不同设备的大小对比
报告开头会列出 所有兼容设备 的下载大小(Download Size)和安装大小(Installed Size),例如:
plaintext
App Thinning Size Report for "MyApp"
------------------------------------Device Type: iPhone 15 (iOS 17.0)
Download Size: 185.2 MB
Installed Size: 420.5 MBDevice Type: iPhone 12 (iOS 16.0)
Download Size: 178.9 MB
Installed Size: 408.3 MBDevice Type: iPad Pro (12.9-inch) (iOS 17.0)
Download Size: 192.1 MB
Installed Size: 435.7 MB
- Download Size:用户通过 App Store 下载的 IPA 大小(已瘦身,只包含该设备所需资源)。
- Installed Size:App 安装到设备后占用的磁盘大小(包含所有资源,比下载大小大)。
- 重点关注 下载大小(直接影响用户下载意愿),以及不同设备间的大小差异(若差异大,可能是资源适配问题)。
2. 按文件类型分析:体积构成明细
这是报告的核心部分,会按 文件类型(如可执行文件、图片、Framework 等)列出占比,例如:
plaintext
breakdown by category:
----------------------Executable: 85.6 MB (46.2%)Assets: 68.3 MB (36.9%)Frameworks: 22.5 MB (12.1%)Storyboards: 4.8 MB (2.6%)Other: 4.0 MB (2.2%)
- Executable:App 的可执行文件(编译后的代码),若占比过高,可能是代码冗余、第三方库过大。
- Assets:图片、音频、视频等资源(占比通常最高),若过大,需优化图片(压缩、用 WebP/AVIF 格式)。
- Frameworks:第三方库(如 AFNetworking、SDWebImage),若占比高,需评估是否必要,或替换为轻量级库。
- Storyboards/XIB:编译后的界面文件,若过大,可能是界面冗余、未清理无用 Storyboard。
3. 按架构 / 资源类型分析:进一步定位问题
报告还会细化到 架构(如 arm64)和 资源类型(如 3x 图片),例如:
plaintext
breakdown by architecture:
--------------------------arm64: 185.2 MB (100.0%) // 目前主流设备只支持 arm64,若有 armv7 架构,会额外占用体积breakdown by asset type:
------------------------Images: 65.2 MB (95.5%) // 图片占 Assets 的 95%,是优化重点Audio: 2.1 MB (3.1%)Video: 1.0 MB (1.4%)
- 若存在 armv7 架构(支持旧设备如 iPhone 5),可考虑移除(在 Build Settings 中设置
Architectures = arm64)。 - 若 3x 图片 占比过高,可检查是否有未压缩的大图,或是否需要同时保留 2x/3x(部分旧设备已淘汰,可评估是否只保留 3x)。
四、结合报告的优化行动指南
根据报告的占比,按优先级优化:
- 优化 Assets(图片 / 多媒体):
- 用
ImageOptim/TinyPNG压缩图片,或替换为 WebP/AVIF 格式(iOS 14+ 支持 WebP,iOS 16+ 支持 AVIF)。 - 清理无用图片(用
FengNiao/LSUnusedResources扫描未引用的图片)。
- 用
- 优化 Executable(可执行文件):
- 清理无用代码(删除未调用的类、方法,开启
Dead Code Stripping)。 - 评估第三方库:替换体积大的库(如用原生
URLSession替代AFNetworking,用Kingfisher替代SDWebImage若需更轻量)。
- 清理无用代码(删除未调用的类、方法,开启
- 优化 Frameworks:
- 移除未使用的 Framework(如项目中没用到的社交分享库、统计库)。
- 优先使用 静态库(.a 文件)而非动态库(.framework),动态库会额外占用体积。
- 清理 Storyboards/XIB:
- 删除未使用的 Storyboard/XIB,或合并冗余界面。
五、注意事项
- 报告仅为参考:Size Report 是 Xcode 模拟生成的,实际 App Store 上的下载大小可能略有差异(苹果会进一步优化),但趋势一致。
- 测试设备兼容性:若移除 armv7 架构或 2x 图片,需测试旧设备(如 iPhone 6s)是否正常运行。
- 定期生成报告:每次大版本迭代后,建议生成一次报告,监控体积变化,避免体积 “失控”。
总结
通过 App Thinning Size Report,你能精准定位 App 体积的主要来源(是图片过大?还是第三方库冗余?),再针对性优化,从而有效减小用户下载大小,提升下载转化率。
