Xcode12.5.1编译iOS报错No such module "_concurrency"如何解决
iOS构建报错
No such module "_concurrency" 解决方法 问题信息
构建自研iOS应用时失败,抛出错误:
No such module "_concurrency"
相关配置
项目依赖版本
"react-native": "0.64.3", "expo": "^43.0.3", "react-native-fbsdk-next": "^9.0.0", "expo-modules-core": "~0.4.10"
开发环境参数
- Xcode版本:12.5.1
- iOS Deployment Target:12.0
- Swift版本:5.4.2
报错原因
_concurrency是Swift 5.4(Xcode 12.5内置版本)中并发特性处于beta阶段时使用的临时模块名,Swift 5.5(Xcode 13及以上内置版本)正式上线并发特性后,临时模块被移除,正式模块名统一为Concurrency。当前项目引入的react-native-fbsdk-next@9.x默认适配Xcode 13+的正式Swift并发环境,在Xcode 12.5环境下构建时会查找已被废弃的临时模块,最终触发报错。
解决步骤
两种方案二选一即可,优先推荐升级Xcode的方案,长期维护兼容性更好。
方案一:升级Xcode(推荐)
- 将Xcode升级至13.0及以上版本,匹配当前使用的Expo 43版本,最高可升级到Xcode 13.2.1,不会出现额外兼容问题
- 进入项目的
ios目录,执行pod deintegrate && pod install重新生成Pods依赖配置 - 打开Xcode,按下快捷键
Cmd+Shift+K清理构建产物,同时删除~/Library/Developer/Xcode/DerivedData目录下对应项目的缓存文件夹 - 重新执行构建即可
方案二:不升级Xcode,降级冲突依赖
如果暂时无法升级Xcode,可将引入并发兼容问题的react-native-fbsdk-next降级到适配Xcode 12.5的版本:
- 修改
package.json中react-native-fbsdk-next的版本号为7.3.3,删掉版本号前的^符号,避免包管理器自动拉取不兼容的高版本 - 在项目根目录执行
npm install或yarn install更新前端依赖 - 进入
ios目录执行pod deintegrate && pod install更新iOS原生依赖 - 清理Xcode构建缓存后重新编译即可
内容的提问来源于stack exchange,提问作者Diego Barranco
相关产品推荐
相关产品推荐

