Flutter多Flavor环境下向Firebase Crashlytics上传dSYM符号
多Flavor Flutter应用上传dSYM到Firebase Crashlytics的Build Phases脚本
直接使用以下脚本即可适配你的目录结构,将其添加到Xcode的Build Phases中:
# 从Configuration名称提取Flavor(假设你的Configuration命名为「Flavor-Debug」「Flavor-Release」格式) FLAVOR="${CONFIGURATION%%-*}" # 定位对应Flavor的GoogleService-Info.plist GOOGLE_SERVICE_PLIST_PATH="${PROJECT_DIR}/config/${FLAVOR}/GoogleService-Info.plist" # 检查配置文件是否存在,避免脚本报错中断 if [ ! -f "$GOOGLE_SERVICE_PLIST_PATH" ]; then echo "❌ 未找到${FLAVOR}环境的GoogleService-Info.plist,路径:$GOOGLE_SERVICE_PLIST_PATH" exit 1 fi # 调用Firebase上传工具,上传dSYM符号 "${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "$GOOGLE_SERVICE_PLIST_PATH" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
配置步骤
- 打开Flutter项目的iOS工程(
ios/Runner.xcworkspace) - 选中
RunnerTarget,切换到Build Phases标签页 - 点击左上角「+」按钮,选择New Run Script Phase
- 将上述脚本粘贴到脚本输入框内
- 调整这个Run Script Phase的顺序,确保它在Upload Debug Symbols to Firebase Crashlytics(如果存在)之后,或放在所有编译、链接阶段之后
关键注意事项
- Flavor名称提取逻辑:如果你的Configuration命名格式是「Debug-Flavor」「Release-Flavor」,请把
FLAVOR="${CONFIGURATION%%-*}"改成FLAVOR="${CONFIGURATION#*-}",确保能正确提取到flavor名称 - 路径验证:手动确认
${PROJECT_DIR}/config/${FLAVOR}/GoogleService-Info.plist路径确实存在,比如config/Dev/GoogleService-Info.plist - 依赖检查:确保已通过Pod安装FirebaseCrashlytics,
${PODS_ROOT}/FirebaseCrashlytics/upload-symbols路径有效 - 测试脚本:可在终端手动执行上传命令排查报错,示例:
cd ios ./Pods/FirebaseCrashlytics/upload-symbols -gsp ../config/Dev/GoogleService-Info.plist -p ios ../build/ios/archive/Runner.xcarchive/dSYMs/Runner.app.dSYM
内容的提问来源于stack exchange,提问作者vovaklh
相关产品推荐
相关产品推荐

