更新到 Xcode 5.1 后,我无法再为 64 位模拟器构建我的项目,收到此错误:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
这些是我的目标构建设置:
我尝试将“构建活动架构”更改为“否”,并将“i386”添加到“有效架构”中,但不幸的是两者都不起作用。感谢您的任何建议!
你需要做的只是设置ONLY_ACTIVE_ARCH
为NO
(至少对我有用)。下面是它的截图:
据我所知(如果有问题请指出,谢谢),如果设置ONLY_ACTIVE_ARCH
为YES
,则表示 Xcode 只会为活动架构构建(指当前在 Xcode 中活动的设备)。似乎 Xcode 的默认设置设置为 Debug YES
,因此当您只想为连接到 Mac 的特殊设备构建时,它不会为其他架构构建二进制文件。
构建失败的原因可能是该项目不支持您连接的设备的架构。因此,最好的解决方案是为您的设备添加正确的架构。以下是支持的架构和设备列表:
iPhone 6
, iPhone 5s
, iPad Air
,Retina iPad Mini
iPhone 5
, iPhone 5c
,iPad 4
iPhone 3GS
, iPhone 4
, iPhone 4S
, iPod 3G/4G/5G
, iPad
, iPad 2
, iPad 3
,iPad Mini
iPhone
, iPhone 3G
,iPod 1G/2G
那么为什么“设置ONLY_ACTIVE_ARCH
为NO
”有效呢?因为设备仍然可以运行为您添加的所有架构构建的二进制文件(通过构建),但会损失一些性能。这只是一个快速的解决方案,但不是最好的。
注意:您添加的架构越多,生成的二进制文件就越大。因此,最好为您的项目选择正确的架构。;)
升级到 XCode 5.1 后,我收到了同样的错误消息。你在使用 CocoaPods 吗?如果是这样,这应该可以解决问题:
添加arm64
到目标的valid architectures
. 看起来它也将x86-64
架构添加到模拟器有效架构中。
如果您使用的是 CocoaPods,最可能的问题是因为您的 Pods 项目 Build Settings for Build Active Architecture Only设置为Yes进行调试。
解决方案很简单。将其更改为否。
同样,将您的应用程序项目更改为否。
我有类似的问题。通过在项目的构建设置中将“架构”更改为“ $(ARCHS_STANDARD_32_BIT) ”来解决它。
现在,您必须选择标准架构 (armv7, arm64) - $(ARCHS_STANDARD),因为苹果建议应用程序构建在 64 位架构上。点击:苹果文档
添加:架构:$(ARCHS_STANDARD_INCLUDING_64_BIT)
有效架构:arm64 armv7 armv7s
为了避免“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
以防万一,对于尽管遵循上述操作仍遇到问题的任何人,请检查您正在运行的模拟器是否也是受支持的模拟器。我已将我的指定为 arm7 和 arm7s,但试图在 64 位模拟器上运行该应用程序。
我的问题是 Pods 项目针对的是 OS X,尽管我的 Podfile 具有platform :ios
. 我正在使用 cocoapods 0.35.0.rc2。
要修复它,请在项目导航器中选择 Pods 项目,并检查 Pods PROJECT 节点(请注意,不是 Pods 目标)针对 iOS。也就是说,架构构建设置应该是:
$(ARCHS_STANDARD)
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
只需在有效架构中添加 arm64。我希望它对你有用。
我必须将以下内容添加i386
到. 我正在运行 Xcode 7.2 并针对 iOS 8+。我已经有了,并且在 Xcode 6.4 中工作。x86_64
Valid Architectures
armv7
armv7s
arm64
使用 xcode 5.1 在 iPad 上运行我的应用程序时,我遇到了同样的问题。它通过从“有效架构”中删除 armv7 并将“仅构建活动架构”值设置为否得到解决。这两个字段都可以在您的应用程序->目标->构建设置->架构中找到。
在架构中-有时为了支持 6.0 和 7.0,我们排除 arm64
在架构 -> 架构 - 选择标准架构 arm64 armv7 armv7s。就在下面的有效架构中使用户 arm64 armv7 armv7s 包括在内。这对我有用。
尝试在将 i386 添加到架构的同时删除所有以前的架构(即删除 ARCHS_STANDARD 设置)。这应该将活动架构更改为 i386。我在默认情况下尝试为 armv7 构建时遇到了类似的问题,但它一直在尝试为 arm64 构建。我将ARCHS_STANDARD 更改为ARCHS_STANDARD_32_BIT,这改变了所选的活动架构。
我使用@Kjuly 的答案和特定行解决了这个问题:
“构建失败的原因可能是,该项目不支持您连接的设备的架构。”
加载 Xcode 后,它会自动将我的 iPad 应用程序设置为 iPad Air
这导致了依赖性分析错误。
更改设备类型立即解决了问题:
我不知道为什么会这样,但这是一个非常快速的答案,它为我节省了很多在后台摆弄的时间,并立即让应用程序开始测试。我永远不会想到这可能是一件事,而且这么简单的事情就可以解决它,但在这种情况下它确实做到了。
在有效架构中:选择每个条目(发布、调试)并构建并按退格键。它应该工作