什么警告"映射架构arm64到x86_64"意思?

时间:2018-06-08 21:39:42

标签: ios swift xcode xcode10

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

  

将架构arm64映射到x86_64。确保为iOS模拟器平台正确配置了此目标的体系结构和有效体系结构构建设置。

......和:

  

将架构armv7映射到i386。确保为iOS模拟器平台正确配置了此目标的体系结构和有效体系结构构建设置。

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

然而,这些警告是什么?

12 个答案:

答案 0 :(得分:59)

转到构建设置并执行以下操作

enter image description here

答案 1 :(得分:33)

我能够通过将我的有效架构设置更改为$(ARCHS_STANDARD)使其与我的 Architectures 设置也匹配的方式来消除这些警告。

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

答案 2 :(得分:18)

您可能已为目标或其项目覆盖了VALID_ARCHS(“有效体系结构”)构建设置。这是一个构建设置,应根据您正在构建的运行目标自动获取其值。当你弄清楚这个覆盖的来源时(构建设置在被覆盖时将以粗体显示),选择它并点击删除键将其恢复为默认值。

答案 3 :(得分:4)

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

答案 4 :(得分:4)

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

$(VALID_ARCHS)
x86_64

enter image description here

答案 5 :(得分:1)

如果您在Flutter中遇到问题:

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

  2. 运行flutter clean

  3. 运行flutter build ios

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

在我的项目中出现了类似的问题以及以下三个警告: Had similar issue and the following warning in my project

我的有效建筑最初是 My **Valid Archtectures** originally were

替换:

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

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

Replacing armv7 with i386, armv7s with i386, and, arm64 with x86_64 as mentioned in the Warnings was my solution

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

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

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

希望这会有所帮助

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

在构建框架时,我看到了同样的警告。 过了一会儿,这些有效的架构值会根据设备的类型而有所不同,无论构建设置中的值如何。

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

答案 11 :(得分:-1)

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