1 主要應用場景
1) 同一個應用的不同版本。 例如一個免費的版本和一個收費的專業版本。
2) 同一個應用需要打包成不同的apk以發佈Google Play Store。點擊此處查看更多詳細信息。
3) 同一個應用需要打包成不同的apk以發佈Google Play Store。、點擊此處查看更多詳細信息。
2 構建規則
2.1 默認配置(defaultConfig)
如果項目中沒有定義flavor,則直接使用默認的flavor(defaultConfig) + BuildType。defaultConfig是沒有名字的,所以生成的BuildVariant列表看起來就跟Build Type列表一樣。
2.2 Product Flavor
Product Flavor + Build Type = Build Variant,根據排列組合的方式構建變種版本,每一種組合(包含Build Type和Product Flavor)就是一個Build Variant(構建變種版本)。例如:有Release和Debug兩種Build Type,Flavor1和Flavor2兩種變種版本,則可以構建2*2=4種變種版本(Flavor1Release、Flavor1Debug、Flavor2Release、Flavor2Debug)。
2.3 SourceSet
每個變種版本都可以有自己的sourceSet,如下圖:
構建時對不同的sourceSet進行處理時,符合下面的股則:
1) 多個文件夾中的所有的源代碼(src/*/java)都會合並起來生成一個輸出。
2) 所有的Manifest文件都會合併成一個Manifest文件。類似於Build Type,允許Product Flavor可以擁有不同的組件和權限聲明。
3) 所有使用的資源(Android res和assets)遵循的優先級爲Build Type會覆蓋Product Flavor,最終覆蓋main sourceSet的資源。
4) 每一個Build Variant都會根據資源生成自己的R類(或者其它一些源代碼)。Variant互相之間沒有什麼是共享的