警告“将架构 arm64 映射到 x86_64”是啥意思?
Posted
技术标签:
【中文标题】警告“将架构 arm64 映射到 x86_64”是啥意思?【英文标题】:What does warning "Mapping architecture arm64 to x86_64" mean?警告“将架构 arm64 映射到 x86_64”是什么意思? 【发布时间】:2018-11-18 23:48:15 【问题描述】:将我的框架迁移到 Xcode 10 beta (10L176w) 后,我开始收到如下警告:
将架构 arm64 映射到 x86_64。确保为 ios 模拟器平台正确配置了此目标的 Architectures 和 Valid Architectures 构建设置。
...和:
将架构 armv7 映射到 i386。确保为 iOS 模拟器平台正确配置了此目标的 Architectures 和 Valid Architectures 构建设置。
尽管有这些警告,但构建和单元测试都通过了。我正在使用 Swift 4.2。
不过,这些警告是关于什么的?
【问题讨论】:
我在尝试仅使用ARCHS = $(ARCHS_STANDARD_64_BIT)
和 VALID_ARCHS = $(inherited) x86_64 i386
构建 64 位时看到此问题
【参考方案1】:
您可能已为目标或其项目覆盖了 VALID_ARCHS(“有效架构”)构建设置。这是一个构建设置,应该根据您正在构建的运行目标自动获取其值。当你弄清楚这个覆盖来自哪里(覆盖时构建设置将显示为粗体),选择它并按删除键将其恢复为默认值。
【讨论】:
我也看到了这个错误。我没有覆盖设置VALID_ARCHS
。它包含用于调试和发布的arm64
。
这似乎是 Xcode 10 中的一个错误。在默认设置下仍然会发生
这个但似乎仍然出现在 Xcode 10 的发行版中。有人对此有任何更新吗?
me2,我只是在谷歌上搜索,但无济于事
我需要转到我的所有子项目和目标并删除 VALID_ARCHS
以将其设置为默认值,然后再次清理并关闭/打开 Xcode 以使其完全为我工作【参考方案2】:
我可以通过将我的 Valid Architectures 设置更改为与我的 Architectures 设置匹配的 $(ARCHS_STANDARD)
来消除这些警告。
奇怪的是,这显示为 armv7 arm64
(与默认设置 armv7 armv7s arm64
相比),但手动将其设置为该值仍会导致警告。不知道这有什么意义,但我在测试中还没有发现任何问题。
【讨论】:
此设置对我来说适用于针对 iOS 和 macOS 的“通用”框架。 这是我的解决方案。我在 Project 和 Targets 中设置了有效的架构:$(ARCHS_STANDARD)。谢谢。 @CGN 你如何在项目中设置?我为 Targets 设置成功。 @Erum:见下面的 2 张截图【参考方案3】:转到构建设置并按照如下所示进行操作
【讨论】:
我确认,这对我有用 - 我不知道为什么,但这些设置在项目和目标构建设置中都以粗体突出显示。然后我如上所述删除了(在两个地方!),这只是删除了粗体突出显示(显然恢复为默认值),警告消失了 澄清一下,必须在项目和目标上都这样做。 不错的答案,我建议将其作为解决方案。 当我删除它时,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 的回答对我有用【参考方案4】:
如果您的 [build Settings] 是 armv7 armv7s arm64,请删除 armv7s。警告将被取消。
【讨论】:
这不仅仅是关于 armv7,这是一个普遍问题,您的建议不具有前瞻性【参考方案5】:与其他答案类似,我可以通过将 $(VALID_ARCHS)
(有效架构)更改为 $(ARCHS_STANDARD)
来删除警告。从那里,我清除了所有派生数据并重新启动了 Xcode 10.0。这使得警告完全消失。从有效架构中删除所有内容只会出现不同的警告(“未找到有效架构”)。
【讨论】:
【参考方案6】:当我尝试为 iOS 和 Mac OS 编译代码时,我看到了这个警告。 我首先按照 Hassan Taleb 在他的回答中建议的方法解决了这个问题:清除架构,以便只有有效的 iPhone 架构在其中。最后,为了保持能够为 Mac OS 构建,将鼠标悬停在 Valid Architectures 上,以便出现一个加号按钮。单击它,然后您可以根据需要为不同平台添加单独的设置,包括不同的 CPU 架构。对于 macOS SDK,如果我愿意,我可以将我的 Valid Architectures 设置为 x86_64。
【讨论】:
在当前 Xcode 上不再存在这个选项。 @lambdapool 您没有看到哪个选项?是“有效架构”/“VALID_ARCHS”吗?【参考方案7】:对于报告警告的目标,将“有效架构”设置更改为:
$(VALID_ARCHS)
x86_64
【讨论】:
肯定是最佳答案!【参考方案8】:解决方案更简单:在有效架构中只需将 arm64 替换为 x86_64。
在我的项目中有类似的问题和以下三个警告:
我的有效架构最初是
替换:
armv7 和 i386, 带有 i386 的 armv7s, 以及带有 x86_64 的 arm64(如警告中所述)是我的解决方案。 有效架构设置的结果是:
替换后我上面的三个警告消失了。
可以在此处找到有关架构的更多深入信息: https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/
我认为这个警告在 Xcode 中的表述有点混乱。
【讨论】:
【参考方案9】:如果您在 Flutter 中遇到问题:
删除 播客文件, Podfile.lock, 豆荚文件夹, Runner.xcworkspace、Flutter.framework。
运行flutter clean
。
flutter build ios
。
【讨论】:
【参考方案10】:我发现解决此问题的最简单方法是在我的文本编辑器中打开项目,然后查找并删除所有 VALID_ARCHS
行。
【讨论】:
【参考方案11】:我也面临同样的问题。为了解决问题,我刚刚将构建系统从 Standard 更改为 Legacy,从而解决了问题。
【讨论】:
【参考方案12】:我在构建框架时看到了同样的警告。 一段时间后注意到这些有效的架构值会根据设备类型而有所不同,而不管构建设置中的值如何。
Real devices-> arm64
Simulator devices ->x86-64
【讨论】:
以上是关于警告“将架构 arm64 映射到 x86_64”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章