Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Studio Gradle 多渠道打包

Android Studio Gradle 多渠道打包

編輯:關於Android編程


之前集成UMeng提供的一些服務時接觸過多渠道打包,UMeng要根據各應用市場渠道號來進行一些統計和分析,比如各渠道的下載數、活躍度、自動更新等等。UMeng提供了一個打包工具(這裡),但官方很久沒有更新了,自己也切換到Android Studio IDE上,Gradle插件可以很好的實現多渠道打包的需求。
多渠道打包的大概思想是(針對UMeng): 動態的更改AndroidManifest.xml文件中的一個屬性值(渠道號),從而來標識不同的渠道。
Gradle的Product flavors特性(這裡)可以很方便的實現功能,簡單的說下實現方式:不同的flavor指定不同渠道的AndroidManifest.xml文件。這種方式有很大的弊端,重復性工作太多了,只為了更改其中的一個屬性而要維護太多的AndroidManifest.xml文件。可喜的是Android Studio 1.0 提供了更強大的Manifest Merger(這裡)功能,其中的Placehodler Support(這裡)特性可以大大的簡化上面的做法,不需要再維護這麼多的AndroidManifest.xml文件了!但把所有的渠道都配置在build.gradle文件中畢竟不好維護(應用市場多達幾十個),下面主要介紹通過程序的方式來讀取配置文件,生成不同的渠道包。
通過程序的方式也要借助於Placehodler Support特性,所以Android Studio請升級到1.0以上。
具體的思路是通過讀取配置文件中的渠道號來動態的生成build type。具體的代碼如下:
// 多渠道打包
def channels() {
    if (project.hasProperty(channel)) {
        // 渠道號配置文件路徑
        def path = ./build-types/channels.txt
        file(path).eachLine { line ->
            if(!line.startsWith(//)){ //剔除注釋行
                android.buildTypes.create(line, {
                    manifestPlaceholders = [ channel:line ]
                })
            }
        }
    }
}

AndroidManifest.xml文件更改如下:



    
        
            
    


最後只需要在工程app目錄下現在build-types文件夾添加channels配置文件
// 百度應用市場
baidu
// 360應用市場
m360
 






  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved