Xcode执行clean build后所有import报no such module错误(M1设备)
M1芯片Xcode无Rosetta运行时报no such module问题解决方案
该问题根因为M1芯片原生运行Xcode时,模拟器默认编译arm64架构,但部分第三方依赖暂未提供模拟器arm64切片,因此会报模块找不到错误;Rosetta模式下Xcode按x86_64架构编译,和Intel设备编译逻辑一致,所以运行正常。可按以下步骤修复:
- 打开项目主target以及Pods项目的所有target,找到
Build Settings下的Excluded Architectures选项,为Any iOS Simulator SDK条件添加值arm64,主项目和Pods项目所有target均需添加该配置。 - 打开项目根目录的Podfile,在末尾添加如下脚本,避免每次执行pod install后配置被重置:
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
- 依次执行以下命令重新安装依赖:
pod deintegratepod install --repo-update
- 完全退出Xcode,删除Derived Data文件夹,默认路径为
~/Library/Developer/Xcode/DerivedData - 重新打开Xcode(无需使用Rosetta),执行
Cmd+Shift+K清理后重新编译即可。
补充说明:如果执行后问题仍存在,可升级本地Cocoapods版本到最新版,gem安装用户执行
sudo gem install cocoapods,Homebrew安装用户执行brew upgrade cocoapods后再重新执行上述步骤。
内容的提问来源于stack exchange,提问作者user9715340
相关产品推荐
相关产品推荐

