170

更新到 Xcode 5.1 后,我无法再为 64 位模拟器构建我的项目,收到此错误:

 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).

这些是我的目标构建设置:

Xcode 目标构建设置

我尝试将“构建活动架构”更改为“否”,并将“i386”添加到“有效架构”中,但不幸的是两者都不起作用。感谢您的任何建议!

4

18 回答 18

184

你需要做的只是设置ONLY_ACTIVE_ARCHNO(至少对我有用)。下面是它的截图:


编辑:

据我所知(如果有问题请指出,谢谢),如果设置ONLY_ACTIVE_ARCHYES,则表示 Xcode 只会为活动架构构建(指当前在 Xcode 中活动的设备)。似乎 Xcode 的默认设置设置为 Debug YES,因此当您只想为连接到 Mac 的特殊设备构建时,它不会为其他架构构建二进制文件。

构建失败的原因可能是该项目不支持您连接的设备的架构。因此,最好的解决方案是为您的设备添加正确的架构。以下是支持的架构和设备列表:

  • ARMv8/ARM64: iPhone 6, iPhone 5s, iPad Air,Retina iPad Mini
  • ARMv7s: iPhone 5, iPhone 5c,iPad 4
  • ARMv7: iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3,iPad Mini
  • ARMv6: iPhone, iPhone 3G,iPod 1G/2G

那么为什么“设置ONLY_ACTIVE_ARCHNO有效呢?因为设备仍然可以运行为您添加的所有架构构建的二进制文件(通过构建),但会损失一些性能。这只是一个快速的解决方案,但不是最好的。


注意:您添加的架构越多,生成的二进制文件就越大。因此,最好为您的项目选择正确的架构。;)

于 2014-03-14T01:45:37.397 回答
102

升级到 XCode 5.1 后,我收到了同样的错误消息。你在使用 CocoaPods 吗?如果是这样,这应该可以解决问题:

  1. 从 Xcode 左侧窗格的工作区中删除“Pods”项目并关闭 Xcode。
  2. 从命令行运行“pod install”以重新创建“Pods”项目。
  3. 重新打开 Xcode 并确保在“Pods”项目和您自己的项目的构建设置中将“Build Active Architecture Only”设置为“No”。
  4. 清洁和建造。
于 2014-03-11T20:42:43.687 回答
29

添加arm64到目标的valid architectures. 看起来它也将x86-64架构添加到模拟器有效架构中。

于 2014-03-15T20:18:14.340 回答
27

如果您使用的是 CocoaPods,最可能的问题是因为您的 Pods 项目 Build Settings for Build Active Architecture Only设置为Yes进行调试。

解决方案很简单。将其更改为

同样,将您的应用程序项目更改为

于 2014-04-11T03:17:11.170 回答
12

我有类似的问题。通过在项目的构建设置中将“架构”更改为“ $(ARCHS_STANDARD_32_BIT) ”来解决它。

现在,您必须选择标准架构 (armv7, arm64) - $(ARCHS_STANDARD),因为苹果建议应用程序构建在 64 位架构上。点击:苹果文档

于 2014-03-28T07:04:07.623 回答
10

添加:架构:$(ARCHS_STANDARD_INCLUDING_64_BIT)

有效架构:arm64 armv7 armv7s

于 2014-03-11T14:41:23.930 回答
5

为了避免“pod install”在每次运行时重置 only_active_arch 以进行调试,您可以将以下内容添加到您的 pod 文件中

# Append to your Podfile
post_install do |installer_representation|
    installer_representation.project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
        end
    end
end
于 2014-08-29T16:49:19.173 回答
5

以防万一,对于尽管遵循上述操作仍遇到问题的任何人,请检查您正在运行的模拟器是否也是受支持的模拟器。我已将我的指定为 arm7 和 arm7s,但试图在 64 位模拟器上运行该应用程序。

于 2014-07-10T08:35:20.170 回答
3

我的问题是 Pods 项目针对的是 OS X,尽管我的 Podfile 具有platform :ios. 我正在使用 cocoapods 0.35.0.rc2。

要修复它,请在项目导航器中选择 Pods 项目,并检查 Pods PROJECT 节点(请注意,不是 Pods 目标)针对 iOS。也就是说,架构构建设置应该是:

  • 架构:$(ARCHS_STANDARD)
  • 基础 SDK:iOS 8.1
  • 支持的平台:iOS
  • 有效架构:$(ARCHS_STANDARD)

我还想构建所有架构,所以我在 Podfile 中添加了以下内容:

post_install do | installer |
    installer.project.build_configurations.each do |config|
        config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
    end
end
于 2014-11-12T14:28:46.500 回答
3

只需在有效架构中添加 arm64。我希望它对你有用。

于 2014-10-29T17:49:39.980 回答
3

我必须将以下内容添加i386到. 我正在运行 Xcode 7.2 并针对 iOS 8+。我已经有了,并且在 Xcode 6.4 中工作。x86_64Valid Architecturesarmv7armv7sarm64

于 2015-12-10T00:07:27.960 回答
2

使用 xcode 5.1 在 iPad 上运行我的应用程序时,我遇到了同样的问题。它通过从“有效架构”中删除 armv7 并将“仅构建活动架构”值设置为否得到解决。这两个字段都可以在您的应用程序->目标->构建设置->架构中找到。

于 2014-03-28T10:06:51.940 回答
2
于 2016-01-04T12:41:58.283 回答
0

在架构中-有时为了支持 6.0 和 7.0,我们排除 arm64

在架构 -> 架构 - 选择标准架构 arm64 armv7 armv7s。就在下面的有效架构中使用户 arm64 armv7 armv7s 包括在内。这对我有用。

于 2014-06-02T05:51:02.523 回答
0

尝试在将 i386 添加到架构的同时删除所有以前的架构(即删除 ARCHS_STANDARD 设置)。这应该将活动架构更改为 i386。我在默认情况下尝试为 armv7 构建时遇到了类似的问题,但它一直在尝试为 arm64 构建。我将ARCHS_STANDARD 更改为ARCHS_STANDARD_32_BIT,这改变了所选的活动架构。

于 2014-03-19T23:02:50.583 回答
0

我使用@Kjuly 的答案和特定行解决了这个问题:

“构建失败的原因可能是,该项目不支持您连接的设备的架构。”

加载 Xcode 后,它会自动将我的 iPad 应用程序设置为 iPad Air

在此处输入图像描述

这导致了依赖性分析错误。

更改设备类型立即解决了问题:

在此处输入图像描述

我不知道为什么会这样,但这是一个非常快速的答案,它为我节省了很多在后台摆弄的时间,并立即让应用程序开始测试。我永远不会想到这可能是一件事,而且这么简单的事情就可以解决它,但在这种情况下它确实做到了。

于 2015-05-18T13:53:35.810 回答
0

在有效架构中:选择每个条目(发布、调试)并构建并按退格键。它应该工作

于 2016-12-22T13:53:56.417 回答
0

我发现有必要手动输入架构名称:

在此处输入图像描述

我不知道为什么这是必要的,即为什么这些值不是从 Xcode 本身继承的。但是一旦我这样做了,问题就消失了。

于 2016-11-12T02:39:39.303 回答