這裡我們主要用到gradle檔案中的buildTypes和productFlavors,今天我們主要研究下它倆。
先上圖:
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機動車!