You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter多Flavor环境下Firebase Crashlytics dSYM上传脚本配置问题

解决Flutter多Flavor项目Crashlytics dSYM分项目上传问题

方案一:通过Build Configuration设置环境变量直接指定App ID

  • 在Xcode中打开项目的Build Settings,为每个Flavor对应的Build Configuration(如Debug-FlavorA、Release-FlavorB等)添加自定义环境变量:
    • 点击+号选择Add User-Defined Setting,命名为FIREBASE_APP_ID
    • 给每个Configuration设置对应Firebase项目的App ID(可从对应Flavor的firebase_app_id.json中复制)
  • 修改Crashlytics的上传脚本,替换默认的App ID读取逻辑:
    原脚本中类似GOOGLE_APP_ID=$(grep '"google_app_id"' "${SRCROOT}/firebase_app_id.json" | cut -d '"' -f4)的代码,替换为:
    # 优先使用Build Configuration中设置的FIREBASE_APP_ID
    GOOGLE_APP_ID="${FIREBASE_APP_ID}"
    # 可选兜底逻辑:若未设置环境变量,则从对应Flavor的配置文件读取
    if [ -z "$GOOGLE_APP_ID" ]; then
      GOOGLE_APP_ID=$(grep '"google_app_id"' "${SRCROOT}/lib/firebase_config/${CONFIGURATION}/firebase_app_id.json" | cut -d '"' -f4)
    fi
    
    确保脚本后续使用$GOOGLE_APP_ID指定上传的目标项目。

方案二:通过Configuration名称匹配对应firebase_app_id.json文件

如果你的firebase_app_id.json按Flavor分类存放(如lib/firebase_config/FlavorA/firebase_app_id.json),可通过Xcode的CONFIGURATION环境变量定位文件:

  • 修改上传脚本中的App ID提取部分:
    # 假设Configuration名称与Flavor目录名一致
    FIREBASE_CONFIG_PATH="${SRCROOT}/lib/firebase_config/${CONFIGURATION}/firebase_app_id.json"
    # 用plutil解析json,比grep更可靠
    GOOGLE_APP_ID=$(plutil -extract google_app_id raw "$FIREBASE_CONFIG_PATH")
    

验证脚本正确性

  • 在Xcode中选择对应Scheme执行Product > Build,查看构建日志的Crashlytics上传步骤,确认GOOGLE_APP_ID为当前Flavor对应的ID
  • 可在脚本开头添加echo "Current Configuration: ${CONFIGURATION}"和echo "Using Firebase App ID: ${GOOGLE_APP_ID}"输出调试信息,方便排查问题

注意:确保每个Flavor对应的Build Configuration在Xcode中关联正确,且脚本中firebase_app_id.json的路径无误(${SRCROOT}对应Flutter项目根目录)。

内容的提问来源于stack exchange,提问作者Jonas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:42:20