多Flavor项目中Firebase dSYM文件缺失问题求助
解决Flutter多Flavor下iOS开发版Firebase dSYM缺失问题及多Flavor配置方案
一、关于firebase_app_id_file.json的多Flavor适配
完全可以针对不同Flavor配置独立的firebase_app_id_file.json,但不能直接修改根目录的单一文件,需要按以下步骤配置:
- 在iOS项目目录下,为每个Flavor创建专属子文件夹(比如
ios/Development、ios/Production),将对应环境的firebase_app_id_file.json分别放入其中。 - 打开Xcode,选中对应Flavor的Target,进入
Build Settings,搜索FIREBASE_APP_ID_FILE,将其值设置为对应文件夹下的文件路径,比如$(SRCROOT)/Development/firebase_app_id_file.json。 - 确保每个Flavor的Target都配置了独立的
GoogleService-Info.plist(如果使用的话),路径同样指向对应Flavor的子文件夹。
开发环境示例firebase_app_id_file.json:
{ "file_generated_by": "FlutterFire CLI", "purpose": "FirebaseAppID & ProjectID for Development Firebase app", "GOOGLE_APP_ID": "DEV_APP_ID_HERE", "FIREBASE_PROJECT_ID": "DEV_FIREBASE_PROJECT_ID", "GCM_SENDER_ID": "DEV_GCM_SENDER_ID" }
二、解决开发版dSYM缺失的关键步骤
既然生产版正常,说明核心配置没问题,问题出在开发Flavor的dSYM生成或上传环节:
- 强制开启dSYM生成:进入每个Flavor Target的
Build Settings→Build Options→Debug Information Format,将Debug和Release模式都设置为DWARF with dSYM File,不要只设置Release。 - 修复Crashlytics上传脚本:在Xcode的
Build Phases中添加Run Script,针对不同Flavor指定上传逻辑,示例脚本:
注意将"${PODS_ROOT}/FirebaseCrashlytics/run" "${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${SRCROOT}/${FLAVOR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"${FLAVOR}替换为你的Flavor名称,或通过Xcode的环境变量动态获取。 - 手动验证dSYM生成:构建开发版后,前往
~/Library/Developer/Xcode/DerivedData/[你的项目名]/Build/Products/[Flavor]-iphoneos目录,确认.dSYM文件存在。如果存在,手动使用Firebase CLI上传:firebase crashlytics upload-symbols --project=DEV_PROJECT_ID --ios [dSYM文件路径] - 重新初始化FlutterFire:使用FlutterFire CLI针对每个Flavor重新初始化,确保配置文件正确关联:
flutterfire configure --flavor Development
内容的提问来源于stack exchange,提问作者Sabin Simkhada
相关产品推荐
相关产品推荐

