productFlavors 心得整理

前言

程式在整理時,可能會因為某些需求把版本分成付費版或免費版,也有可能區分成測試版或穩定版,有些時候同一個專案也會遇到某部分的功能需要區隔開來暫時不開放.

如果要在程式碼去做一些限制或分成多個專案來管理,就會變得很麻煩,如果有多個專案,需要修改 Bug 時,就要同時維護多個檔案.因次可以透過設定 build.gardle 來解決這個問題.

比較詳細的說明,如果有不明白的地方可以查看

build.gradle 配置

流程

首先做一個基礎的設定在 build.gradle 中加入 productFlavors 的區分,這裡區分成了穩定 stable 及開發 dev 兩種,也可以區分成 free 及 paid 依專案的需求來設定.


點選 Sync,成功後會有提示

Sync 說明

Log 提示

點選專案左下角 Build Variants 來選擇 Active Build Variant


點選下拉的箭頭,就可以選擇想要執行的版本


提示:如果不想直接在 build.gardle 輸入也可以透過操作介面來做設定
開啟 project structure,選擇 Build Variants


選擇 Flavors 在點選 +,選擇 Add Flavor Dimension


輸入 dimension name


顯示結果
Add Product Flavor


輸入 product flavor name


可以調整的選項更多包含 versoin 及支援版本,完成後 Apply 即可



結果與手動輸入效果相同


解釋

用一個比較簡單的比喻來說,現在只是把專案分成了兩個不同的版本可以分開運行.
但如果現在想把設計師給的 UI 套上,那麼此時改如何處理這兩套 UI 圖檔,該如何把這兩套圖餵給不同的版本?

1. New Image Asset


2. 設定檔案


3. 選擇要新增的版本,選擇 stable


4. 此時在 dev 查看不到,stable 已經可以查看到,圖片名稱 ic_launcher1_background.xml



比較直觀地用資料夾來看,在 res 這一層,選擇 stable variants 時
就會去取 stable 資料夾下的檔案



用 Project 下去查看,會特別用括號顯示,方便查看是共用的還是給單一的 Variant


如果 stable 跟 dev 檔案共用時,就會去取得 main 下 res 檔案,不用把一樣的圖再特別放置.

另外一個角度

如果 stable 有支援金流的操作而 dev(開發版本) 沒有,那麼該如何操作?
這個部分一直沒有找到比較方便的方法,只能使用土法煉鋼的方式.

流程 :
build.gardle 加入設定


手動新增兩個資料夾,在 src 下與 main 同一層

名稱分別是 stable, dev

下一步比較複雜,先看圖 com 資料夾旁已經顯是 (stable)


但還是有一個共用的 com,com (stable) 資料夾只會在 Variant 是 stable 狀態下顯示 


解釋

在 com (stable) 資料夾下又新增了一個相同的路徑 froggy/nsfw_gbike/time,總共新增了四個資料夾一層一層下去,最後是 money 的檔案,而這個檔案只有在選中 Active Build Variants 是 stable 時才會顯示.如果選中 com (dev) 時是不會顯示的如下圖.


com (dev) -> froggy -> nsfw_gbike 下是找不到 stable 裡的檔案.
如過在單獨的 Active Build Variant 下需要使用獨立的資料夾,可以使用這個方法.

額外

AndoirdManifest.xml 也是可以單獨拉出來設定的,只不過需要確認是否會衝突.

後記

productFlavors 網路上有很多的資訊,但很多只有寫到前面一點點的資訊,剛瀏覽就結束了,每篇文章都是點到為止,變成要找資訊很費時間,所以稍微整理了一下資訊,如果有錯誤歡迎告訴我.

END

留言

熱門文章

2021申請 Android Developer 開發者帳號及上架步驟

Generate Signed Bundle / APK(s) & Bundle Tool 基本使用 & .aab安裝方式

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