gpt4 book ai didi

ios - 无效的可执行文件大小 - 来自 iTunes Connect

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:22 26 4
gpt4 key购买 nike

我正在将我的 iOS 应用程序上传到 iTunes。我正在使用 MonoTouch 为 iOS 编译我的 LibGdx 游戏。在 Android 中,它几乎不是 7-8mb。但是当我在 iTunes AppStore 上上传时,它会变成 78 mb。我不知道为什么?请让我知道。

我也从 Apple 收到了这个错误。

尊敬的开发者,

我们发现您最近交付的“Run Panda Run:Racing”存在一个或多个问题。要处理您的交付,必须更正以下问题:

无效的可执行文件大小 - 72037504 字节的可执行文件大小超过了 60 MB 的最大允许大小。

最佳答案

如果没有更多细节,很难给出一个明确的答案。有很多因素会影响应用程序的大小。让我们从基本开始。

您应该检查的内容:

  • 首先,确保您的应用程序使用不链接构建。这将创建非常大的应用程序,因为您将 几乎 AOT'ing Xamarin.iOS 提供的完整 .NET 框架;

  • 其次,确保您针对单一架构 (ARMv7) 进行构建。 FAT 二进制文件(例如 ARMv7 和 ARMv7s)构建了两次,需要两倍的空间;

  • 第三,确保您没有启用调试 构建(可以在发布构建中启用,它是一个复选框)。这将创建更大的二进制文件以支持调试;

  • 第四,确保您使用的是 LLVM 编译器。编译需要更多时间,但会生成更好(和更小)的代码;

这些初始检查非常容易进行,并且是获取非常大的二进制文件的最常见原因。

要了解大小的来源,您需要了解应用程序的构建方式。

  • Android 和 iOS 版本之间的主要区别在于 iOS 不允许 JIT'ing(即时编译)(Apple 的规则)。

  • 这意味着必须对代码进行 AOT(提前编译),并且该过程会创建更大的可执行文件(因为 IL 比 native 代码更紧凑);

  • 如果您的代码是泛型繁重的,那么最终的二进制文件可能会变得非常大,因为它需要本地编译所有泛型可能性(许多情况可以共享,但值类型不能)。

如何减小尺寸:

  • 首先尝试减少您的托管 代码大小。执行此操作的简单方法是在每个程序集上启用链接器,即在您的项目选项中链接所有程序集

许多人认为链接他们自己的代码不值得 - 因为他们知道在运行时将需要它(因此链接器无法删除它)否则他们不会编写该代码。

这只对了一半。链接器可能无法删除您的大部分应用程序代码但是如果您使用的是第 3 方程序集,它们不太可能 100% 使用。链接器可以删除该额外代码(并且还可以从 SDK 中删除为支持不需要的代码而保留的所有代码)。您拥有的共享代码越多,链接器对您的帮助就越大。

更少的 IL 代码意味着更快的 AOT 时间,这转化为更快的构建更小的最终二进制文件(包括可执行文件大小)。

注意:有很多文档和博客条目介绍如何控制链接器跳过某些程序集、某些类型或方法,使其不被处理/删除。

  • 其次尝试减小您的原生尺寸。如果您正在构建 native 库,请再次查看它们,因为它们将静态(而非动态)链接到您的最终二进制文件(iOS 应用程序的另一条规则)。其中一些可能不值得(在功能方面)它们在最终二进制文件中的权重(并且可能有更轻的替代方案)。

关于ios - 无效的可执行文件大小 - 来自 iTunes Connect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15309671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com