【问题标题】:No architectures to compile for Xcode 6.1没有为 Xcode 6.1 编译的架构
【发布时间】:2025-12-29 03:05:11
【问题描述】:

我正在运行 xcode 6.1

我正在将最初针对 4.3 的项目升级到最新的 iOS 和 SDK。当我针对模拟器运行时,它可以针对所有小于 iPhone 5S 的模拟器进行良好编译,它适用于 iPhone4、4S、iphone5(7 和 8)。但是,当我选择 iPhone 5S 和 iPhone 6 设备时,我收到错误消息:No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386)。

设置:

【问题讨论】:

    标签: ios xcode


    【解决方案1】:

    您的有效架构应为armvv7, armv7s, arm64 否则,您不允许(至少)arm64。 当调试和发布相同时,您也不需要区分它们

    【讨论】:

    • 我应该提到我确实尝试将您提到的内容添加到有效的拱门中,但仍然出现错误。
    • 您是否将其添加到“有效架构”中?还是“建筑”?因为后者不应该需要完整的列表。我在安装 Xcode 6.1 后也遇到了支持架构的问题——我已经能够通过重新启动我的 Mac 来解决它。仅重启 Xcode 是不够的……
    • 我添加到有效的拱门,原始问题中的附加图像。请注意,我还添加了 i386 以查看它是否有所作为,但没有。知道 iOS7 和 iOS8 在 iPhone5 上运行良好,从 iphone5 到 iphone5S 会有什么不同?
    • 我怀疑您的部署目标已经很老了。为了支持64bit,至少需要6.0。详情请参阅我的回答。
    【解决方案2】:

    我建议您执行以下操作:

    1. 删除对有效架构的本地修改,使其恢复为默认值。
    2. 删除对架构的本地修改,使其恢复为默认值。
    3. 确保您的部署目标至少为 6.0。将其设置为早于 6.0 的版本将不允许您支持 64 位。

    默认架构值将仅显示手臂拱形。您不需要包含 i386 和 x86_64。在为 sim 构建时,Xcode 负责将您的手臂拱门转换为适当的英特尔拱门。例如,如果您在有效的拱门或拱门中有 armv6、armv7 或 armv7s,则在为 sim 构建时将在内部转换为 i386。

    【讨论】:

    • 我确实尝试了上述方法,仍然是同样的错误。目标设置为最新(8.1),它适用于 iphone4 &5,我在选择 iphone5S 和 iphone6 时仍然收到错误
    • 如果是这样,那么您的有效架构和架构仍未正确设置。确保您没有覆盖默认值。显示更新的屏幕截图。
    • 原始问题中的附加图像。如果我误解了,请告诉我。再次感谢您帮助解决让我完全发疯的事情。
    • 您的屏幕截图显示“有效架构”设置不正确(请注意,文本为粗体),并且由于展开三角形已关闭,因此未显示值。点击它并点击删除。
    • 是的,您将其留为 blank,这与将其设置为 default 不同。单击它,然后按删除以将其重置为默认值。
    【解决方案3】:

    我必须从项目文件中手动删除覆盖的 VALID_ARCH 设置,以使其构建模拟器。无论出于何种原因,如果您在目标级别覆盖它们,它就不起作用(至少对我而言),并且您无法在 Xcode 中删除它们,因为它将它们替换为空而不是从项目设置中继承它们。

    【讨论】: