3

我需要有 3 个不同的 APK(dev、UAT、prod),每个都针对不同的 Firebase 数据库。但是在每个 Firebase 项目上,我都需要提供一个永久的应用程序 ID。这意味着我需要有 3 个构建变体,每个变体都部署具有不同应用程序 ID 的 APK。但是在 Android Studio 上,我似乎找不到为此目的为 Flutter 构建变体的方法(构建变体部分为空)。

我正在寻找的不仅仅是不同的入口点和不同的常量,而是完全不同的应用程序 ID。据我所知,在 Flutter 中更改应用程序名称和应用程序 ID 需要 6 个这样的步骤。我不认为每次我想更改构建范围时都执行这 6 个步骤是处理此问题的有效且正确的方法。

4

1 回答 1

1

在 Flutter 中,您应该选择构建风格而不是构建变体(构建风格和构建类型的组合)。Flutter run有一个--flavor选项,但没有buildType

指定构建风格:

build.gradle下面defaultConfig {}

android {
    ...
    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
        debug {
            applicationIdSuffix ".debug" // Optional, you don't need to create a separate applicationId for debug.
            signingConfig signingConfigs.debug
        }
    }

    flavorDimensions "default"
    productFlavors {
        dev {
            applicationIdSuffix ".dev"
        }
        qa {
            applicationIdSuffix ".qa"
        }
        prod {
        }
    }
}

运行具有特定构建风格的 Flutter 应用程序:

  • 在命令行上:使用flutter run --flavor flavorName, 或
  • 在 Android Studio 中:运行/调试配置下拉 → 编辑配置... → Additional run args:→ 添加--flavor dev--flavor qa--flavor prod

确认 applicationId 已更改。我为此使用package_info_plus :

  • 添加package_info_plus: ^1.0.4pubspec.yaml
  • 在某处添加代码:
  PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
    print("Package name: ${packageInfo.packageName}");
  });
  • packageName将同时具有构建风格和构建类型。在我的情况下,因为applicationIdSuffix在两者buildTypesproductFlavorscom.example.dev.debugapplicationIdSuffix ".debug"如果您不需要/不想要它,您可以删除它。

现在我们可以拥有单独的构建风味目录和它们自己的google-services.json.

于 2021-08-11T10:25:37.823 回答