###多渠道打包概念
>* 發(fā)布到不同渠道上的apk,標(biāo)記不同的渠道,目的是為了統(tǒng)計該渠道的下載量,留存率等等數(shù)據(jù)
>* 了解下載量
>* 針對性的打廣告
###渠道統(tǒng)計的核心
1 為apk打標(biāo)記(渠道的標(biāo)識)
2 運行apk的時候取出標(biāo)記
3 上傳標(biāo)記給服務(wù)器統(tǒng)計
###友盟渠道統(tǒng)計的實現(xiàn)
1. 打標(biāo)記:在清單文件中的meta-data結(jié)點下配置渠道
2. 運行apk的時候,友盟的api,會取出meta-data的渠道信息
3. 上傳渠道標(biāo)記到友盟自己的服務(wù)器,用戶就可以通過友盟的后臺查看具體的渠道統(tǒng)計了
###多渠道打包的方式
0. 一個一個分別導(dǎo)出
1. ant:要求比較高,需要懂得如何編寫ant腳本,但是編寫好之后,執(zhí)行一個命令就可以
2. 友盟的打包工具
3. Gradle 多渠道打包 ,比較新,使用比較簡單
4. 快速打包
###如何選擇
1. 如果只是修改`渠道名`可以考慮用`umeng打包工具`或者`gradle多渠道打包`,其實絕大數(shù)公司情況屬于此種情況;
2. 打包過程需要`定制化的配置`,可以考慮用ant或者gradle定制打包,可以參考`http://tech.meituan.com/mt-apk-adaptation.html`,說明的情況.
1.自定義包名
2.自定義簽名
###umeng打包工具
####下載地址
`https://github.com/umeng/umeng-muti-channel-build-tool`
####步驟
看具體視頻
###gradle多渠道打包
####1. 在AndroidManifest.xml中定義占位符
####2. 在module的gradle腳本中替換占位符
productFlavors {
wangdoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wangdoujia"]
}
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
anzhi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "anzhi"]
}
}
productFlavors {
Wandoujia {}
_360 {}
baidu {}
xiaomi {}
tencent {}
taobao {}
...........
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders= [UMENG_CHANNEL_VALUE:name]
}
###快速打包(1分鐘打900個渠道包,不是夢)
####參考網(wǎng)址:
http://www.open-open.com/lib/view/open1418262988402.html
http://m.blog.csdn.net/blog/u013651247/42426227
####準(zhǔn)備
下載python: https://www.python.org
下載別人寫好的腳本:? https://github.com/GavinCT/AndroidMultiChannelBuildTool
####步驟
1. 安裝Python
2. `..PythonTool\info\channel.txt`,里面去添加自己想要的渠道
3. 放置apk到`MultiChannelBuildTool.py`所在目錄
4. 雙擊`MultiChannelBuildTool.py`執(zhí)行腳本,完成多渠道打包;
5. 拷貝`ChannelUtil.java`到項目中
6. 代碼設(shè)置渠道`AnalyticsConfig.setChannel(ChannelUtil.getChannel(this));`
###新一代Android渠道打包工具:1000個渠道包只需要5秒
>* 參考:http://www.open-open.com/lib/view/open1453684213136.html(新一代Android渠道打包工具:1000個渠道包只需要5秒)
####步驟
1.修改項目根目錄的 build.gradle
buildscript {
......
dependencies{
// add packer-ng
classpath 'com.mcxiaoke.gradle:packer-ng:1.0.4'
}
}
2.修改Android模塊的 build.gradle
apply plugin: 'packer'
dependencies {
// add packer-helper
compile 'com.mcxiaoke.gradle:packer-helper:1.0.4'
}
3.Java代碼中獲取當(dāng)前渠道(在應(yīng)用程序啟動的時候),在Application子類中的onCreate()方法中
public class MyApplication extends Application {
@Override
public void onCreate() {//程序的入口方法
....
// 如果沒有使用PackerNg打包添加渠道,默認(rèn)返回的是""
// com.mcxiaoke.packer.helper.PackerNg
final String market = PackerNg.getMarket(this);
// 或者使用 PackerNg.getMarket(Context,defaultValue)
// 之后就可以使用了蹲蒲,比如友盟可以這樣設(shè)置
AnalyticsConfig.setChannel(market);
....
}
}
4.添加打包的簽名,可以通過圖形界面添加
signingConfigs {
//add
releaseConfig {
keyAlias 'itheima'
keyPassword 'itheima'
storeFile file('C:/itheima.jks')
storePassword 'itheima'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//add
signingConfig? signingConfigs.releaseConfig
}
}
5.創(chuàng)建markets.txt放到根目錄,#號后面是注釋,可有可無
Google_Play#play store market
Gradle_Test#test
SomeMarket#some market
HelloWorld
6. 通過命令進行打包
gradle -Pmarket=markets.txt clean apkRelease
7.效果
