更新到Xcode 5.1后,我无法再为64位模拟器构建项目,收到此错误:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
这些是我的目标构建设置:
我尝试将“构建活动架构”更改为“否”,并将“i386”添加到“有效架构”,但遗憾的是两者都没有工作。 谢谢你的任何建议!
答案 0 :(得分:182)
您需要做的只是将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
,{{1 }} iPad Mini
,iPhone
,iPhone 3G
为什么“将iPod 1G/2G
设置为ONLY_ACTIVE_ARCH
”有效?因为设备仍然可以运行为您添加的所有体系结构构建的二进制文件(传递构建),但会丢失一些性能。这只是一个快速的解决方案,但不是最好的。
注意:您添加的架构越多,生成的二进制文件就越大。因此,为您的项目选择正确的架构是件好事。 ;)
答案 1 :(得分:102)
升级到XCode 5.1后,我收到了同样的错误消息。你在使用CocoaPods吗?如果是这样,这应解决问题:
答案 2 :(得分:28)
将arm64
添加到目标的valid architectures
。看起来它也将x86-64
架构添加到模拟器有效架构中。
答案 3 :(得分:27)
如果您使用的是CocoaPods,最可能的问题是因为您的Pods项目仅构建活动架构的构建设置被设置为是以进行调试。
解决方案很简单。将其更改为否。
同样,更改为应用项目的否。
答案 4 :(得分:12)
我有类似的问题。通过在项目的构建设置中将“架构”更改为“ $(ARCHS_STANDARD_32_BIT)”来解决问题。
现在,您必须选择标准体系结构(armv7,arm64) - $(ARCHS_STANDARD),因为Apple建议在64位体系结构上构建应用程序。点击:Apple document
答案 5 :(得分:10)
添加: 架构:$(ARCHS_STANDARD_INCLUDING_64_BIT)
有效的架构:arm64 armv7 armv7s
答案 6 :(得分:5)
以防万一,尽管仍然遇到上述问题仍然遇到问题,请检查您运行的模拟器是否也受支持。我有我的指定arm7和arm7s但是试图在64位模拟器上运行应用程序。
答案 7 :(得分:5)
避免安装" pod安装"每次运行时重置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
答案 8 :(得分:3)
只需在有效的架构中添加arm64。我希望它能为您服务。
答案 9 :(得分:3)
我的问题是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
答案 10 :(得分:3)
我必须将以下i386
和x86_64
添加到Valid Architectures
。我正在运行Xcode 7.2并定位到iOS 8+。我已经在那里armv7
,armv7s
和arm64
,这在Xcode 6.4中有效。
答案 11 :(得分:2)
I arrived at this question due to a problem with command line build for simulator in Xcode 7.2. In case anyone else gets here with the same issue, I will share the solution I found:
Apparently there is a bug in Xcode 7.2导致xcodebuild
在尝试构建模拟器时失败时整个页面在iframe中加载。解决方案是指定选项“-destination”,例如:
xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' build
<强>更新强>
上面的示例命令将构建一个二进制文件,仅包含iPhone 6的图形。如果二进制文件在其他模拟器上运行,则iPhone 6图形将缩放到平台。包含所有平台的所有图形的better workaround是指定参数PLATFORM_NAME=iphonesimulator
,例如:
xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -arch i386 PLATFORM_NAME=iphonesimulator build
答案 12 :(得分:1)
我在使用xcode 5.1在iPad上运行我的应用时遇到了同样的问题。它通过从“有效架构”中删除armv7并将“仅构建活动架构”值设置为否来解决。这些字段都可以在您的app-&gt; targets-&gt; build settings-&gt;架构中找到。
答案 13 :(得分:0)
在acrhiecture中 - 有时支持6.0和7.0,我们排除arm64
在架构中 - &gt; acrchitecture - 选择标准架构arm64 armv7 armv7s。 在有效的架构下面,包括用户arm64 armv7 armv7s。 这对我有用。
答案 14 :(得分:0)
尝试删除所有以前的体系结构(即删除ARCHS_STANDARD设置),同时将i386添加到体系结构中。这应该将活动架构更改为i386。我在默认情况下尝试构建armv7时遇到了类似的问题,但它一直在尝试为arm64构建。我将ARCHS_STANDARD更改为ARCHS_STANDARD_32_BIT,这改变了所选的活动架构。
答案 15 :(得分:0)
我使用@Kjuly的答案和具体的一行解决了这个问题:
&#34;无法构建的原因可能是,项目不支持您连接的设备的架构。&#34;
加载Xcode后,它会自动将我的iPad应用程序设置为iPad Air
这导致了依赖性分析错误。
立即更改设备类型解决了问题:
我不知道为什么会这样,但这是一个非常快速的答案,它让我在后台摆弄了很多东西,并立即让应用程序正在测试。我永远不会想到这可能是一件事情,而这么简单的东西会修复它,但在这种情况下确实如此。
答案 16 :(得分:0)
答案 17 :(得分:0)
在有效体系结构中:选择每个条目(发布,调试)并构建并按退格键。它应该工作