Xcode 5.1 - No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386)
在Xcode 5.1中出现了一个问题:No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386)。这篇文章将为您解释出现这个问题的原因并提供解决方法。
问题的原因是在目标的有效架构(valid architectures)中未添加arm64。看起来,这也会将x86-64架构添加到模拟器的有效架构中。
解决方法是将arm64添加到目标的有效架构中。以下是解决此问题的步骤:
1. 在Xcode中打开您的项目。
2. 在项目导航器中选择您的目标。
3. 在右侧选择“Build Settings”选项卡。
4. 在“Architectures”部分下的“Valid Architectures”一栏中添加arm64。
5. 确保“Build Active Architecture Only”设置为NO。
完成以上步骤后,重新编译您的项目,该问题应该就可以解决了。
希望这篇文章能帮助您理解并解决Xcode 5.1中出现的No architectures to compile for问题。如果您遇到任何其他问题,请随时向我们提问。
问题的原因是项目不支持连接的设备的架构。解决方法是将ONLY_ACTIVE_ARCH
设置为NO
,然后添加正确的架构。
在Xcode中,ONLY_ACTIVE_ARCH
设置为YES
意味着只为当前活动的架构构建。默认情况下,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_ARCH
设置为NO
有效呢?因为设备仍然可以运行为所有添加的架构构建的二进制文件(通过构建),但会损失一些性能。这只是一个快速解决方案,而不是最佳解决方案。
需要注意的是,添加的架构越多,生成的二进制文件越大。因此,选择适合项目的正确架构是重要的。
希望这篇文章对你有帮助,如果你还不清楚如何下载所需的架构,请查阅相关文档或参考其他资源。