APP多渠道打包


多渠道打包的概念:

  打包是指使用證書文件對app簽名生成一個apk文件。

  多渠道打包指的就是我們的app在開發完成之后需要投放到不同的市場,比如說Google市場、百度市場等,為了統計應用在各個市場的用戶下載量、新增用戶量等數據,需要把他們打包成不同的包投放到不同的市場,每種包都包含了各自市場的信息。

多渠道打包的實現:

  目前多渠道打包主要有兩種實現方式:一種就是gradle變量動態替換,第二種就是第三方公司推出的批量打包方案。

gradle動態變量替換:

  首先,將manifest文件中的meta-data標簽的value值用占位符替換。即${channel}

<meta-data android:name="UMENG_CHANNEL" android:value="${channel}" />

  然后,在build.gradle文件中,添加productFlavors節點,配置變量的所有取值集合。

//渠道配置,通過產品微調的功能來配置
productFlavors {
    //添加一個產品配置項,名稱是WanDouJiaChannel
    WanDouJiaChannel {
        //表示清單文件中有一個占位符channel,編譯的時候會將它的值替換為wandoujia
        manifestPlaceholders = [channel:"wandoujia"]
    }
​
    //再添加一個小米AppStore渠道
    XiaoMiChannel {
        manifestPlaceholders = [channel:"xiaomi"]
    }
​
    //再添加一個應用寶渠道
    YingYongBaoChannel {
        manifestPlaceholders = [channel:"yingyongbao"]
    }
​
    //...為所有渠道添加配置
}

  最后,通過打包生成全部的apk文件。

美團自動化打包:

  原理:先准備一個簽過名的apk文件,然后復制多個apk文件,再向每個apk文件的META-INF目錄中寫入空文件,而這個文件的名稱正好命名為渠道名。這樣下來,每個apk文件的META-INF目錄下都有一個標識了渠道名稱的空文件。然后我們在app代碼中,動態讀取META-INF目錄下的那個空文件,就獲取到了渠道名,然后傳遞給友盟SDK。

  具體做法如下:

  在美團提供的工具中,channel.txt文件是所有的取到信息,如果需要新的,則在下面繼續添加。包內有一個MultiChannelBuildTool.py文件這個文件是用python寫的腳本程序,作用是讀取channel中的渠道信息,然后賦值很多個apk文件,再將讀取的取到信息一次寫入每個apk文件的META-INF目錄下,就是那個空文件。在app代碼中,我們使用美團提供的ChannelUtil工具類,讀取出META-INF目錄下的空文件,得到當前app的渠道信息,因此原來manifest文件中的meta-data的取到標簽要去掉了,原來gradle的那些渠道信息配置也都要刪除。代碼如下:

//獲取META-INF目錄下的渠道信息
String channel = ChannelUtil.getChannel(this);
//將渠道信息設置給UmengSDK
String appKey = "58b7fe1aae1bf82ad4001a1d";
MobclickAgent.UMAnalyticsConfig config = new MobclickAgent.UMAnalyticsConfig(this,appKey,channel);
MobclickAgent.startWithConfigure(config);

代碼編寫完成之后,導出一個簽名的apk文件,然后放到PythonTool目錄下,該apk文件目前沒有任何渠道信息,只是功python腳本來復制用的。

最后,雙擊執行MultiChannelBuildTool.py文件,當然前提是安裝python運行環境。此時會復制出所有apk文件,並且每個apk文件的META-INF目錄下都會出現新的空文件,文件名就是渠道名。

 

個人總結:app多渠道打包主要有這么兩種方式,一種是gradle替換動態變量的方式,主要實現是首先在清單文件的applcation節點下添加meta-data條目,並且將其value值設置為占位符(${channel}),然后去build.gradle文件中添加productFlovars節點,在該節點下添加各個渠道的信息,最后打包即可。還有一種是通過第三方的工具來實現。用的多的就是美團的自動打包工具。它的實現原理主要是:我們的apk文件一旦被修改就需要重新簽名,而當我們在apk文件的META-INF目錄下添加一個空文件的時候卻不需要重新簽名。美團打包工具就是利用了這個特性來實現打包,節省打包時間。主要實現是通過一個python的腳本工具。

首先在app中添加代碼,獲取META-INF目錄下空文件的文件名,這個文件名就是對應的渠道信息。然后將一個沒有取到信息的安裝包使用腳本工具生成多個安裝包。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM