Android 多渠道打包
需要了解的知識
1、為什么需要多渠道打包
2、多渠道打包的方式及其優(yōu)缺點配置及操作步驟,是否存在風險
3、打包后各個apk真正區(qū)別是什么
4、涉及到的知識就是版本比較多的時候,需要自定義apk名字達到好區(qū)分的目的
針對上述問題進行一一分析
1、為什么需要多渠道打包
原因:在打包的時候添加標識,當請求網(wǎng)絡的時候會攜帶渠道信息,這樣后臺能進行相應運營統(tǒng)計。
2、多渠道打包的方式:
1、友盟多渠道打包方式(傳統(tǒng)方式)
①、在清單文件中配置meta-data文件,渠道名一般由產(chǎn)品經(jīng)理定義,代碼如下:
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
②、在build.gradle中android{}中配置如下代碼:
productFlavors{
wandoujia{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi{
manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
③、優(yōu)化
productFlavors{
wandoujia{}
xiaomi{}
}
//下面就是優(yōu)化增加的代碼
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
④、在代碼中獲取渠道信息,代碼如下:
private String getChannel() {
try {
PackageManager pm = getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(),
PackageManager.GET_META_DATA);
return appInfo.metaData.getString("UMENG_CHANNEL");
} catch (PackageManager.NameNotFoundException ignored) {
}
return "";
}
⑤在app/build/outputs/apk中就能看到自動打好的渠道包
優(yōu)缺點:
這種打包方式比較安全,是傳統(tǒng)打包方式。
缺點是:性能比較低
2、美團打包方式:
原理:apk文件其實可以看做是一個壓縮包,我們把一個Android應用包當作zip文件包進行解壓,然后發(fā)現(xiàn)在簽名生成的目錄下(META-INF)添加一個空文件不需要重新簽名。利用這個機制,該文件的文件名就是渠道名。這種方式不需要重新簽名等步驟,非常高效。
美團打包工具下載地址:
https://github.com/GavinCT/AndroidMultiChannelBuildTool
優(yōu)缺點:
優(yōu)點是:打包速度快
缺點是:如果google修改了打包規(guī)則,(META-INF)添加空文件需要重新簽名,那么這種方式就不可取。不安全,渠道商可以通過工具修改渠道,如果一個渠道商,通過網(wǎng)絡劫持和篡改渠道的組合方式來獲取 暴利,對于程序開發(fā)者來說可能會存在著巨大的經(jīng)濟損失
打包后各個apk真正區(qū)別
就是給每一個apk安裝包添加了標簽,有了特殊標識,根據(jù)這些標識,你可以針對不同的apk進行統(tǒng)計分析??梢宰鳛檫\營下一步的公關方向提供參考。
自定義apk名字
當多渠道打包的時候,打出的包都是按照一定規(guī)則生成的,如果打多個版本的包時,因為規(guī)則相同,我們就不能很好的區(qū)分哪個是哪個版本的,這個時候就需要自定義apk名字,把版本號或者是版本名字放在規(guī)則中,這樣打包的時候就會帶上版本信息,這樣就我們就很好的區(qū)分開了。
詳細可以參考此文自定義apk名字的文章
https://www.cnblogs.com/bluestorm/p/6228085.html