1. 程式人生 > >Gradle for Android——構建變體

Gradle for Android——構建變體

當你在開發一個app,通常你會有幾個版本。大多數情況是你需要一個開發版本,用來測試app和弄清它的質量,然後還需要一個生產版本。這些版本通常有不同的設定,例如不同的URL地址。更可能的是你可能需要一個免費版和收費版本。基於上述情況,你需要處理不同的版本:開發免費版,開發付費版本,生產免費版,生產付費版,而針對不同的版本不同的配置,這極大增加的管理難度。

Gradle有一些方便的方法來管理這些問題。我們很早之前談過debug和release版本,現在我們談到另外一個概念,不同的產品版本。構建版本和生產版本通常可以合併,構建版本和生產版本的合併版叫做構建變種。

這一章我們將學習構建版本,它能使得開發更有效率,並且學習如何使用它們。然後我們會討論構建版本和生產版本的不同,以及如何將其合併。我們會探討簽名機制,如何針對不同的變種簽名等。

構建版本 在Gradle的Android外掛中,一個構建版本意味著定義一個app或者依賴庫如何被構建。每個構建版本都要特殊的一面,比如是否需要debug,application id是什麼,是否不需要的資源被刪除等等。你可以定義一個構建版本通過buildTypes方法。例如:

android {
       buildTypes {
           release {
               minifyEnabled false
               proguardFiles getDefaultProguardFile
                 ('proguard-android.txt'
), 'proguard-rules.pro' } } }

這個檔案定義了該模組是release版本,然後定義了proguard的位置。該release版本不是唯一的構建版本,預設情況下,還有個debug版本。Android studio把它視為預設構建版本。

建立自己的構建版本 當預設的構建版本不夠用的時候,建立版本也是很容易的一件事,建立構建版本你只需要在buildTypes寫入自己的版本。如下所示:

android {
    buildTypes {
        staging {
            applicationIdSuffix ".staging"
versionNameSuffix "-staging" buildConfigField "String", "API_URL", "\"http://staging.example.com/api\"" } } }

我們定義了一個staging版本,該版本定義了一個新的application id,這讓其與debug和release版本的applicationID不同。假設你使用了預設的配置,那麼applicationID將會是這樣的:

  • Debug:com.package
  • Release:com.package
  • Staging:com.package.staging 這意味著你可以在你的裝置上安裝staging版本和release版本。staging版本也有自己的版本號。buildConfigField定義了一個新的URL地址。你不必事事都去建立,所以最可能的方式是去繼承已有的版本。
android {
       buildTypes {
           staging.initWith(buildTypes.debug)
           staging {
               applicationIdSuffix ".staging"
               versionNameSuffix "-staging"
               debuggable = false
           } 
        }
}

initWith()方法建立了一個新的版本的同時,複製所有存在的構建版本,類似繼承。我們也可以複寫該存在版本的所有屬性。