设置 Android 版 Flutter 风味
本指南将向您展示如何为 Android 应用创建 Flutter 风味。
概述
#Flutter 风味(在与 Android 结合使用时)是各种平台特定功能的统一术语。例如,风味可以决定特定应用版本所关联的图标、应用名称、API 密钥、功能标志和日志记录级别。
如果您想为 Android 应用创建 Flutter 风味,可以在 Flutter 中进行。在 Android 中,Flutter 风味被称为 产品风味。
以下示例说明了当 Android 应用具有两个产品风味(staging、production)和两种构建类型(debug、release)时创建的 Android 构建变体:
| 产品风味 | 构建类型 | 生成的构建变体 | 
|---|---|---|
| staging | debug | stagingDebug stagingRelease | 
| production | release | productionDebug productionRelease | 
配置您的产品风味
#请完成以下步骤,为名为 flavors_example 的新 Flutter 项目添加两个名为 staging 和 production 的 Android 产品风味,然后测试您的项目以确保风味按预期工作。
- 创建一个名为 - flavors_example的新 Flutter 项目,并将 Kotlin 作为首选 Android 语言。默认情况下,项目包含- debug和- releaseAndroid 构建类型。控制台- flutter create --android-language kotlin flavors_example
- 为 - flavors_example项目添加名为- staging和- production的产品风味。- 在 - flavors_example项目中,导航到- android/app/目录并打开- build.gradle.kts。
- 在 - android {} block中添加- flavorsDimension属性和- productFlavors属性。确保- android {}块还包含默认的- debug和- release构建类型。build.gradle.ktskotlin- android { ... buildTypes { getByName("debug") {...} getByName("release") {...} } ... flavorDimensions += "default" productFlavors { create("staging") { dimension = "default" applicationIdSuffix = ".staging" } create("production") { dimension = "default" applicationIdSuffix = ".production" } } }
 
- 为了确保您已正确设置一切,请在 Android 产品风味上运行您的应用。您不会看到任何差异,因为配置设置尚未更改,但您确实需要确保应用可以运行。 - 启动 Android 模拟器或连接已启用开发者选项的物理设备。 
- 在控制台中,导航到 - flavors_example目录并输入以下命令来测试- staging风味:控制台- flutter run --flavor staging
- 为 - production风味重复上一步。
 
- 如果一切正常运行,您就可以自定义配置了。有关更多信息,请参阅 自定义配置。 
启动风味
#在为 Android 应用添加产品风味后,您可以通过 Flutter 启动特定的产品风味。
您可以使用 Flutter CLI 通过以下步骤启动产品风味:
- 启动 Android 模拟器或连接已启用开发者选项的物理设备。 
- 在控制台中,导航到 - flavors_example目录并输入以下命令:控制台- flutter (run | build) --flavor <flavor_name>- (run | build):用以下选项之一替换:- run:以调试模式运行应用。
- build:以生产模式运行应用。
 
- <flavor_name>:替换为您 Android 产品风味的名称(例如,- staging或- production)。
 - 示例 控制台- flutter run --flavor staging
自定义配置
#添加产品风味后,您可以为 Android 应用自定义它们。
创建不同的应用显示名称
#如果您有多个产品风味,不同的应用名称可以帮助您快速识别正在使用的已部署应用的风味。

以下步骤展示了如何在名为 flavors_example 的项目中为两个名为 staging 和 production 的产品风味添加不同的应用显示名称。
- 在 IDE 中更新 - build.gradle.kts- 在 - flavors_example项目中,导航到- android/app/目录并打开- build.gradle.kts。
- 在 - flavorsDimension块中,为- staging和- production风味添加一个名为- app_name的- resValue()属性。build.gradle.ktskotlin- 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" } }
 
- 在 IDE 中更新 - AndroidManifest.xml- 在 - flavors_example项目中,导航到- android/app/src/main并打开- AndroidManifest.xml。
- 将 - android:label的值替换为- @string/app_name。AndroidManifest.xmlxml- <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:label="@string/app_name" ... /> />
 
- 为每个产品风味( - staging、- production)启动应用,并检查以确保每个应用的显示名称都已更改。- 要启动产品风味,请参阅 启动风味 中的步骤。 
- 在 Android 应用模拟器中,转到应用列表。您应该会看到一个名为 - Flavors p...的应用和一个名为- Flavors s...的应用。
- 要查看 - Flavors p...或- Flavors s...的更多信息,请长按其中一个图标,然后选择- 应用信息。
 
创建不同的图标
#如果您有多个产品风味,为每种配置使用不同的图标可以帮助您快速识别正在使用的已部署应用的风味。

以下步骤展示了如何在名为 flavors_example 的项目中为两个名为 staging 和 production 的产品风味添加不同的图标。
- 准备您的图标 - 在您选择的设计工具中设计您的 - staging图标和- production图标。
- 以 PNG 格式生成以下尺寸的 - staging图标和- production图标版本:- mipmap-mdpi (48x48 像素)
- mipmap-hdpi (72x72 像素)
- mipmap-xhdpi (96x96 像素)
- mipmap-xxhdpi (144x144 像素)
- mipmap-xxxhdpi (192x192 像素)
 
 
- 创建特定于风味的代码资源目录 - 导航到 - 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。
 
- 在 IDE 中仔细检查 - AndroidManifest.xml中的配置。- 在 - flavors_example项目中,导航到- android/app/src/main并打开- AndroidManifest.xml。
- 确保 - android:icon的值是- @mipmap/ic_launcher。
 
- 为每个产品风味( - staging、- production)启动应用,并检查以确保每个应用图标都已更改。要启动产品风味,请参阅 启动风味 中的步骤。
打包资源
#如果您的应用中有仅在特定风味中使用的资源,您可以将其配置为仅在该风味启动时打包到您的应用中。这可以防止您的应用包因未使用的资源而膨胀。要为每个风味打包资源,请在项目的 pubspec 文件中将 assets 字段的 flavors 子字段添加到 assets 字段。有关更多信息,请参阅 Flutter pubspec 选项 中 assets 字段。
设置默认风味
#您可以让您的应用在启动应用时不指定风味,而是使用特定的风味。为此,您需要在项目的 pubspec 文件中添加 default-flavor 字段。有关更多信息,请参阅 Flutter pubspec 选项 中 default-flavor 字段。
添加独特的构建设置
#如果您有要为特定 Android 产品风味配置的附加构建设置,请参阅 Android 的 配置构建变体。
更多信息
#有关创建和使用风味的更多信息,请查看以下资源: