为已发布的Flutter Firebase项目配置双环境方案咨询
Flutter Firebase 多环境配置方案(开发/生产隔离)
核心思路
通过构建环境(Flavor)区分开发/生产环境,为不同环境配置独立的Firebase应用配置文件,构建时自动加载对应环境的配置,彻底避免手动替换文件导致的覆盖问题,同时支持开发版与生产版APP在设备上共存。
具体实现步骤
1. 目录结构调整
在项目根目录创建config文件夹,分别存放开发(dev)和生产(prod)环境的Firebase配置文件:
your_flutter_project/ ├── config/ │ ├── dev/ │ │ ├── google-services.json # 开发环境Android配置 │ │ └── GoogleService-Info.plist # 开发环境iOS配置 │ └── prod/ │ ├── google-services.json # 生产环境Android配置 │ └── GoogleService-Info.plist # 生产环境iOS配置 └── ...
2. Android端配置(build.gradle)
修改android/app/build.gradle,添加环境Flavor并配置对应配置文件路径:
android { // 保留原有配置... // 定义环境维度 flavorDimensions "environment" productFlavors { dev { dimension "environment" applicationIdSuffix ".dev" // 开发版包名加后缀,实现与生产版共存 resValue "string", "app_name", "你的应用 Dev" // 开发版应用名称 } prod { dimension "environment" resValue "string", "app_name", "你的应用" // 生产版应用名称 } } // 配置不同Flavor加载对应目录的google-services.json sourceSets { dev { googleServices.srcDir '../config/dev' } prod { googleServices.srcDir '../config/prod' } } }
3. iOS端配置(Xcode + 脚本)
自动复制配置文件脚本
- 打开iOS项目(
ios/Runner.xcworkspace),进入Build Phases - 点击**+** → New Run Script Phase,将脚本拖到Copy Bundle Resources之前
- 输入以下脚本:
# 根据Build Configuration选择对应配置文件 if [ "${CONFIGURATION}" == "Debug" ]; then CONFIG_PATH="${PROJECT_DIR}/../config/dev/GoogleService-Info.plist" else CONFIG_PATH="${PROJECT_DIR}/../config/prod/GoogleService-Info.plist" fi # 复制到目标目录,覆盖默认文件 cp "${CONFIG_PATH}" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
Scheme区分(可选,更灵活)
- 复制现有Scheme:点击Xcode顶部Scheme下拉框 → Manage Schemes → 选中
Runner→ 点击Duplicate,命名为Runner Dev - 编辑
Runner DevScheme:在Run → Info中,将Build Configuration改为Debug;RunnerScheme保持Release - 切换Scheme即可快速切换开发/生产环境
4. Dart代码中区分环境(可选)
通过dart-define传递环境变量,在代码中做逻辑区分(比如日志、API地址等):
- 运行开发环境:
flutter run --flavor dev --dart-define=ENV=dev
- 运行生产环境:
flutter run --flavor prod --dart-define=ENV=prod
在Dart代码中获取环境变量:
const String env = String.fromEnvironment('ENV', defaultValue: 'prod'); void main() { if (env == 'dev') { // 开发环境专属逻辑,比如开启详细日志 } runApp(const MyApp()); }
5. 打包与切换
- 开发环境打包:
# Android flutter build apk --flavor dev # iOS flutter build ios --flavor dev
- 生产环境打包:
# Android flutter build apk --flavor prod # iOS flutter build ios --flavor prod
替代方案(手动切换,不推荐)
如果不想配置Flavor,可手动备份生产环境配置文件,开发时替换为开发环境配置,开发完成后再换回。但此方法容易出错,且无法同时安装两个环境的APP,仅适合临时测试场景。
内容的提问来源于stack exchange,提问作者iKaka
相关产品推荐
相关产品推荐

