更新到Xcode 5.1后,我无法再为64位模拟器构建我的项目,出现以下错误:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
这是我的目标构建设置:
![Xcode目标构建设置](https://istack.dev59.com/NFX1J.webp)
更新到Xcode 5.1后,我无法再为64位模拟器构建我的项目,出现以下错误:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=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项目构建设置中仅构建活动架构在调试模式下设置为Yes。
解决方案很简单。将其更改为No。
同样地,将应用程序项目更改为No。
我曾遇到类似问题。通过在项目的构建设置中将"Architecture"更改为"$(ARCHS_STANDARD_32_BIT)",我解决了该问题。
现在,你需要选择标准体系结构(armv7、arm64) - $(ARCHS_STANDARD),因为苹果公司建议应用程序构建在64位体系结构上。点击:苹果文档
$(ARCHS_STANDARD_INCLUDING_64_BIT)
? - Hemang$(ARCHS_STANDARD_32_BIT)
还是 $(ARCHS_STANDARD_INCLUDING_64_BIT)
? - Hemang添加: 架构: $(ARCHS_STANDARD_INCLUDING_64_BIT)
有效的架构: arm64 armv7 armv7s
# 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位模拟器上运行应用程序。
post_install do | installer |
installer.project.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
end
end
我需要将以下内容添加到有效架构
中:i386
和x86_64
。 我正在运行Xcode 7.2,并针对iOS 8+进行开发。 在Xcode 6.4中,我已经将armv7
、armv7s
和arm64
添加进去了,那时是可以工作的。