ChatGPT解决这个技术问题 Extra ChatGPT

警告“将架构 arm64 映射到 x86_64”是什么意思?

将我的框架迁移到 Xcode 10 beta (10L176w) 后,我开始收到如下警告:

将架构 arm64 映射到 x86_64。确保为 iOS Simulator 平台正确配置了此目标的 Architectures 和 Valid Architectures 构建设置。

... 和:

将架构 armv7 映射到 i386。确保为 iOS Simulator 平台正确配置了此目标的 Architectures 和 Valid Architectures 构建设置。

尽管有这些警告,构建和单元测试都通过了。我正在使用 Swift 4.2。

不过,这些警告是关于什么的?

我在尝试仅使用 ARCHS = $(ARCHS_STANDARD_64_BIT)VALID_ARCHS = $(inherited) x86_64 i386 构建 64 位时看到这一点

H
Hassan Taleb

转到构建设置并执行如下所示

https://i.stack.imgur.com/3X9MM.png


我确认,这对我有用 - 我不知道为什么,但这些设置在项目和目标构建设置中都以粗体突出显示。然后我如上所述删除(在两个地方!),这只是删除了粗体突出显示(显然恢复为默认值),警告消失了
澄清一下,这必须在项目和目标上都完成。
很好的答案,我建议这是解决方案。
当我删除它时,Resolved 中没有显示任何内容,我得到 There are no valid architectures to compile for because the VALID_ARCHS build setting is an empty list
似乎不再起作用了。我遇到了 Crystal 使用 Xcode 11 beta 6 报告的同样问题。@John 的回答对我有用
P
Paulo Mattos

通过将我的 Valid Architectures 设置更改为与我的 Architectures 设置匹配的 $(ARCHS_STANDARD),我能够消除这些警告。

奇怪的是,这显示为 armv7 arm64(与默认设置 armv7 armv7s arm64 相比),但手动将其设置为该值仍会导致警告。不知道这有什么意义,但我还没有注意到我的测试中有任何问题。


此设置适用于针对 iOS 和 macOS 的“通用”框架。
那是我的解决方案。我在 Project 和 Targets 中设置了有效的架构:$(ARCHS_STANDARD)。谢谢。
@CGN 你如何在项目中设置?我为 Targets 设置成功。
@Erum:请参阅下面的 2 个屏幕截图
R
Rick Ballard

您可能为目标或其项目覆盖了 VALID_ARCHS(“有效架构”)构建设置。这是一个构建设置,应该根据您正在构建的运行目标自动获取其值。当您确定此覆盖的来源(覆盖时构建设置将以粗体显示)时,选择它并按删除键将其恢复为默认值。


我也看到了这个错误。我没有覆盖设置 VALID_ARCHS。它包含用于调试和发布的 arm64
这似乎是 Xcode 10 中的一个错误。在默认设置下仍然会发生
这似乎仍然出现在 Xcode 10 的发行版中。有人对此有任何更新吗?
me2,我只是在谷歌上搜索,但无济于事
我需要转到我的所有子项目和目标并删除 VALID_ARCHS 以将其设置为默认值,然后再次清理并关闭/打开 Xcode 以使其完全为我工作
Q
Quanhua Guan

对于报告警告的目标,将“有效架构”设置更改为:

$(VALID_ARCHS)
x86_64

https://i.stack.imgur.com/D5JvK.png


肯定是最佳答案!
j
jldailey

与其他答案类似,我可以通过将 $(VALID_ARCHS)(有效架构)更改为 $(ARCHS_STANDARD) 来删除警告。从那里,我清除了所有派生数据并重新启动了 Xcode 10.0。这使得警告完全消失。从有效架构中删除所有内容只会出现不同的警告(“未找到有效架构”)。


S
ScottM

我也面临同样的问题。为了解决问题,我刚刚将构建系统从标准更改为旧版,这解决了问题。


D
Dharman

解决方案更简单:在有效架构中,只需将 arm64 替换为 x86_64。

https://i.stack.imgur.com/287iN.png

https://i.stack.imgur.com/qG2Se.png

更换:

armv7 和 i386,

带有 i386 的 armv7s,

并且,带有 x86_64 的 arm64

(如警告中所述)是我的解决方案。有效架构设置中的结果是:

https://i.stack.imgur.com/vpQF2.png

更换后,我上面的三个警告消失了。

可以在此处找到有关架构的更深入的信息:https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/

我认为 Xcode 中这个警告的表述有点混乱。


D
Deepak Ror

如果您在 Flutter 中遇到问题:

删除 Podfile、Podfile.lock、Pods 文件夹、Runner.xcworkspace、Flutter.framework。运行扑干净。运行颤振构建 ios。


j
joelliusp

https://i.stack.imgur.com/yByk4.png


在当前的 Xcode 上它不再存在这个选项了。
@lambdapool 您没有看到哪个选项?是“有效架构”/“VALID_ARCHS”吗?
J
Jonathan

我发现解决此问题的最简单方法是在我的文本编辑器中打开项目,然后查找并删除所有 VALID_ARCHS 行。


g
grape100

我在构建框架时看到了同样的警告。一段时间后注意到这些有效的架构值会根据设备类型而有所不同,而不管构建设置中的值如何。

Real devices-> arm64 
Simulator devices ->x86-64

B
BoP

转到目标>构建设置>架构>排除架构(x84_64)..它用于运行真实设备并使用(arm64)为(任何SDK)运行模拟器。

如果选择排除架构 > 调试和发布

https://i.stack.imgur.com/BPcrM.png

https://i.stack.imgur.com/HxuFm.png

要从根本上从根本上解决这个问题,您必须选择(Any IOS Simulator SDK)而不是(Any SDK)并设置值(arm64)。在这种情况下,您可以一起构建和运行,而无需更改每个值时间。

https://i.stack.imgur.com/k10Mf.png


B
Brody

如果您的 [build Settings] 是 armv7 armv7s arm64,请删除 armv7s。警告将被取消。


这不仅仅是关于 armv7,这是一个普遍问题,您的建议不具有前瞻性