繁体   English   中英

如何在 Flutter Android 中创建构建变体,以便每个构建变体都有不同的应用程序 ID?

[英]How to create build variants in Flutter Android so that each build variants have different app id?

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

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

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

指定构建风格:

defaultConfig {}下面build.gradle中:

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将同时具有构建风格和构建类型。 在我的例子中,由于applicationIdSuffixbuildTypesproductFlavors中, com.example.dev.debug 如果您不需要/不想要它,您可以删除applicationIdSuffix ".debug"

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM