概念:
- 發(fā)布到不同渠道的app,使用不同的標(biāo)記來標(biāo)識,以便于統(tǒng)計數(shù)據(jù)
原理:
- 為apk打標(biāo)記(渠道的標(biāo)識)
- 運行apk的時候取出標(biāo)記
- 上傳標(biāo)記給服務(wù)器統(tǒng)計
具體實現(xiàn)(以友盟為例)
- 使用Gradle進行多渠道打包
- 在配置文件配置meta-data標(biāo)簽
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"/>
- 在app目錄下build.gradle配置
signingConfigs {
config {
keyAlias 'key別名'
keyPassword 'key密碼'
storeFile file('../app/sobig.jks')
storePassword 'jks密碼'
}
}
defaultConfig {
applicationId "com.saipeisi.sobig"
minSdkVersion 14
targetSdkVersion 21
versionCode 2010000
versionName "1.0.0"
signingConfig signingConfigs.config
// dex突破65535的限制
multiDexEnabled true
// 默認(rèn)是umeng的渠道
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]
}
productFlavors {
wandoujia {}
_360 {}
baidu {}
xiaomi {}
tencent {}
sougou {}
oppo {}
mumayi {}
meizu {}
Lenovo {}
kuchuan {}
jinli {}
jifeng {}
huawei {}
sobig {}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
buildTypes {
debug {
signingConfig signingConfigs.config
}
release {
signingConfig signingConfigs.config
}
}
- 使用開源項目MultiChannelBuildTool快速打包
注意:原理是將一個空文件插入到已簽名的包的MATE-INFO目錄下漫萄,在app初始化的時候使用ChannelUtil.java獲得對應(yīng)的渠道標(biāo)識立润,發(fā)送到自己服務(wù)器或者通過友盟api初始化進行數(shù)據(jù)統(tǒng)計
https://github.com/GavinCT/AndroidMultiChannelBuildTool
- 使用開源項目packer-ng-plugin快速打包