本指南将向您展示如何为 Android 应用创建 Flutter 风味。

概述

#

Flutter 风味(在与 Android 结合使用时)是各种平台特定功能的统一术语。例如,风味可以决定特定应用版本所关联的图标、应用名称、API 密钥、功能标志和日志记录级别。

如果您想为 Android 应用创建 Flutter 风味,可以在 Flutter 中进行。在 Android 中,Flutter 风味被称为 产品风味

以下示例说明了当 Android 应用具有两个产品风味(stagingproduction)和两种构建类型(debugrelease)时创建的 Android 构建变体

产品风味构建类型生成的构建变体
stagingdebugstagingDebug
stagingRelease
productionreleaseproductionDebug
productionRelease

配置您的产品风味

#

请完成以下步骤,为名为 flavors_example 的新 Flutter 项目添加两个名为 stagingproduction 的 Android 产品风味,然后测试您的项目以确保风味按预期工作。

  1. 创建一个名为 flavors_example 的新 Flutter 项目,并将 Kotlin 作为首选 Android 语言。默认情况下,项目包含 debugrelease Android 构建类型。

    控制台
    flutter create --android-language kotlin flavors_example
  2. flavors_example 项目添加名为 stagingproduction 的产品风味。

    • flavors_example 项目中,导航到 android/app/ 目录并打开 build.gradle.kts

    • android {} block 中添加 flavorsDimension 属性和 productFlavors 属性。确保 android {} 块还包含默认的 debugrelease 构建类型。

      build.gradle.kts
      kotlin
      android {
          ...
          buildTypes {
            getByName("debug") {...}
            getByName("release") {...}
          }
          ...
          flavorDimensions += "default"
          productFlavors {
              create("staging") {
                  dimension = "default"
                  applicationIdSuffix = ".staging"
              }
              create("production") {
                  dimension = "default"
                  applicationIdSuffix = ".production"
              }
          }
      }
  3. 为了确保您已正确设置一切,请在 Android 产品风味上运行您的应用。您不会看到任何差异,因为配置设置尚未更改,但您确实需要确保应用可以运行。

    • 启动 Android 模拟器或连接已启用开发者选项的物理设备。

    • 在控制台中,导航到 flavors_example 目录并输入以下命令来测试 staging 风味:

      控制台
      flutter run --flavor staging
    • production 风味重复上一步。

  4. 如果一切正常运行,您就可以自定义配置了。有关更多信息,请参阅 自定义配置

启动风味

#

在为 Android 应用添加产品风味后,您可以通过 Flutter 启动特定的产品风味。

您可以使用 Flutter CLI 通过以下步骤启动产品风味:

  1. 启动 Android 模拟器或连接已启用开发者选项的物理设备。

  2. 在控制台中,导航到 flavors_example 目录并输入以下命令:

    控制台
    flutter (run | build) --flavor <flavor_name>
    • (run | build):用以下选项之一替换:

      • run:以调试模式运行应用。
      • build:以生产模式运行应用。
    • <flavor_name>:替换为您 Android 产品风味的名称(例如,stagingproduction)。

    示例

    控制台
    flutter run --flavor staging

自定义配置

#

添加产品风味后,您可以为 Android 应用自定义它们。

创建不同的应用显示名称

#

如果您有多个产品风味,不同的应用名称可以帮助您快速识别正在使用的已部署应用的风味。

Distinct app names in menu

