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

6
我需要三个不同的APK(dev,UAT,prod),每个APK针对不同的Firebase数据库。但是在每个Firebase项目中,我需要提供一个永久的应用程序ID。这意味着我需要有3个构建变体,每个变体都部署具有不同应用程序ID的APK。但是在Android Studio中,似乎找不到这样一种为Flutter构建变体的方法(构建变体部分为空)。
我要寻找的不仅仅是不同的入口点和不同的常量,而是完全不同的应用程序ID。据我所知,在Flutter中更改应用程序名称和应用程序ID需要6个步骤像这样。我不认为每次想要更改构建范围时都要执行这些6个步骤是处理此问题的有效和正确方式。

你找到解决方案了吗? - Yacine Belarbi
@YacineBelarbi 我有,但这是一个外部解决方案,而不是内部的Android Studio/Flutter解决方案。我使用git来拥有一个基础分支,然后从该基础分支创建3个分支。每个分支只在应用程序ID数据上有所不同。如果我想编译不同的版本,我需要先激活不同的分支。 - Chen Li Yong
1个回答

2
在Flutter中,您应该选择构建风味而不是构建变体(构建风味和构建类型的组合)。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.4添加到pubspec.yaml
  • 在任何地方添加代码:
  PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
    print("Package name: ${packageInfo.packageName}");
  });
  • packageName 将包含构建风格和构建类型。在我的情况下,由于在 buildTypesproductFlavors 中都有 applicationIdSuffix,所以为 com.example.dev.debug。如果您不需要/想要它,则可以删除 applicationIdSuffix ".debug"

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接