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

如何在Flutter中配置不同Firebase环境并实现编译时切换?

编译时切换Flutter Firebase多环境配置文件

我刚好之前折腾过Flutter Firebase多环境切换的事儿,完全懂你要的不需要手动替换文件、构建时自动切换的需求!下面分享两种适配Android和iOS的原生方案,都是成熟可靠的:

一、Android端:借助Gradle Product Flavors实现

Android本身的Gradle构建系统就支持多环境配置,直接利用这个特性最省心:

  1. 整理配置文件目录
    在Android项目的app/src下创建两个子目录:dev和prod,把对应环境的google-services.json分别放进去:

    android/app/
    ├── src/
    │   ├── dev/
    │   │   └── google-services.json  # 测试环境配置
    │   ├── prod/
    │   │   └── google-services.json  # 生产环境配置
    │   └── main/
    └── build.gradle
    
  2. 配置Gradle Product Flavors
    打开android/app/build.gradle,在android节点下添加flavors配置:

    android {
        // ... 其他原有配置
        
        flavorDimensions "environment"
        productFlavors {
            dev {
                dimension "environment"
                applicationIdSuffix ".dev"  // 可选:给测试包加后缀区分
                versionNameSuffix "-dev"
            }
            prod {
                dimension "environment"
                // 生产环境用默认的applicationId和versionName
            }
        }
    }
    

    配置完成后,Gradle会自动根据你指定的flavor加载对应目录下的google-services.json,完全不需要额外的复制脚本。

  3. Flutter构建时指定环境
    运行或构建时通过--flavor参数指定环境:

    # 运行测试环境
    flutter run --flavor dev
    # 构建生产环境APK
    flutter build apk --flavor prod
    

二、iOS端:利用Xcode Scheme + 构建脚本实现

iOS这边没有像Android那样的flavor原生支持,但可以通过Scheme配合构建脚本实现自动复制配置文件:

  1. 准备多环境配置文件
    在iOS项目根目录(ios/)下放置两个配置文件:GoogleServices-Info-Dev.plist(测试环境)和GoogleServices-Info-Prod.plist(生产环境)。

  2. 创建Xcode Scheme
    打开Xcode,点击顶部的Scheme选择框 → New Scheme...,分别创建Dev和Prod两个Scheme,对应你的测试和生产环境。

  3. 添加构建脚本
    选中某个Scheme(比如Dev),点击Edit Scheme... → 切换到Build标签页 → 点击左上角的+选择New Run Script Phase,然后添加以下脚本:

    # 复制测试环境的plist到目标位置
    cp "${PROJECT_DIR}/GoogleServices-Info-Dev.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleServices-Info.plist"
    

    同样的操作给Prod Scheme添加脚本,把Dev换成Prod即可。

    注意:脚本里的路径要用Xcode提供的环境变量,避免硬编码路径导致不同机器上构建失败。另外要把这个Run Script Phase拖到Copy Bundle Resources之前执行,否则复制的文件不会被打包进去。

  4. Flutter构建时指定Scheme
    运行或构建时通过--flavor和--scheme参数指定环境:

    # 运行测试环境
    flutter run --flavor dev --scheme Dev
    # 构建生产环境IPA
    flutter build ios --flavor prod --scheme Prod
    

三、代码层面的配合(可选)

如果需要对应环境的代码逻辑区分,可以创建不同的入口文件:比如lib/main_dev.dart和lib/main_prod.dart,在构建时指定入口:

flutter run --flavor dev --target lib/main_dev.dart

在入口文件里初始化Firebase时,也可以根据环境做不同的配置(不过大部分情况下,配置文件已经足够区分)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:06:57