參考連接html
Build Typesandroid
Product Flavorsapp
Product flavors 表明app發行的不一樣版本,例如免費版和付費版,可讓不一樣的 Product flavors 使用不一樣的代碼和資源文件,或者只是定義不一樣的渠道包。ui
defaultConfig 屬於 Product Flavors,至關於默認的基本配置debug
Build Variantscode
Manifest Entrieshtm
build variant 的部分配置信息會直接覆蓋到 manifest 文件上去,例如 applicationId、versionName、target SDK version 等。ci
也能夠經過 manifestPlaceholders 來配置跟不一樣的 build variant 相關的變量資源
defaultConfig { manifestPlaceholders = [NAME:"value"] }
而後這樣在 manifest 中使用變量開發
<meta-data android:name="TYPE_VALUE" android:value="${NAME}" />
Dependencies
Signing
能夠在不一樣的 buildTypes 中配置 signingConfig 來選擇簽名配置,構建系統會使用默認的key去打包 debuggable 爲 true 的版本,release版本的 signingConfig 須要本身配置。
ProGuard
APK Splits
不一樣目錄下的代碼和資源文件會按照是否須要以及相應的優先級合併到一塊兒,組合成最後的 buildVariant 所對應的代碼
src/main/
src/buildType/
src/productFlavor/
src/productFlavorBuildType/
當不一樣目錄的代碼有衝突時,會按照下面的優先級來選擇
build variant > build type > product flavor > main source set > library dependencies