Android使用Gradle實現多渠道打包

Android機動車發表於2017-12-14

這裡我們主要用到gradle檔案中的buildTypesproductFlavors,今天我們主要研究下它倆。

先上圖:

這裡寫圖片描述

buildTypes

構建型別 預設情況下,Android外掛自動為專案構建一個debug和一個release版本的應用。這兩個版本的不同主要體現在在非開發機上的除錯功能以及APK的簽名方式。debug版本使用一個用公開的name/password建立的key來簽名(這樣構建的時候就不需要提示輸入密碼了)。release版本在構建的時候不會進行簽名,而是稍後在做。

當然我們還可以定義其他型別,如preview版本等。

其屬性有:

這裡寫圖片描述

就不再一一介紹了,主要介紹一下常用的幾個:

  • debuggable:標誌是否可以debug除錯
  • signingConfig:標誌簽名配置
  • proguardFiles:標誌混淆檔案
  • minifyEnabled:標誌是否開啟混淆
  • buildConfigField:自定義全域性變數,供BuildConfig中建立和呼叫,其格式為:
buildConfigField "boolean", "LOG_DEBUG", "false"
複製程式碼

productFlavors

productFlavors顧名而思義,就是用於定義產品的特性,這是每個產品不同的地方。有了它我們可以用同一套程式碼建立不同的產品。設定productFlavors的方法如下:

在build.gradle中加入productFlavors結構

這裡寫圖片描述

在其中每一種產品中可定義不用的屬性,已建立不同的應用。

在每一種產品中,都可以類似defaultConfig進行屬性設定,也有一些特殊屬性,看個示例:

這裡寫圖片描述

  • applicationId: 應用包名
  • versionCode:版本號
  • versionName:版本名
  • buildConfigField:自定義屬性,和buildTypes中類似
  • manifestPlaceholders:manifest檔案中屬性

好了,我們一起使用productFlavors進行多渠道打包:

1、gradle中建立各產品:

這裡寫圖片描述

如果在各產品中宣告不同的包名,那麼它們就是不同的應用了,也就是說,可以同時安裝在一個手機上。但我們不想這樣,除了友盟渠道號不同外,其他都相同,所以我們只設定友盟渠道號:

這裡寫圖片描述

2、Sync Now

Sync Now後,您就會發現,在Build Variants中:

這裡寫圖片描述

您已經發現: 版本數=buildTypes productFlavors*

然後您就可以執行各渠道對應的應用了。

3、清單檔案中使用

定義了umeng_key和umeng_channel有什麼用呢,我們知道manifestPlaceholders中就是定義清單檔案的站位變數,所以接下來一個在清單檔案中運用:

這裡寫圖片描述

4、打包上線即可

今天只是簡單的總結了下使用Gradle進行多渠道打包上線,有不對的地方希望大家指出。

獲取更多精彩內容,請關注我的微信公眾號——Android機動車

Android使用Gradle實現多渠道打包

相關文章