使用 Flavor 切分 Flutter App 發布環境
本篇教學是透過不同的 flavor 來發佈到各自不同的商店,假設今天有 debug (以下皆用 dev) 以及 production (以下皆用 prod) ,來做環境的控制,那在發佈時,會希望個別的版本有不一樣的 key 去做簽署,而不互相衝突,以下的教學都是以尚未發布到 play store 的 app 為前提!
使用 Flavor 可以參考此篇教學,不再贅述:
以下教學參照官方教學,再依照 flavor 另作些微修改,使用前應先熟悉個步驟的意義為何
產生簽署用 keystore
Android 上架需要先產生 keystore 來簽署,會由開發者自行保管,首先產生 dev 環境用 keystore
在 terminal 輸入以下指令
keytool -genkey -v -keystore ~/dev_key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias dev
~/dev-key.jks
為存放 dev key
的位置,這裡可以直接存放到 <appdir>/android/app/dev-key.jks
- -alias dev 為 key 的別名,稍後會使用到,可以用自己習慣的名字
- 產 key 的過程會產生 6 位數以上的密碼,請保留住後續會使用到
- 另外 prod 環境是將
dev-key.jks
改為prod-key.jks
,-alias dev
改為-alias prod
產生 keystore 參考用檔案
建立一個 key.properties 放在<app dir>/android/key.properties
並在此檔案輸入以下內容
storePassword=password
keyPassword=password
devKeyAlias=dev
prodKeyAlias=prod
storePassword, keyPassword 為剛剛產生 keystore 輸入的密碼
調整 gradle 的 signingConfigs
打開 app 級別的 bulild.gradle 目錄為 android/app/build.gradle
- 在 android 區塊最前面輸入新程式碼
2. 在 buildTypes 前修改 signingConfigs 區塊
3. 在 buildTypes 區塊裡修改為
4. 在 productFlavor 裡新增以下
輸出 AppBundle
這是最後一步也是最重要的一步了,在 termainl 輸入
flutter build appbundle --release --flavor=prod --target lib/main.dart
--flavor=prod
為你想輸出的環境
--target lib/main.dart
為主檔案,像我本身的專案有分 main.dart
(prod) 以及 main_dev.dart
(dev)