以下步骤展示了如何在名为 flavors_example 的项目中为两个名为 stagingproduction 的产品风味添加不同的应用显示名称。

  1. 在 IDE 中更新 build.gradle.kts

    • flavors_example 项目中,导航到 android/app/ 目录并打开 build.gradle.kts

    • flavorsDimension 块中,为 stagingproduction 风味添加一个名为 app_nameresValue() 属性。

      build.gradle.kts
      kotlin
      android {
          ...
          flavorDimensions += "default"
          productFlavors {
              create("staging") {
                  dimension = "default"
                  resValue(
                      type = "string",
                      name = "app_name",
                      value = "Flavors staging")
                  applicationIdSuffix = ".staging"
              }
              create("production") {
                  dimension = "default"
                  resValue(
                      type = "string",
                      name = "app_name",
                      value = "Flavors production")
                  applicationIdSuffix = ".production"
              }
          }
  2. 在 IDE 中更新 AndroidManifest.xml

    • flavors_example 项目中,导航到 android/app/src/main 并打开 AndroidManifest.xml

    • android:label 的值替换为 @string/app_name

      AndroidManifest.xml
      xml
      <manifest xmlns:android="http://schemas.android.com/apk/res/android">
          <application
            android:label="@string/app_name"
            ...
          />
      />
  3. 为每个产品风味(stagingproduction)启动应用,并检查以确保每个应用的显示名称都已更改。

    • 要启动产品风味,请参阅 启动风味 中的步骤。

    • 在 Android 应用模拟器中,转到应用列表。您应该会看到一个名为 Flavors p... 的应用和一个名为 Flavors s... 的应用。

    • 要查看 Flavors p...Flavors s... 的更多信息,请长按其中一个图标,然后选择 应用信息

创建不同的图标

#

如果您有多个产品风味,为每种配置使用不同的图标可以帮助您快速识别正在使用的已部署应用的风味。

Distinct icons

以下步骤展示了如何在名为 flavors_example 的项目中为两个名为 stagingproduction 的产品风味添加不同的图标。

  1. 准备您的图标

    • 在您选择的设计工具中设计您的 staging 图标和 production 图标。

    • 以 PNG 格式生成以下尺寸的 staging 图标和 production 图标版本:

      • mipmap-mdpi (48x48 像素)
      • mipmap-hdpi (72x72 像素)
      • mipmap-xhdpi (96x96 像素)
      • mipmap-xxhdpi (144x144 像素)
      • mipmap-xxxhdpi (192x192 像素)
  2. 创建特定于风味的代码资源目录

    • 导航到 android/app/src 目录。

    • 创建一个名为 staging/res 的目录。

    • 导航到 staging/res 目录。

    • 创建以下 mipmap 目录并将 staging 图标版本移入其中:

      • mipmap-mdpi/48x48_staging.png
      • mipmap-hdpi/72x72_staging.png
      • mipmap-xhdpi/96x96_staging.png
      • mipmap-xxhdpi/144x144_staging.png
      • mipmap-xxxhdpi/192x192_staging.png
    • production 风味目录和图标重复上述步骤。

    • 将所有图标重命名为 ic_launcher.png

  3. 在 IDE 中仔细检查 AndroidManifest.xml 中的配置。

    • flavors_example 项目中,导航到 android/app/src/main 并打开 AndroidManifest.xml

    • 确保 android:icon 的值是 @mipmap/ic_launcher

  4. 为每个产品风味(stagingproduction)启动应用,并检查以确保每个应用图标都已更改。要启动产品风味,请参阅 启动风味 中的步骤。

打包资源

#

如果您的应用中有仅在特定风味中使用的资源,您可以将其配置为仅在该风味启动时打包到您的应用中。这可以防止您的应用包因未使用的资源而膨胀。要为每个风味打包资源,请在项目的 pubspec 文件中将 assets 字段的 flavors 子字段添加到 assets 字段。有关更多信息,请参阅 Flutter pubspec 选项assets 字段

设置默认风味

#

您可以让您的应用在启动应用时不指定风味,而是使用特定的风味。为此,您需要在项目的 pubspec 文件中添加 default-flavor 字段。有关更多信息,请参阅 Flutter pubspec 选项default-flavor 字段

添加独特的构建设置

#

如果您有要为特定 Android 产品风味配置的附加构建设置,请参阅 Android 的 配置构建变体

更多信息

#

有关创建和使用风味的更多信息,请查看以下资源: