繁体   English   中英

Xcode 5.1 - 没有要编译的体系结构(ONLY_ACTIVE_ARCH = YES,活动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)

更新到Xcode 5.1后,我无法再为64位模拟器构建项目,收到此错误:

 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).

这些是我的目标构建设置:

Xcode目标构建设置

我尝试将“Build Active Architecture”更改为No,并将“i386”添加到“Valid Architectures”,但遗憾的是两者都没有。 谢谢你的任何建议!

你需要做的只是将ONLY_ACTIVE_ARCH设置为NO (至少对我ONLY_ACTIVE_ARCH )。 下面是它的截图:


编辑:

据我所知( 如果出现问题,请指出,谢谢 ),如果将ONLY_ACTIVE_ARCH设置为YES ,则表示Xcode仅针对活动架构(指当前在Xcode中处于活动状态的设备)构建。 似乎Xcode的默认设置是将Debug设置为YES ,因此当您只想为连接到Mac的特殊设备构建时,它不会为其他体系结构构建二进制文件。

无法构建的原因可能是,该项目不支持您连接的设备的体系结构。 因此,最佳解决方案是为您的设备添加正确的架构。 以下是支持的体系结构和设备列表:

  • ARMv8 / ARM64: iPhone 6iPhone 5siPad AirRetina iPad Mini
  • ARMv7s: iPhone 5iPhone 5ciPad 4
  • ARMv7: iPhone 3GSiPhone 4iPhone 4SiPod 3G/4G/5GiPadiPad 2iPad 3iPad Mini
  • ARMv6: iPhoneiPhone 3GiPod 1G/2G

那么为什么“将ONLY_ACTIVE_ARCH设置为NO有效呢? 因为设备仍然可以运行为您添加的所有体系结构构建的二进制文件(传递构建),但会丢失一些性能。 这只是一个快速的解决方案,但不是最好的。


注意 :您添加的架构越多,生成的二进制文件就越大。 因此,为您的项目选择正确的架构是件好事。 ;)

升级到XCode 5.1后,我收到了同样的错误消息。 你在使用CocoaPods吗? 如果是这样,这应该解决问题:

  1. 从Xcode左窗格中的工作区中删除“Pods”项目并关闭Xcode。
  2. 从命令行运行“pod install”以重新创建“Pods”项目。
  3. 重新打开Xcode并确保“Pods”项目和您自己的项目的构建设置中的“Build Active Architecture Only”设置为“No”。
  4. 清洁和建造。

arm64添加到目标的valid architectures 看起来它也将x86-64架构添加到模拟器有效架构中。

如果您正在使用CocoaPods,最可能的问题是因为您的Pods项目Build Build Architecture for Build Active设置为Yes for Debug。

解决方案很简单。 将其更改为

同样,对您的应用程序项目更改为“ ”。

我有类似的问题。 通过在项目的构建设置中将 “架构”更改为“ $(ARCHS_STANDARD_32_BIT) ”来解决它。

现在,您必须选择标准体系结构(armv7,arm64) - $(ARCHS_STANDARD),因为Apple建议在64位体系结构上构建应用程序。 单击: Apple文档

添加:架构:$(ARCHS_STANDARD_INCLUDING_64_BIT)

有效的架构:arm64 armv7 armv7s

为了以防万一,尽管仍然遇到上述问题仍然遇到问题,请检查您运行的模拟器是否也是受支持的模拟器。 我有我的指定arm7和arm7s但是试图在64位模拟器上运行应用程序。

为避免每次运行时“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

只需在有效的架构中添加arm64。我希望它能为您服务。

我的问题是Pods项目的目标是OS X,尽管我的Podfile有platform :ios 我正在使用cocoapods 0.35.0.rc2。

要修复它,请在项目导航器中选择Pods项目,并检查Pods PROJECT节点(请注意,而不是Pods目标)是否针对iOS。 也就是说,架构构建设置应该是:

  • 架构: $(ARCHS_STANDARD)
  • 基础SDK: 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

我必须将以下i386x86_64添加到Valid Architectures 我正在运行Xcode 7.2并以iOS 8+为目标。 我已经在那里安装了armv7armv7sarm64 ,这在Xcode 6.4中有效。

我在使用xcode 5.1在iPad上运行我的应用时遇到了同样的问题。 它通过从“有效架构”中删除armv7并将“仅构建活动架构”值设置为否来解决。这些字段都可以在app-> targets-> build settings->架构中找到。

由于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

尝试删除所有以前的体系结构(即删除ARCHS_STANDARD设置),同时将i386添加到体系结构中。 这应该将活动架构更改为i386。 我在默认情况下尝试构建armv7时遇到了类似的问题,但它一直在尝试为arm64构建。 我将ARCHS_STANDARD更改为ARCHS_STANDARD_32_BIT,这改变了所选的活动架构。

在acrhiecture - 有时支持6.0和7.0,我们排除arm64

在架构中 - > acrchitecture - 选择标准架构arm64 armv7 armv7s。 在有效的架构下面,包括用户arm64 armv7 armv7s。 这对我有用。

我用@ Kjuly的答案和具体的一行解决了这个问题:

“无法构建的原因可能是,该项目不支持所连接设备的架构。”

加载Xcode后,它会自动将我的iPad应用程序设置为iPad Air

在此输入图像描述

这导致了依赖性分析错误。

更改设备类型立即解决了问题:

在此输入图像描述

我不知道为什么会这样,但这是一个非常快速的答案,它让我在后台摆弄了很多东西,并立即让应用程序正在测试。 我永远不会想到这可能是一件事,而这么简单的东西会解决它,但在这种情况下确实如此。

我发现有必要手工输入架构名称:

在此输入图像描述

我不知道为什么这是必要的,即为什么这些值不是从Xcode本身继承的。 但是一旦我这样做,问题就消失了。

在有效体系结构中:选择每个条目(发布,调试)并构建并按退格键。 它应该工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM