使用 TestFlight 意外增加 iOS 应用程序大小

Posted

技术标签:

【中文标题】使用 TestFlight 意外增加 iOS 应用程序大小【英文标题】:Unexpected iOS App size increase with TestFlight 【发布时间】:2015-12-30 09:54:46 【问题描述】:

我们正在为 ios 制作游戏(在 unity 3d 下),IPA 文件大小约为 90 MB。我们提交了它以供审查,同时我们将相同的构建推送到内部测试人员的 Test Flight。令人惊讶的是,Test Flight 的大小现在是 400 MB(未压缩大小)。

我们对游戏的早期版本进行了试飞内部测试,但从未达到如此大的规模。

有人知道试飞是如何占用未压缩文件并显示该文件以供下载(下载 400 MB)的吗?

另外,在我们将其设置为发布后,该应用的下载大小为 90 MB 还是 400 MB?

【问题讨论】:

如果任何答案对您有用,如果您接受该答案,对其他人会有所帮助。如果没有,请随时评论给出的答案,或更新您的问题。 【参考方案1】:

了解 App Store 规模的最佳方法是在此处进行分析:

http://forum.unity3d.com/threads/il2cpp-build-size-improvements.322079/

TL;DR

由于对二进制文件的某些部分进行压缩,应用程序大小的经验公式是:

app_store_size = sizeof(.ipa/(zip with exec_binary removed)) + sizeof(codesegment(exec_binary)) + 0.2 * sizeof(datasegment(exec_binary))

此分析仅查看二进制大小,因此您还需要添加任何资产的大小。

【讨论】:

【参考方案2】:

好的,我不确定你如何将应用发送到 TestFlight,但如果你使用的是 App Loader 或 XCode,你可以取消选中“包含位码”字段,我不确定它是否默认设置。

这是它在 XCode 中的样子(导出存档时): https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Art/6_ios_review_dist_profile_2x.png

问题是,iTunes 将为您的应用程序创建不同的二进制文件,每个二进制文件都针对不同版本的设备(如不同版本的 iPad、iPhone 等)进行了优化。这就是为什么您在 TestFlight 上的应用程序与您的 ipa 文件相比在大小上有如此巨大的差异。

【讨论】:

我使用 App Loader 将其上传到 TestFlight。而且,不,我没有任何“位码”复选框。我曾经也对以前的版本应用相同的设置和方法,但它从来没有那么大。 查看此文档以了解更多详细信息:developer.apple.com/library/tvos/documentation/IDEs/Conceptual/… 我不确定这如何适用于 Unity 上的项目,据我所知,基本上 iTunes 将默认设置 AppThinning。这并不意味着该应用程序在安装到设备后将有 400MB 大小。它背后的整个想法是为每个设备优化它(如果它们在 iOs9 + 上)。 关于 Unity 和应用瘦身的一些细节可以在这里找到:blogs.unity3d.com/2015/12/28/…【参考方案3】:

检查 IPA 的内容。它可能在 DSYM 文件夹中包含调试符号。由于 il2cpp 输出非常大,符号文件也将如此。我想它们包含在 Testflight 上传中,因为它们用于 QA 目的,其中调试符号非常有用。

【讨论】:

以上是关于使用 TestFlight 意外增加 iOS 应用程序大小的主要内容,如果未能解决你的问题,请参考以下文章

意外的 CFBundleExecutable 键

使用 TestFlight 分发的 iOS 应用程序,包括 Crashlytics。无符号

如何在不使用 TestFlight 的情况下对 iOS 应用进行 beta 测试

使用 TestFlight 进行内部测试时,啥是好的 iOS 应用版本控制策略?

使用 Testflight sdk 获取 iOS 应用程序的生产数据

Testflight 假 iOS 版本检测