為 Android 設定 Flutter flavors
本指南將說明如何為 Android 應用程式建立 Flutter flavors。
概述
#在 Android 中,Flutter flavor 代表一個統一的術語,涵蓋多種平台專屬功能。例如,flavor 可以決定特定版本的應用程式所使用的圖示、應用程式名稱、API 金鑰、功能旗標(feature flag)以及日誌等級。
如果你想為 Android 應用程式建立 Flutter flavors,可以直接在 Flutter 中進行。在 Android 裡,Flutter flavor 被稱為 product flavor。
以下範例說明當一個 Android 應用程式擁有兩個 product flavors(staging、production)以及兩個 build types(debug、release)時,所產生的 Android build variants:
| Product flavors | Build types | Resulting build variants |
|---|---|---|
| staging | debug | stagingDebug stagingRelease |
| production | release | productionDebug productionRelease |
設定你的 product flavors
#請依照以下步驟,將兩個名為 staging 和 production 的 Android product flavors 新增到一個名為 flavors_example 的 Flutter 新專案中,並測試專案以確保 flavors 運作正常。
建立一個名為
flavors_example的 Flutter 新專案,並選擇 Kotlin 作為 Android 首選語言。預設情況下,該專案會包含debug和release這兩種 Android build types。consoleflutter create --android-language kotlin flavors_example在
flavors_example專案中新增名為staging和production的 product flavors。在
flavors_example專案中,前往android/app/目錄並開啟build.gradle.kts。在
android {} block內新增flavorsDimension屬性以及productFlavors屬性。請確保android {}區塊同時包含預設的debug和releasebuild types:build.gradle.ktskotlinandroid { ... buildTypes { getByName("debug") {...} getByName("release") {...} } ... flavorDimensions += "default" productFlavors { create("staging") { dimension = "default" applicationIdSuffix = ".staging" } create("production") { dimension = "default" applicationIdSuffix = ".production" } } }
為了確保你已正確完成所有設定,請在 Android 的產品風味(product flavors)上執行你的應用程式。雖然目前設定尚未變更,所以你不會看到任何差異,但你仍然需要確認應用程式可以正常運作。
啟動 Android 模擬器,或連接已啟用開發人員選項的實體裝置。
在終端機中,切換到
flavors_example目錄,然後輸入以下指令來測試staging風味(flavor):consoleflutter run --flavor staging針對
productionflavor,重複前一個步驟。
如果一切運作正常,您就可以開始自訂您的設定了。欲了解更多資訊,請參閱 Customize configurations。
啟動 flavor
#在您為 Android 應用程式建立好 product flavors 之後,可以透過 Flutter 啟動特定的 product flavor。
您可以依照以下步驟,使用 Flutter 命令列介面 (Command Line Interface) 啟動指定的 product flavor:
啟動 Android 模擬器,或連接已啟用開發人員選項的實體裝置。
在終端機中,切換到
flavors_example目錄,並輸入以下指令:
flutter (run | build <subcommand>) --flavor <flavor_name>(run | build <subcommand>):請以以下其中一項取代:run:以偵錯模式(debug mode)執行應用程式。build:建置 APK 或 appbundle。<subcommand>:可為apk或appbundle。
<flavor_name>:請以您的 Android 產品 flavor 名稱取代(例如:staging、production)。
範例:
flutter build apk --flavor staging自訂組態
#在你加入產品風味(product flavors)後,可以針對你的 Android 應用程式進行自訂設定。
建立獨特的應用程式顯示名稱
#如果你有多個產品風味,獨特的應用程式名稱可以讓你快速辨識部署的應用程式所使用的風味。

以下步驟說明如何為一個名為 flavors_example 的專案中的兩個產品風味 staging 和 production,分別加入獨特的應用程式顯示名稱。
在你的 IDE 中更新
build.gradle.kts:在
flavors_example專案中,前往android/app/目錄並開啟build.gradle.kts。在
flavorsDimension區塊中,於staging和production這兩個風味下,新增一個名為app_name的resValue()屬性:build.gradle.ktskotlinandroid { ... 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" ... /> />
針對每個產品 flavor(
staging、production)啟動應用程式,並檢查每個 flavor 的應用程式顯示名稱是否有變更。如需啟動特定產品 flavor,請參考啟動 flavor的步驟。
在 Android App 模擬器中,前往應用程式清單。你應該會看到
Flavors p...和Flavors s...各自的應用程式。若要查看更多
Flavors p...或Flavors s...的資訊,請長按其中一個圖示,然後選擇App info。
建立專屬圖示
#如果你有多個產品 flavor,為每個組態設計專屬圖示可以幫助你快速辨識目前部署的應用程式所使用的 flavor。
![]()
以下步驟說明如何在名為flavors_example的專案中,為兩個名為staging和production的產品 flavor 新增專屬圖示。
準備你的圖示:
使用你偏好的設計工具設計
staging圖示和production圖示。產生
staging圖示和production圖示的不同尺寸版本,並以PNG格式儲存:- mipmap-mdpi(48x48 像素)
- mipmap-hdpi(72x72 像素)
- mipmap-xhdpi(96x96 像素)
- mipmap-xxhdpi(144x144 像素)
- mipmap-xxxhdpi(192x192 像素)
建立 flavor 專屬的資源目錄:
前往
android/app/src目錄。建立一個名為
staging/res的目錄。前往
staging/res目錄。建立下列
mipmap目錄,並將staging圖示的各尺寸版本移至這些目錄:mipmap-mdpi/48x48_staging.pngmipmap-hdpi/72x72_staging.pngmipmap-xhdpi/96x96_staging.pngmipmap-xxhdpi/144x144_staging.pngmipmap-xxxhdpi/192x192_staging.png
針對
productionflavor 的目錄與圖示,重複上述步驟。將所有圖示重新命名為
ic_launcher.png。
在你的 IDE 中,仔細檢查
AndroidManifest.xml的組態:在
flavors_example專案中,前往android/app/src/main並開啟AndroidManifest.xml。確認
android:icon的值為@mipmap/ic_launcher。
針對每個產品 flavor(
staging、production)啟動應用程式,並檢查每個 flavor 的應用程式圖示是否有變更。如需啟動特定產品 flavor,請參考啟動 flavor的步驟。
將資源(Assets)打包
#如果你的應用程式中有僅用於特定 flavor 的資源(assets),你可以設定它們僅在啟動該 flavor 時才會被打包進應用程式。這樣可以避免未使用的資源使你的應用程式包體變大。若要為每個 flavor 打包資源,請在專案的 pubspec 中的assets欄位下新增flavors子欄位。欲了解更多資訊,請參閱 assets 欄位於Flutter pubspec options。
設定預設 flavor
#你可以讓應用程式在未指定 flavor 時,預設使用特定 flavor。為此,請在專案的 pubspec 中新增default-flavor欄位。欲了解更多資訊,請參閱 default-flavor 欄位於Flutter pubspec options。
新增專屬建置設定
#如果你想為特定 Android 產品 flavor 設定額外的建置選項,請參閱 Android 的設定建置變體。
更多資訊
#如需建立與使用 flavor 的更多資訊,請參考以下資源: