Carthage Bootstrap构建失败(退出码1):Swift/Xcode版本适配下PubNub异常
我之前也碰到过类似的环境不匹配导致的Carthage构建后dSYM生成失败的情况,结合你的环境(Xcode 10.4、本地Swift 5.0.1但项目指定Swift 4.0)和报错信息,问题核心是:虽然Xcode日志显示PubNub的构建步骤成功了,但后续dsymutil工具无法生成对应的符号文件,最终导致Carthage整体构建退出码为1。下面是几个针对性的解决办法,你可以逐一尝试:
方案1:强制Carthage使用项目要求的Swift版本
本地Swift 5.0.1和项目指定的Swift 4.0版本不匹配,很可能让Carthage在构建依赖时用了错误的Swift版本,间接影响了dSYM生成。你可以在执行Carthage命令时强行指定Swift版本:
SWIFT_VERSION=4.0 carthage bootstrap --platform ios
方案2:彻底清理Carthage缓存与旧构建产物
缓存的旧构建文件很容易和当前环境产生冲突,先清干净再重新构建:
- 删除项目根目录的Carthage文件夹:
rm -rf Carthage - 删除Carthage全局缓存:
rm -rf ~/Library/Caches/org.carthage.CarthageKit - 重新执行构建命令:
carthage bootstrap --platform ios
方案3:临时跳过dSYM生成(应急用)
如果只是需要先跑通项目,暂时不需要dSYM文件用于崩溃分析,可以让Carthage跳过这个步骤,执行命令时加上--no-dsym参数:
carthage bootstrap --platform ios --no-dsym
⚠️ 注意:这个方案只是临时绕过问题,正式发布前一定要解决dSYM生成的问题,否则后续无法分析崩溃日志。
方案4:确认Xcode命令行工具版本匹配
确保你使用的命令行工具是Xcode 10.4对应的版本,执行以下命令查看当前路径:
xcode-select -p
如果输出不是/Applications/Xcode_10.4.app/Contents/Developer,就切换到正确路径:
sudo xcode-select -s /Applications/Xcode_10.4.app/Contents/Developer
方案5:更换PubNub为兼容版本
你当前使用的PubNub v4.8.1可能和Xcode 10.4、Swift 4.0存在兼容性问题,可以尝试在Cartfile中指定一个更早的兼容版本,比如:
github "pubnub/objective-c" "4.7.0"
修改后保存Cartfile,再重新执行carthage bootstrap --platform ios
内容的提问来源于stack exchange,提问作者Benjamin Lee

