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

问题描述 投票:0回答:14

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

将架构arm64映射到x86_64。确保针对 iOS 模拟器平台正确配置了该目标的架构和有效架构构建设置。

...并且:

将架构armv7映射到i386。确保针对 iOS 模拟器平台正确配置了该目标的架构和有效架构构建设置。

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

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

ios swift xcode xcode10
14个回答
104
投票

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


71
投票

我可以通过将我的 Valid Architectures 设置更改为

$(ARCHS_STANDARD)
来消除这些警告,这也与我的 Architectures 设置相匹配。

奇怪的是,这显示为

armv7 arm64
(与默认设置
armv7 armv7s arm64
相比),但手动将其设置为该值仍然会导致警告。不确定这有什么意义,但我在测试中还没有发现任何问题。


27
投票

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


18
投票

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

$(VALID_ARCHS)
x86_64


8
投票

与其他答案类似,我可以通过将

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


3
投票

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


2
投票

解决方案更简单:在Valid Architectures中只需将arm64替换为x86_64

我的项目中也有类似的问题和以下三个警告:

我的有效架构最初是

更换:

  • armv7 与 i386,
  • armv7s 与 i386,
  • 并且,arm64 与 x86_64

(如警告中所述)是我的解决方案。 Valid Architecture 设置的结果是:

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

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

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


2
投票

如果您在 Flutter 中遇到问题:

  1. 删除 播客文件, Podfile.lock, Pod 文件夹, 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。


0
投票

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

VALID_ARCHS
行。


0
投票

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

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

0
投票

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

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

1

2

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

3


0
投票

斯威夫特5+

post_install do |installer_representation|
installer_representation.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
        config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
        config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
    end
end

结束


-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.