AS中的Gradle文件配置

AS中的Gradle文件配置

參考連接html

總覽

Android app module 的構建過程

構建過程

自定義構建配置

Build Typesandroid

  • Build types 一般用於定義開發週期中的不一樣階段,例如在 debug 階段開啓debug選項, release 階段開啓代碼壓縮、代碼混淆並使用正式的key對apk進行簽名。

Product Flavorsapp

  • Product flavors 表明app發行的不一樣版本,例如免費版和付費版,可讓不一樣的 Product flavors 使用不一樣的代碼和資源文件,或者只是定義不一樣的渠道包。ui

  • defaultConfig 屬於 Product Flavors,至關於默認的基本配置debug

Build Variantscode

  • build variant = product flavor + build type, Gradle會把 product flavor 和 build type 的配置組合在一塊兒,造成一個 build variant 的配置,由系統自動生成。

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

  • 構建系統經過 dependencies 來管理本地依賴文件和遠程倉庫依賴。

Signing

  • 能夠在不一樣的 buildTypes 中配置 signingConfig 來選擇簽名配置,構建系統會使用默認的key去打包 debuggable 爲 true 的版本,release版本的 signingConfig 須要本身配置。

    • 一個 applicationId 惟一肯定一個apk
    • 相同的 applicationId,打包的key不一樣的話,以最早發佈的apk的key爲準

ProGuard

  • 不一樣的 build variants 能夠採用不一樣的 ProGuard rules file,當配置了多個時,會把它們合併到一塊兒。

APK Splits

  • 可使用指定的代碼和資源文件來打包對應不一樣分辨率的apk。(當你的apk爲了支持不一樣分辨率致使體積在100M以上時,才推薦這麼作)

源代碼設置

不一樣目錄下的代碼和資源文件會按照是否須要以及相應的優先級合併到一塊兒,組合成最後的 buildVariant 所對應的代碼

src/main/

  • This source set includes code and resources common to all build variants.

src/buildType/

  • only for a specific build type.

src/productFlavor/

  • only for a specific product flavor.

src/productFlavorBuildType/

  • only for a specific build variant.

當不一樣目錄的代碼有衝突時,會按照下面的優先級來選擇

build variant > build type > product flavor > main source set > library dependencies

相關文章
相關標籤/搜索