Flutter项目Xcode归档报错:Command PhaseScriptExecution失败
解决Flutter切换版本后Xcode归档Crashlytics dSYM报错问题
问题定位
报错显示upload-symbols无法获取指定路径的dSYM文件属性,路径仅到DWARF目录(缺少具体文件名),结合Flutter版本切换操作,核心原因是版本切换后iOS工程的构建配置、脚本逻辑出现不一致,导致dSYM文件路径解析失败。
修复步骤
1. 修正Crashlytics输入文件路径
当前配置的第一个路径依赖${TARGET_NAME}解析文件名,但Flutter生成的App.framework.dSYM内的DWARF文件名为App,而非Runner target的名称,导致路径截断。将路径修改为:
"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/App"
或用${PRODUCT_NAME}替代${TARGET_NAME},确保指向正确的DWARF文件。
2. 修复脚本的路径解析逻辑
macOS自带的readlink是BSD版本,不支持-f参数,原脚本中的source="$(readlink -f "${source}")"会导致路径解析失败,替换为兼容macOS的写法:
# 替代原readlink -f逻辑,兼容macOS source="$(cd "$(dirname "${source}")" && pwd)/$(basename "${source}")"
3. 清理工程缓存并重新构建
- 执行Flutter全局清理:
flutter clean - 进入iOS目录,重置CocoaPods依赖:
cd ios pod deintegrate pod install - 在Xcode中清理构建缓存(
Command + Shift + K),关闭Xcode后重新打开。
4. 验证dSYM生成配置
在Xcode的Runner Target配置中,确认以下选项:
Build Settings->Debug Information Format:Release模式设置为DWARF with dSYM FileBuild Settings->Generate Debug Symbols:设置为YES
5. 重新执行归档
完成以上操作后,重新在Xcode中执行归档流程,检查报错是否消失。
内容的提问来源于stack exchange,提问作者Handelika
相关产品推荐
相关产品推荐

