Xcode 15 项目编译报错:Could not find module xxx for target x86_64-apple-ios-simulator found arm64-apple-ios-simulator

Error

0x00 前言

自从换了 M 芯片的 MacBook Pro,以前在旧款 Intel 芯片的 MacBook Pro 上创建的项目,总是会出现编译报错的情况,相当得烦人,但是 M 芯片以后肯定是发展趋势。

以前出现过旧项目运行起来,修改了一些代码之后,直接重新运行(不杀死模拟器上正在运行的 App 的情况下),会出现模拟器黑屏,Xcode 运行不上去的问题。我自己琢磨出来的解决办法是:在 M 芯片的 MacBook Pro 上新建一个项目,然后把旧项目转移过去,发现不会出现再次运行的黑屏情况。

好了,说了一个题外话,接下来讲讲本文的主要问题,出现这个情况的时候,经过我的排除,发现是在用 CocoaPods 集成了 Bugly 之后,编译报错的,去掉 Bugly 的 Pod,就不会有这个问题,并且是运行到模拟器上才会出现,运行到真机并不会有这个问题,但是有时候并不想只能在真机上测试,所以在一段时间之后,打算解决下这个问题。

当然,其他的一些第三方库也会导致这个问题。

0x01 解决办法

修改项目的 ProjectTargets 里面的 Build Settings 中的 Excluded Architectures,展开之后,在 DebugRelease 上各添加一个子项,然后选择 Any iOS Simulator SDK,设置值为 arm64,如下图所示:

Build Settings

两个地方都需要这么改。

然后在 Podfile 里面添加如下代码:

1
2
3
4
5
6
7
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end
end
end

然后在终端里面,cd 到项目根目录,运行一下 pod install,就可以编译并运行到模拟器成功了。

网上看到说,如果需要运行到真机,需要将上面的修改都恢复之后才行,但是在我按上面的修改运行到模拟器成功之后,再运行到真机,发现也还是可以运行的,说明并不需要恢复。

原因是其实我们修改的都是针对模拟器的,比如修改的 Build Settings 中的 Any iOS Simulator SDKPodfile 中的 sdk=iphonesimulator*,都是针对模拟器的,所以应该是不需要恢复的。