【问题标题】:Invalid Executable Size - From iTunes Connect无效的可执行文件大小 - 来自 iTunes Connect
【发布时间】:2013-03-09 10:28:46
【问题描述】:

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

我也收到了来自 Apple 的此错误。

尊敬的开发者,

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

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

【问题讨论】:

    标签: ios xamarin.ios app-store-connect


    【解决方案1】:

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

    您应该检查的内容:

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

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

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

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

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

    要了解大小的来源,您需要知道应用程序是如何构建的。

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

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

    • 1234563 /li>

    你可以做些什么来减小尺寸:

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

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

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

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

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

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

    【讨论】:

    • 真的为 Mee 全力以赴。谢谢 Poupou :)
    • 我正在尝试上传调试版本。大声笑
    【解决方案2】:

    不应启用调试,因为它会使构建变得不必要地大。

    更多信息请参考:https://docs.microsoft.com/en-us/xamarin/ios/deploy-test/app-distribution/app-store-distribution/publishing-to-the-app-store?tabs=windows

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,但在我的情况下,我在 info.plist 中将最低操作系统版本设置为 8,导致 .ipa 文件更大。我将其更改为版本 10,并且能够通过尺寸要求。就算是10也有点大方了

      【讨论】:

      • 正确,我也刚刚将版本从 8 更改为 11 并且工作正常
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 2012-07-24
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多