更新到Xcode 5.1之后,我无法再为64位模拟器构建项目,收到此错误:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
这些是我的目标构建设置:
我尝试将“构建活动体系结构”更改为“否”,并在“有效体系结构”中添加“ i386”,但不幸的是,这两个方法均无效。感谢您的任何建议!
更新到Xcode 5.1之后,我无法再为64位模拟器构建项目,收到此错误:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
这些是我的目标构建设置:
我尝试将“构建活动体系结构”更改为“否”,并在“有效体系结构”中添加“ i386”,但不幸的是,这两个方法均无效。感谢您的任何建议!
Answers:
升级到XCode 5.1后,我有相同的错误消息。您正在使用CocoaPods吗?如果是这样,这应该可以解决问题:
您需要做的只是将其设置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
”有效?因为设备仍然可以运行为您添加的所有体系结构构建的二进制文件(通过构建),但是会损失一些性能。这只是一个快速的解决方案,但不是最好的。
注意:添加的架构越多,生成的二进制文件越大。因此,为您的项目选择正确的体系结构是很好的。;)
我有类似的问题。通过在“项目的构建设置”中将“架构”更改为“ $(ARCHS_STANDARD_32_BIT) ” 来解决该问题。
现在,您必须选择标准体系结构(armv7,arm64)-$(ARCHS_STANDARD),因为苹果建议将应用程序构建为64位体系结构。点击:苹果文件
$(ARCHS_STANDARD_INCLUDING_64_BIT)
?
$(ARCHS_STANDARD_32_BIT)
还是$(ARCHS_STANDARD_INCLUDING_64_BIT)
?
添加:体系结构:$(ARCHS_STANDARD_INCLUDING_64_BIT)
有效架构:arm64 armv7 armv7s
为避免每次运行时“ 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
我的问题是,尽管我的Podfile具有,但Pods项目却以OS X为目标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
由于Xcode 7.2中用于模拟器的命令行构建存在问题,因此我遇到了这个问题。万一其他人遇到同样的问题,我将分享我发现的解决方案:
显然,Xcode 7.2中存在一个错误,该错误xcodebuild
会在尝试为模拟器构建时导致失败。解决方案是指定选项“ -destination”,例如:
xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' build
更新资料
上面的示例命令将构建仅包含iPhone 6图形的二进制文件。如果二进制文件在其他模拟器上运行,则iPhone 6图形将缩放到该平台。包含所有平台的所有图形的一个更好的解决方法是指定参数PLATFORM_NAME=iphonesimulator
,例如:
xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -arch i386 PLATFORM_NAME=iphonesimulator build
我使用@Kjuly的答案和特定行解决了这个问题:
“构建失败的原因可能是该项目不支持您所连接设备的体系结构。”
加载Xcode后,它会自动将我的iPad应用设置为iPad Air
这导致依赖性分析错误。
更改设备类型可立即解决问题:
我不知道为什么会这样,但这是一个非常快速的答案,这使我节省了很多在后台的麻烦,并立即使该应用程序可以进行测试。我从没想过这可能是一件事,那么简单的事情就能解决它,但在这种情况下,它确实可以解决。
在“有效的体系结构”中:选择每个条目(发布,调试),然后进行构建并按Backspace键。它应该工作