product Flavors 進階處理 (過濾不需要使用的 variant, 如何處理不同 Variant 字串)

前言

基本的 productFlavors 處理可以查看 productFlavors 基本技巧,本篇文章主要是針對過濾不需要使用的 Variant 以及如何處理字串問題.

基本設定

在 flavorDimensions 只有設定一個維度的情況下

只是區分成了穩定版本及開發版本
分別是 stable, dev

最後會包含 Release 及 Debug 總共會有 4 個可以選擇

兩個維度的情況.flavorDimensions 分別是 “appstate", "mode"


程式碼設定

會產生的 Build Variant

以上是設定完成後,正常會產生的情況.
但如果想要設定成在 Stable 的情況下才把 Amazon 金流的功能開啟以及 Dev 狀態下把 Facebook 金流開啟,其他都關閉該如何設定.


只保留 Stable Amazon 和 Dev Facebook 的金流的功能,將打叉的部分關閉

variantFilter 功能設定

在 build.gradle 設定過濾條件


條件包含 dimensions 的限制及 Release / Debug 的限制
1.    buildState -> 第一個 FlavorDimensions
2.    mode -> 第二個 FlavorDimensions
3.    判斷完成後 setIgnore -> true

補充 (另外一種比較精簡的寫法)


設定完成結果

ProductFlavors 設定下字串處理

處理 BuildConfig 字串

假設遇到的情境是在不同的 Variant 下會使用到不同的字串,可以在 buildConfig 下依據不同的版本去查看當前的設定.

Ctrl + Shift + F 搜尋 buildConfig

確認可以搜尋到檔案,如果搜尋不到請執行 Make Project


BuildConfig 內容

實作

在 build.gradle 內設定

在 build.gradle defaultConfig 設定一個 default WEB_URL_CASH

在 productFlavors 可以分別設定一個網址,在執行時就會依據設定的內容去讀取
要注意字串之間需要用 “\ 字串 \” 斜線符號,在前後將字串包住,否則會錯誤

執行一個測試 function

在 AmazonCashFlow variant 下執行結果

在 FaceBookCashFlow variant 下執行結果

處理一般 Resource 資料夾下字串

以 App 名稱為例子,分別需要有不同的命名,可以在 build.gradle 設定

分別對 app_name 設定


要注意 values 下 string.xml 不能重複定義


重複設定會錯誤, Duplicate resources

更改 values 下 string.xml 的定義名稱後,重新執行就會帶入 build.gradle 所設定的值


END

後記

如果這篇文章對於你有幫助,可以幫忙分享給更多的人,如果文章內容有誤,可以在下方留言告知.


留言

熱門文章

40 個可以改變寫程式技巧的秘訣

如何創造出難以維護的程式碼

雲端硬碟比較,哪種硬碟最推薦? (Google 雲端硬碟, OneDrive, DropBox, iCloud)