升级Xcode13后Bitrise CI报No such module ‘AWSCore’,本地运行正常如何解决
解决步骤
1. 强制清理CI环境缓存
在Bitrise工作流的Xcode归档步骤之前,新增执行Shell脚本步骤,写入以下命令清理脏缓存:
# 清理DerivedData rm -rf ~/Library/Developer/Xcode/DerivedData/* # 清理全局SPM缓存 rm -rf ~/Library/Caches/org.swift.swiftpm # 执行项目clean操作,替换为你自己的项目/工作区和Scheme名称 xcodebuild clean -workspace Carbn.xcworkspace -scheme Carbn-Test
2. 排查模块重命名残留配置
你遇到的内部模块找不到问题,大概率是Xcode重命名操作未同步更新所有配置导致的,按以下路径检查:
- 右键点击
.xcodeproj文件,选择「显示包内容」,打开project.pbxproj文件全局搜索重命名前的旧模块名,删除所有残留配置 - 检查
Challenges模块target的Build Settings配置:- 确认
Product Name和Module Name字段值均为Challenges - 确认主target的
Build Phases > Dependencies已添加Challenges依赖,Link Binary With Libraries已引入Challenges.framework
- 确认
3. 修复编译诊断文件错误
Invalid diagnostics signature是Xcode 13的已知增量编译bug,按以下操作修复:
- 所有target(包括主target和内部模块target)的Build Settings中,将归档配置对应的
Compilation Mode设置为Whole Module,关闭增量编译 - 如果自定义了xcodebuild归档命令,额外添加
-disableIncrementalBuild参数强制全量编译
4. 对齐CI与本地环境版本
你本地使用的是Xcode 13.1,当前CI用的Xcode 13.0存在SPM模块解析逻辑差异,直接将Bitrise构建栈更换为MacOS Monterey + Xcode 13.1,完全对齐本地开发环境避免兼容问题
5. 修正框架搜索路径配置
之前添加的$(BUILD_PRODUCT_DIR) recursive框架搜索路径,需要配置在所有target(包括内部的Challenges模块)上,不要仅配置主target。
内容的提问来源于stack exchange,提问作者Jacob Bartlett
相关产品推荐
相关产品推荐

