将我的框架迁移到 Xcode 10 beta (10L176w) 后,我开始收到如下警告:
将架构arm64映射到x86_64。确保针对 iOS 模拟器平台正确配置了该目标的架构和有效架构构建设置。
...并且:
将架构armv7映射到i386。确保针对 iOS 模拟器平台正确配置了该目标的架构和有效架构构建设置。
尽管有这些警告,构建和单元测试都顺利通过。我正在使用 Swift 4.2。
不过,这些警告是关于什么的?
我可以通过将我的 Valid Architectures 设置更改为
$(ARCHS_STANDARD)
来消除这些警告,这也与我的 Architectures 设置相匹配。
奇怪的是,这显示为
armv7 arm64
(与默认设置 armv7 armv7s arm64
相比),但手动将其设置为该值仍然会导致警告。不确定这有什么意义,但我在测试中还没有发现任何问题。
您可能已覆盖目标或其项目的 VALID_ARCHS(“有效架构”)构建设置。这是一个构建设置,应该根据您要构建的运行目标自动获取其值。当您弄清楚此覆盖来自何处(覆盖时构建设置将以粗体显示)时,选择它并按删除键将其恢复为默认值。
与其他答案类似,我可以通过将
$(VALID_ARCHS)
(有效架构)更改为 $(ARCHS_STANDARD)
来删除警告。从那里,我清除了所有派生数据并重新启动了 Xcode 10.0。这使得警告完全消失。从有效架构中删除所有内容只会出现不同的警告(“未找到有效架构”)。
我也面临着同样的问题。为了解决这个问题,我刚刚将构建系统从标准更改为旧版,这解决了问题。
解决方案更简单:在Valid Architectures中只需将arm64替换为x86_64。
更换:
(如警告中所述)是我的解决方案。 Valid Architecture 设置的结果是:
更换后我上面的三个警告消失了。
有关架构的更多深入信息可以在这里找到: https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/
我认为Xcode中这个警告的表述有点混乱。
如果您在 Flutter 中遇到问题:
删除 播客文件, Podfile.lock, Pod 文件夹, Runner.xcworkspace、Flutter.framework.
运行
flutter clean
。flutter build ios
。我发现解决此问题的最简单方法是在文本编辑器中打开项目,然后查找并删除所有
VALID_ARCHS
行。
我在构建框架时看到了同样的警告。 一段时间后,我们注意到这些有效的架构值会根据设备类型的不同而变化,无论构建设置中的值如何。
Real devices-> arm64
Simulator devices ->x86-64
转到目标>构建设置>架构>排除的架构 (x84_64) .. 它用于运行真实设备并使用 (arm64) 运行模拟器(任何 SDK)。
如果选择排除架构 > 调试和发布
要从根本上虚拟地解决这个问题,你必须选择(Any IOS Simulator SDK)而不是(Any SDK)并设置值(arm64)在这种情况下,你可以一起构建和运行,而无需更改值每次。
斯威夫特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
结束
如果您的[build Settings]是armv7 armv7s arm64,请删除armv7s。警告将被取消。