productFlavors 心得整理
前言
程式在整理時,可能會因為某些需求把版本分成付費版或免費版,也有可能區分成測試版或穩定版,有些時候同一個專案也會遇到某部分的功能需要區隔開來暫時不開放.
如果要在程式碼去做一些限制或分成多個專案來管理,就會變得很麻煩,如果有多個專案,需要修改 Bug 時,就要同時維護多個檔案.因次可以透過設定 build.gardle 來解決這個問題.
比較詳細的說明,如果有不明白的地方可以查看
流程
首先做一個基礎的設定在 build.gradle 中加入 productFlavors 的區分,這裡區分成了穩定 stable 及開發 dev 兩種,也可以區分成 free 及 paid 依專案的需求來設定.
Sync 說明 |
Log 提示 |
點選專案左下角 Build Variants 來選擇 Active Build Variant
點選下拉的箭頭,就可以選擇想要執行的版本
開啟 project structure,選擇 Build Variants
顯示結果 |
可以調整的選項更多包含 versoin 及支援版本,完成後 Apply 即可
結果與手動輸入效果相同
解釋
用一個比較簡單的比喻來說,現在只是把專案分成了兩個不同的版本可以分開運行.
但如果現在想把設計師給的 UI 套上,那麼此時改如何處理這兩套 UI 圖檔,該如何把這兩套圖餵給不同的版本?
1. New Image Asset
4. 此時在 dev 查看不到,stable 已經可以查看到,圖片名稱 ic_launcher1_background.xml
就會去取 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
留言
張貼留言