# 优化 iOS 播放器的体积

> Reduce and optimize the size of the iOS Player.

减小构建的 iOS 播放器体积主要有两种方法：在 Xcode 中创建发布构建，或在 Unity 中调整代码剥离级别。

## 发布版本构建##release-build

建议在 Xcode 中创建最终的发布版本。导航到菜单栏，然后选择**产品 (Product)** > **存档 (Archive)**。此操作可确保构建采用正确的发布配置，并移除所有调试符号。执行此操作后，Xcode 会切换到 Organizer 窗口的 Archives 选项卡。有关如何计算应用体积以及更多减小体积的技巧，请参阅[减小应用程序体积](https://developer.apple.com/library/content/qa/qa1795/_index.html)。

**注意**：在优化应用体积以满足无线下载限制时，建议预留一定的误差空间。当前的无线下载限制为 200MB。但从 iOS 13 开始，用户可以选择突破此限制，下载体积超过 200MB 的应用。

## 托管代码剥离##managed-code-stripping

Unity 在构建过程中通过托管代码剥离技术移除未使用或不可达的代码，从而显著减小最终应用的体积。请参阅[托管代码剥离](/engine/6000.0/manual/scripting/compilation-and-code-reload/backends/managed-code-stripping.md)以了解更多信息。

\*\*注意：\*\*有时难以确定哪些类被错误地剥离（尽管应用实际需要这些类）。通常可以通过在[模拟器](https://developer.apple.com/documentation/xcode/running-your-app-in-simulator-or-on-a-device)上运行剥离后的应用，并检查 Xcode 控制台中的错误信息来获取线索。

## 减小构建体积##reduce-the-build-size

使用以下检查清单有助于进一步减小构建体积：

* 对纹理启用压缩，并尽量减少未压缩音频的数量。更多减小文件体积的技巧，请参考[减小构建的文件体积](/engine/6000.0/manual/platform-specific/cross-platform-features/reducing-filesize.md)。

* 在 [**iOS 播放器设置 (iOS Player settings)**](/engine/6000.0/manual/platform-specific/iphone/getting-started/class-player-settings-ios.md) 窗口中：

  * 启用[**剥离引擎代码 (Strip Engine Code)**](/engine/6000.0/manual/platform-specific/iphone/getting-started/class-player-settings-ios.md#Optimization)
  * 将脚本调用优化 (Script Call Optimization) 级别设置为 [**Fast but no exceptions**](/engine/6000.0/manual/platform-specific/iphone/getting-started/class-player-settings-ios.md#Optimization)。
  * 将 API 兼容性级别设置为 [**.Net Standard**](/engine/6000.0/manual/platform-specific/iphone/getting-started/class-player-settings-ios.md#Configuration)。

* 删除不必要的代码依赖项。

* 避免将泛型容器与值类型（包括结构体）结合使用。

## Unity 应用程序的最小体积##minimum-unity-application-size

如果禁用体积优化，空项目在 App Store 中的体积可能约为 20MB。通过代码剥离，包含空场景的应用程序可以在 App Store 中减小到 12MB 以下。但需注意，应用必须经过压缩并附加数字版权管理 (DRM)。

## Apple App Store 中的应用程序体积增加##increased-application-size-in-the-apple-app-store

发布应用时，Apple App Store 服务会先对二进制文件进行加密，然后再通过 zip 压缩。加密会增加代码段的随机性，从而在压缩前可能导致应用体积增加。
