【问题标题】:iOS 64-bit requirement iTunes ConnectiOS 64 位要求 iTunes Connect
【发布时间】:2016-09-21 23:12:49
【问题描述】:

我继承了一个旧项目,其中包含旧的 3rd 方框架。 它在我的 iPhone 6 上运行良好,并且我已经成功地将应用程序存档以进行 AdHoc 部署。 但是,当我尝试将应用程序提交到 App Store 时,我收到一个关于缺少 64 位架构的错误。 当我将 Arm64 添加到目标(以及相关项目)的构建设置中的架构和有效架构时,应用程序将无法编译,因为其中一个框架“缺少所需的架构 arm64”。然后链接失败,我无法创建存档。

由于上面提到的一些设置对我来说有一种巫毒般的感觉,我希望有一个设置组合,它以某种方式采用 32 位代码,但在编译为 64 位后呈现。

我查看了导致问题的框架的最新版本,但它的文件结构和命名约定完全不同,因此升级需要大量工作。

大家有什么建议吗?

谢谢

【问题讨论】:

  • "所以升级需要做很多工作" 然后做那个工作。你不能假装你没有错过 64 位片!
  • @matt:这是唯一的出路吗?我希望有一个临时的快速修复。有趣的是,半年前,我设法提交了这个应用程序。
  • 因为那时还没有这个要求。但现在是。

标签: ios objective-c 32bit-64bit


【解决方案1】:

我希望有一个设置组合,以某种方式采用 32 位代码,但在编译为 64 位后呈现。

您似乎是在要求作弊。你不能作弊。 now a requirement 应用程序是 64 位的。这一要求始于 2015 年 6 月。Apple 提前发出了这一变化的信号,作为开发者的你自己至少收到了一封警告你的电子邮件!

如果您在此之前提交了较早版本的应用,则不是必需的。但现在是。

【讨论】:

  • 2016 年 1 月 22 日,我创建了这个项目的存档,并成功提交到 iTunes Connect。相同的应用,相同的设置,相同的框架。
  • 嘿,是苹果。也许他们提供了额外的宽限期。也许他们的测试/分析程序没有发现这是一个问题。我不代表博格,我只是像其他人一样与他们搏斗。 :)
  • 最后工作=工作=钱=钱。但是升级框架并不是一件很有趣的任务。
【解决方案2】:

如果您使用的是仅提供 32 位版本的已编译库,则您无能为力。

iOS 上的大多数库都以源代码形式提供,因此您只需找到合适的位置将它们编译为 64 位代码即可。您可能需要查看库的来源,并可能需要下载新版本。如果没有可用的新版本,您可能必须自己编写代码或下载不同的库。一些开发者有为一个十行的方法导入一个巨大的库的坏习惯,所以如果你幸运的话,重写丢失的代码可能并不费力。

【讨论】:

    【解决方案3】:

    我猜你有三个选择: 1 - 这可能只是构建设置中的错误; 2 - 移除 64 位架构;或 3 - 重新编译旧框架以获得 64 位兼容性。

    如果您只是在构建设置中的某个地方出现错误。您是否检查过不同的发布方案是否设置正确,如下所示:

    有时将Build Active Architecture Only 标志更改为no 对我也有帮助:

    只需确保单击显示三角形即可为每个方案(调试和发布)设置正确的设置。

    就旧框架而言,是手动包含还是使用 CocoaPods 之类的?我知道 CocoaPods 可以有自己的设置,只为 armv7 和 armv7s 而不是 arm64 构建。

    Apple's guidelines 将现有应用程序转换为 64 位可能很有用。

    【讨论】:

    • 谢谢,我会仔细阅读指南。同时,我查看了所有这些设置,更改了它们,重新更改了它们,但最终结果是应用程序要么无法编译,要么被 iTunes connect 拒绝。
    • @Sjakelien 我感受到了你的痛苦。您能否提供链接器失败位置的更多详细信息(可能是屏幕截图或复制粘贴)?
    猜你喜欢
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2016-10-18
    • 1970-01-01
    • 2017-03-24
    相关资源
    最近更新 更多