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


95

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

将体系结构arm64映射到x86_64。确保针对iOS Simulator平台正确配置了此目标的“体系结构”和“有效体系结构”构建设置。

...和:

将架构armv7映射到i386。确保针对iOS Simulator平台正确配置了此目标的“体系结构”和“有效体系结构”构建设置。

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

尽管如此,这些警告是关于什么的?


我在尝试仅使用ARCHS = $(ARCHS_STANDARD_64_BIT)和来构建64位时进行设置时看到了这一点VALID_ARCHS = $(inherited) x86_64 i386
Kdawgwilk

Answers:


101

转到“构建设置”并执行如下所示的操作

在此处输入图片说明


5
我确认,这对我有用-我不知道为什么,但是这些设置在项目和目标构建设置上均以粗体突出显示。然后,我如上所述删除了(在两个地方!),这只是删除了粗体突出显示(显然已恢复为默认值),并且警告也消失了
Nick Entin

23
只是为了澄清,这必须在项目和目标上都进行。
palmi

2
好的答案,我建议将此作为解决方案。
Heider Sati

8
当我删除它时,“已解决”中没有任何内容,我得到了There are no valid architectures to compile for because the VALID_ARCHS build setting is an empty list
Crystal

2
似乎不再起作用。我遇到了相同的问题,Crystal正在使用Xcode 11 beta 6报告该问题。@ John的答案反而对我
有用

69

通过将“有效体系结构”设置更改为$(ARCHS_STANDARD)也与“我的体系结构”设置相匹配的方式,我能够使这些警告消失

奇怪的是,它显示为armv7 arm64(与的默认设置相比armv7 armv7s arm64),但是手动将其设置为该值仍会引起警告。不知道这样做的意义是什么,但是我尚未在测试中发现任何问题。


2
此设置对我来说适用于针对iOS和macOS的“通用”框架。
约翰(John)

1
那是我的解决方案。我设置了有效的体系结构:Project和Targets中的$(ARCHS_STANDARD)。谢谢。
CGN

2
@CGN您如何在Project中设置?我为目标成功设置。
Erum

@Erum:请参阅下面的2个屏幕截图
CGN

27

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


1
我也看到这个错误。我没有覆盖设置VALID_ARCHS。它包含arm64调试和发布。
funkenstrahlen

10
这似乎是Xcode 10中的错误。默认设置仍然会发生
Kdawgwilk

5
但是,似乎仍与Xcode 10的发行版一起出现。有人对此有任何更新吗?
plivesey

1
me2,我只是在谷歌上搜索,但无济于事
MegaManX

2
我需要进入所有子项目和目标并删除VALID_ARCHS以将其设置为默认值,然后再次清理并关闭/打开Xcode,以使其对我完全起作用
manman


8

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


1

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

在我的项目中出现了类似的问题以及以下三个警告: 我的项目中出现了类似的问题和以下警告

我的有效建筑最初是 我的“有效建筑”最初是

更换:

  • 使用i386的armv7,
  • 使用i386的armv7s,
  • 并且,arm64与x86_64

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

如警告中所述,用i386替换armv7,用i386替换armv7s,以及用x86_64替换arm64是我的解决方案

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

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

我认为在Xcode中此警告的表达有点混乱。


1

如果您在Flutter中遇到问题:

  1. 删除Podfile,Podfile.lock,Pods文件夹,Runner.xcworkspace,Flutter.framework。

  2. 运行flutter clean

  3. 运行flutter build ios

0

当我尝试为iOS和Mac OS编译代码时,我看到此警告。通过首先执行哈桑·塔莱布(Hassan Taleb)在他的回答中建议的方法,我能够解决此问题:清除架构,以便仅使用有效的iPhone架构。最后,为了保持能够针对Mac OS进行构建,请将鼠标悬停在“有效体系结构”上,以便出现加号按钮。单击该按钮,然后可以根据需要为不同平台添加单独的设置,包括不同的CPU体系结构。对于macOS SDK,我可以根据需要将有效架构设置为x86_64。对于macOS SDK,如果需要,我可以将有效架构设置为x86_64


在当前Xcode上,该选项不再存在。
JBarros35

@lambdapool您没有看到哪个选项?是“有效架构” /“ VALID_ARCHS”吗?
joelliusp

0

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


0

我也面临着同样的问题。为了解决问题,我刚刚将构建系统从标准更改为传统,从而解决了该问题。


0

构建框架时,我看到了同样的警告。过了一会儿,这些有效的体系结构值会根据设备的类型而变化,而不管构建设置中的值如何。

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

-2

如果您的[内部设置]是armv7 armv7s arm64,请删除armv7s。警告将被取消。


这不仅仅是关于armv7的问题,这是一个普遍的问题,您的建议并不具有前瞻性
amok
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.