前言:這不是一個關於如何在Android應用程序中使用構建類型和產品風格的問題。我瞭解所涉及的基本概念。這個問題更多的是試圖瞭解哪些配置應該在構建類型中指定,哪些配置應該在產品風格中指定,以及是否有必要進行區分。爲什麼構建類型與產品口味不同?
本週,我一直在學習更多關於Android應用程序的gradle配置。我最初認爲自己對構建類型和產品風格有很好的把握,但是我越深入瞭解文檔,就越意識到兩者之間的區別對我來說根本不清楚。
由於有一個定義良好的層次結構(從構建類型中指定的屬性優先於產品風格中指定的屬性),我不明白爲什麼需要區分構建類型和產品口味在所有。將所有屬性和方法合併到產品風格DSL對象中,然後將構建類型作爲(默認)風格維度對待會不會更好?
一些具體的例子,導致我的困惑:
的
signingConfig
屬性可以在兩種類型的建設和產品的口味......但minifyEnabled
(?而且,我認爲,shrinkResources
)設置只能是在構建類型中配置。applicationId
只能在產品口味中指定......而applicationIdSuffix
只能在生成類型中指定!?
的實際問題(S):
在上述的例子:有構建類型的產品VS口味的角色之間有明顯的區別?
如果是這樣,理解它的最好方法是什麼?
如果不是,計劃是否最終將構建類型和產品風格合併到一個可配置的DSL對象中?
「其配置應該在生成類型,其配置應該在一個產品的風味來指定來指定」 - - 構建類型模擬您的開發生命週期(調試,「dogfood」,發佈等)。產品口味爲您的分銷策略建模(Google IAP vs. Amazon IAP vs. BlackBerry IAP等)。這些是獨立的概念。至於其他方面,我會想象有一些技術原因與實施有關,它們是如何設定DSL的,因此如果有合併計劃,我會感到驚訝。 – CommonsWare
@CommonsWare在高層次上有很多意義。是的,例如,類型/風格的順序處理可能會限制如何以及何時可以更改整個「applicationId」。 – stkent