Xcode 12 - 没有架构可供编译(ONLY_ACTIVE_ARCH=YES,活动架构为x86_64,VALID_ARCHS=arm64e armv7s arm64 arm7)

29

自从我升级到Xcode 12后,构建时出现了这个错误:

Check dependencies
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=arm64e armv7s arm64 arm7)

我尝试了很多事情:

  • 通过pod install卸载/重新安装Pods
  • Build Active Architecture Only对于DebugRelease要么设置为No,要么设置为Yes
  • 对于Pods项目也是同样的操作

不知道该怎么办。当我想在iOS 14上启动时,会出现这个错误,但在iOS 13.7上运行良好而没有改变。

-- 编辑 --

我通过在'MyProject'和'MyProjectTest'中添加arm64 arm64e armv7 armv7s x86_64VALID_ARCHS来解决我的问题,现在可以工作了。


1
尝试在实际设备上运行,这个问题出现在模拟器上。 - M Zubair Shamshad
1
@MZubairShamshad 好的,我会测试一下,但是如何在模拟器上运行呢?我没有所有的苹果设备来进行真实测试^^ - Pentagura
你排除的架构是什么?arm64?还是x86_64? - Amin Rezaew
这个解决方案很好用 使用Xcode和Rosetta - Tabish Sohail
8个回答

51
如果您在 BuildSettings 中看不到“VALID_ARCHS”,可以点击加号按钮。点击“添加用户定义设置”,输入设置名称“VALID_ARCHS”,输入值“arm64 arm64e armv7 armv7s x86_64”。请参考以下截图:enter image description hereenter image description hereenter image description hereenter image description here

1
谢谢您的完整回答,但它不再起作用了...我要说明的是,它自始至终在真实设备上都能正常工作。唯一的问题是模拟器。 - Pentagura
@Gargantua,我也遇到了这个问题。我尝试了相同的方法,但是仍然无法在模拟器上运行我的应用程序。请帮忙解决。 - Akhil
就像我说的,我只是按照@ShaoJen Chen的指示添加了代码,它起作用了!我在"MyProject3"和"MyProject3Tests"中添加了这些行。 - Pentagura
5
我在 M1 MacBook Air 上遇到了这个问题,但在我的 iMac 上没有。 - Umeumeume
@NonUmemoto 我在我的M1上也遇到了同样的问题。我之所以有这个问题,是因为我试图解决其他问题,但在线程中他们建议使用Build legacy,当我尝试使用它时,就出现了这个问题。 - Xavier Ojeda Aguilar
显示剩余2条评论

9

从理论上讲,将调试模式从“yes”更改为“no”应该足够了。

enter image description here

但是,正如你所说,它没有起作用,这必须是因为你必须将VALID_ARCHS设置为你拥有的内容加上x86_64


我也尝试将Debug设置为“否”,但是在XCode中我没有找到“VALID_ARCHS”,我找不到它。 - Pentagura
@Gargantua 注意查看顶部是否显示所有选项或仅基本选项。 - Hola Soy Edu Feliz Navidad
这是情况,“全部”已被选中。 - Pentagura
我按照您的步骤将 x86_64 添加到 VALID_ARCHS 中,但没有用。如何在 Xcode 12.2 中解决这个问题? - Naresh

7

M1芯片的Mac电脑:通过在.app文件上点击“获取信息”,然后点击“使用Rosetta打开”来运行Xcode。


2
如何在Rosetta中运行应用程序 - sejn
@sejn 你需要先拥有 M1 或 M2 Mac 才能按照给定的答案选择该选项。如果你在 Rosetta 中运行 Xcode,那么二进制文件将在“Intel”下运行。你可以通过打开活动监视器,在“类型”列下查看是否显示“Apple”或“Intel”来进行检查。 - CyberMew

5

打开你的应用程序目标,选择“Architectures”部分的64位标准体系结构。请参见附图。

enter image description here


我没有这个选择来进行选择,我需要做什么才能添加它? - Pentagura
在架构选项的其他选项中添加“$(ARCHS_STANDARD_64_BIT)” - Ali Mehdi
你进行了干净的构建吗? - Ali Mehdi
你之前架构的取值是什么? - Ali Mehdi
标准架构 - $(ARCHS_STANDARD) - Pentagura

3

在Rosetta下运行Xcode(通过进入.app文件并点击“获取信息”,然后点击“在Rosetta下运行”)


1
如何实现它,可以添加一些屏幕截图。 - Naresh

2

-1

使用 Mac M1:右键单击 Xcode => 获取信息 => 使用 Rosetta 打开 在此输入图像描述 在此输入图像描述


-2
在 Xcode 12 中,使用 M1 芯片的 MacBook,我只需要在真实设备上运行应用程序就可以了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接