Android Studio Gradle 多渠道打包

來源:互聯網
上載者:User

標籤:android   android studio   gradle   


之前整合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檔案更改如下:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.tubb.cityindex" >    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.tubb.cityindex.CitySelectorActivity"            android:label="@string/app_name" >            <intent-filter><meta-data android:name="UMENG_CHANNEL" android:value="${channel}"/>    </application></manifest>

最後只需要在工程app目錄下現在build-types檔案夾添加channels設定檔
// 百度應用市場baidu// 360應用市場m360

測試代碼託管在(這裡),歡迎大夥來討論~~







Android Studio Gradle 多渠道打包

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.