概念:
- 發布到不同渠道的app,使用不同的標記來標識,以便于統計數據
原理:
- 為apk打標記(渠道的標識)
- 運行apk的時候取出標記
- 上傳標記給服務器統計
具體實現(以友盟為例)
- 使用Gradle進行多渠道打包
- 在配置文件配置meta-data標簽
<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
// 默認是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獲得對應的渠道標識,發送到自己服務器或者通過友盟api初始化進行數據統計
https://github.com/GavinCT/AndroidMultiChannelBuildTool
- 使用開源項目packer-ng-plugin快速打包