文章

缩减 App 的大小

测量 App 的大小,优化其素材资源和设置,并采用各种技术来帮助简化通过移动互联网连接进行安装的过程。

概览

即使你的用户位于移动网络覆盖良好的区域,下载速度也可能不尽相同,或者他们的数据套餐可能会限制可用的高速流量。为确保 App 下载不会花费很长时间或给用户带来额外的费用,App Store 限制了能通过移动网络连接安装的 App 的大小。如果 App 大小超过限制,用户需要连接 Wi-Fi 网络才能进行安装。确保你的 App 大小低于限值,从而尽可能扩大 App 的潜在安装量并缩短安装时间。

除了这些问题外,设备可能只有有限的可用储存空间,这让留意 App 的大小变得更加重要。请考虑在开发和测试流程中测量 App 大小,并计划好在开发时进行优化。

在开始优化你的 App 前,首先需要测量其下载大小和安装大小。不过,你为调试而创建的二进制文件或从 Xcode 中上传到 App Store 的二进制文件都不适合用于测量 App 的大小。例如,你无法利用以下任何二进制文件:

  • APP 文件 (App 套装)

  • 你在归档 App 时创建的 XCARCHIVE 套装

  • 你上传到 App Store Connect 的 IPA 文件

这些二进制文件中的一些资源和文件并不包括在用户从 App Store 下载的套装内;例如,用于崩溃报告的 DSYM 文件。

在开发过程中,准确获取 App 下载大小和安装大小的唯一方式是在 Mac 上创建 App 大小报告。不过,如果你的 App 通过 App Store 或 TestFlight App 提供,App Store Connect 会提供最准确的大小信息。它会显示你的 App 的各个变体大小,并在大小超出可通过移动互联网连接下载的限值时警告你。

为进行 TestFlight 测试而分发的 App 含有 App Store 构建版本中没有的额外数据,因此 TestFlight 构建版本要大一些。当你在 App Store 中提供 App 时,你的 App 不会包含这些额外的数据。不过,与你上传的二进制文件相比,App 在获批上架 App Store 后的最终大小可能会稍大一些。如果 App Store 对你 App 的二进制文件进行了额外处理,添加 DRM 以保护 App 隐私,再重新压缩二进制文件,这时就会发生这种大小增加的情况。

下图显示了测量 App 大小并进行优化的常见工作流程。

流程图中概述了测量 App 大小的流程以及何时应进行优化。

要进一步了解如何在 App Store Connect 中查看构建版本的文件大小,请参阅“App Store Connect 帮助”。

以下两个部分介绍了如何通过 Xcode 生成大小报告,以及如何自动创建该报告。

创建 App 大小报告

虽然 App Store Connect 会提供最准确的 App 大小测量信息,但 Xcode 的内置报告工具也能为你创建 App 大小报告。该报告会提供 App 下载大小和安装大小的近似估值。要创建 App 大小报告,请按照以下步骤操作:

  1. 在 Xcode 中归档你的 App。

  2. 将你归档的 App 导出为“Ad Hoc”、“Development”(开发) 或“Enterprise”(企业) 构建版本。

  3. 在用于设置开发分发选项的页面中,为 App 瘦身选取“All compatible device variants”(所有兼容设备变体),然后启用“Rebuild from Bitcode”(从 Bitcode 重新构建)。

  4. 为 App 签名并导出到你的 Mac。

这个过程会创建一个文件夹,内含 App 的各种工件:

  • 适用于旧款设备的通用 IPA 文件。这一个 IPA 文件中含有 App 的所有变体的素材和二进制文件。

  • App 的各个变体的精简版 IPA 文件。这些文件仅包含一个变体的素材和二进制文件。

导出 App 的输出文件夹中还包含 App 大小报告:一个名为 App Thinning Size Report.txt 的文件。这个报告中列出了 App 的各个 IPA 文件的压缩大小和未压缩大小。未压缩大小相当于 App 在设备上的安装大小,压缩大小则是 App 的下载大小。下方显示了一个示例 App 的 App 大小报告的开头:

App Thinning Size Report for All Variants of ExampleApp

Variant: ExampleApp.ipa
Supported variant descriptors: [device: iPhone11,4, os-version: 12.0], [device: iPhone9,4, os-version: 12.0], [device: iPhone10,3, os-version: 12.0], [device: iPhone11,6, os-version: 12.0], [device: iPhone10,6, os-version: 12.0], [device: iPhone9,2, os-version: 12.0], [device: iPhone10,5, os-version: 12.0], [device: iPhone11,2, os-version: 12.0], and [device: iPhone10,2, os-version: 12.0]
App + On Demand Resources size: 6.7 MB compressed, 18.6 MB uncompressed
App size: 6.7 MB compressed, 18.6 MB uncompressed
On Demand Resources size: Zero KB compressed, Zero KB uncompressed

// Other Variants of Your App.

生成 App 大小报告后,你现在可以进行一些基本优化,例如检查二进制文件中有没有未使用的素材,从而缩减 App 的大小。有关更多信息,请参阅“进行基本优化以缩减 App 的大小 (英文)”。

自动生成 App 大小报告

除了通过 Xcode 创建 App 大小报告外,你还可以在构建脚本或持续集成工作流程中自动生成该报告。运行以下命令,以使用 xcodebuild 导出你要分发的 App 并创建 App 瘦身大小报告:

xcodebuild -exportArchive -archivePath iOSApp.xcarchive -exportPath Release/MyApp -exportOptionsPlist OptionsPlist.plist

在必要时替换所有文件名和路径。要创建 App 大小报告,请为 xcodebuild 提供导出选项属性列表。务必要包含 thinning 键,并将值设为 <thin-for-all-variants>

要进一步了解 xcodebuild 的用法,请参阅“从 Xcode 命令行进行构建的常见问题解答 (英文)”。

相关主题

大小优化

进行基本优化以缩减 App 的大小 (英文)

调整项目的构建设置,并在 App 开发生命周期的早期阶段使用 Bitcode 和素材目录等技术。

进行高级优化以进一步缩减 App 的大小 (英文)

优化 App 的素材文件,采用按需资源,并缩减 App 更新的大小。

另请参阅

性能

改进 App 的性能

利用持续改进循环,为 App 建模并测量和提升 App 的性能。