M1芯片Mac下已有项目Xcode Debug构建报modulemap文件缺失错误
M1芯片Mac Xcode Debug构建RN项目module map缺失报错修复方案
适用报错场景
- 编译时重复提示NextLevelSessionExporter、react-native-compressor、react-native-geolocation-service、react-native-pdf-thumbnail四个依赖的module map文件不存在,路径指向DerivedData下的Debug-iphonesimulator目录
- 伴随
Command EmitSwiftModule执行失败返回非零退出码 - 伴随
Command PrecompileSwiftBridgingHeader报错但未触发构建失败标识
修复步骤
按顺序执行,每步完成后可尝试编译验证,不需要全量执行:
- 全量清理脏编译缓存
关闭所有Xcode窗口,打开终端执行以下命令:
# 进入项目ios目录,替换为自身项目的实际路径 cd /path/to/your/project/ios # 清空全局DerivedData编译缓存 rm -rf ~/Library/Developer/Xcode/DerivedData/* # 解除Pod集成并清理所有Pod缓存 pod deintegrate pod cache clean --all # 确认终端运行在arm64原生架构,执行后输出arm64为正常 arch # 若arch输出为x86_64,右键终端应用点击显示简介,取消「使用Rosetta打开」选项后重启终端再继续 # 重新安装依赖 pod install
注意:不要用Rosetta转译模式运行Xcode,M1芯片原生执行arm64架构二进制才能避免架构匹配错误,安装完成后打开.xcworkspace后缀的工作区文件启动项目,不要打开.xcodeproj项目文件。
修正架构相关编译配置
打开项目工作区后选中Pods项目,进入Build Settings面板:- 找到
Excluded Architectures配置项,针对Any iOS Simulator SDK选项,Debug/Release模式下均添加x86_64(M1设备不需要编译x86架构的模拟器产物,避免老依赖兼容性问题) - 找到
Build Active Architecture Only配置项,Debug模式设置为Yes,Release模式保持默认No - 找到
Module Map File配置项,全局搜索所有指向DerivedData目录的绝对路径配置,全部删除,交由Xcode自动检索模块位置
- 找到
修复搜索路径与桥接头配置
选中主项目Target,进入Build Settings面板:- 找到
Swift Compiler - General分类下的Objective-C Bridging Header配置,确认路径为相对于项目根目录的相对路径,不得包含DerivedData前缀 - 找到
Search Paths分类下的Framework Search Paths、Header Search Paths、Library Search Paths三个配置项,新增$(SRCROOT)/Pods/Release-iphonesimulator、$(SRCROOT)/Pods/Debug-iphonesimulator两个路径,均设置为recursive递归搜索,删除所有指向历史DerivedData目录的无效路径 - 按下
Shift+Command+K执行Clean Build Folder,之后重新启动Debug构建
- 找到
残留非阻断桥接报错修复
如果仍出现PrecompileSwiftBridgingHeader相关报错但不阻断构建,回到Pods项目的Target列表,逐个选中四个报错的依赖Target,检查Build Settings下的Defines Module配置为Yes,Module Name字段与依赖名完全一致,无特殊字符或空格即可。
内容的提问来源于stack exchange,提问作者devkrkanhaiya
相关产品推荐
相关产品推荐

