Xcode 15 模拟器使用 x86_64 编译

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

更新到 Xcode 15 后,我无法再在模拟器上运行我的代码。目前我收到错误

building for 'iOS-simulator', but linking in object file (/{project path}/libs/IceLink/libFMIceLinkOpus.a[x86_64][15](bands.o)) built for 'iOS'

将我的 Mac 升级到硅胶芯片时,我确实遇到了类似的问题,我必须将其插入到我的 Podfile 中

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            # Needed for building for simulator on M1 Macs
            config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
        end
    end
end

在网上,

arm64
架构也存在类似的错误,其中包括更新构建设置中的排除架构。我想我也会做同样的事
x86_64

这样做之后,当我尝试在模拟器上运行代码时收到另一个错误

Command PhaseScriptExecution failed with a nonzero exit code

这是正确的道路吗?还是我应该寻找另一条道路?我不确定在排除架构中添加

x86_64
是否只会让我在应该采取另一条路线时陷入兔子洞。

ios xcode cocoapods xcode-build-settings
1个回答
0
投票

您担心自己正在掉入兔子洞,这是正确的。 “排除的架构”和 ONLY_ACTIVE_ARCH 设置是碰巧工作了一段时间的黑客手段。他们从未解决过这个问题。

根本问题是该架构不是区分设备和模拟器的有效方法。很长一段时间以来,人们基于这个假设构建了“脂肪”(lipo)库,并且它确实有效,但从未得到真正的支持。然后他们添加了各种配置技巧来尝试保持这种方法的有效性。公平地说,这就是我们所拥有的一切,因为 Apple 没有支持的解决方案。

Apple 终于有了一个完全受支持且运行良好的解决方案。您的 libFMIceLinkOpus 库需要重新打包为 xcframework,以便它可以同时支持设备和模拟器。具体如何操作取决于您的库当前的构建和打包方式。

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