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

Che*_*ong 6 android flutter build-variant

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

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

Ben*_*rth 3

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

\n

指定构建风格:

\n

build.gradle下面defaultConfig {}

\n
android {\n    ...\n    buildTypes {\n        release {\n            // TODO: Add your own signing config for the release build.\n            // Signing with the debug keys for now, so `flutter run --release` works.\n            signingConfig signingConfigs.debug\n        }\n        debug {\n            applicationIdSuffix ".debug" // Optional, you don\'t need to create a separate applicationId for debug.\n            signingConfig signingConfigs.debug\n        }\n    }\n\n    flavorDimensions "default"\n    productFlavors {\n        dev {\n            applicationIdSuffix ".dev"\n        }\n        qa {\n            applicationIdSuffix ".qa"\n        }\n        prod {\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

使用特定的构建风格运行您的 Flutter 应用程序:

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

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

\n
    \n
  • 添加package_info_plus: ^1.0.4pubspec.yaml
  • \n
  • 在某处添加代码:
  • \n
\n
android {\n    ...\n    buildTypes {\n        release {\n            // TODO: Add your own signing config for the release build.\n            // Signing with the debug keys for now, so `flutter run --release` works.\n            signingConfig signingConfigs.debug\n        }\n        debug {\n            applicationIdSuffix ".debug" // Optional, you don\'t need to create a separate applicationId for debug.\n            signingConfig signingConfigs.debug\n        }\n    }\n\n    flavorDimensions "default"\n    productFlavors {\n        dev {\n            applicationIdSuffix ".dev"\n        }\n        qa {\n            applicationIdSuffix ".qa"\n        }\n        prod {\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • packageName将同时具有构建风格和构建类型就我而言,因为applicationIdSuffixbuildTypes, productFlavors. 如果您不需要/想要它,com.example.dev.debug可以将其删除。applicationIdSuffix ".debug"
  • \n
\n

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

\n