好久没有发博客了,原因是换工作了,今天端午假期,所以来发一篇博客,
多渠道打包,借助友盟移动统计分析,希望对各位有所帮助
多渠道打包的理解:
渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、豌豆荚、应用宝市场等
为什么要提供多渠道包?
我们要在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计(这就是添加渠道信息的用处)。
实现多渠道打包的原理
一般来讲,这个渠道的标识会放在AndroidManifest.xml的Application的一个Metadata中。然后就可以在java中通过API获取对应的数据了。
进入主题
注册友盟,并且添加新应用,获得AppKey
引入依赖
compile 'com.umeng.sdk:common:latest.integration'
AndroidManifest.xml 添加appkey 和渠道占位符
android:value="5b2497a6f29d985d850001b3"
android:name="UMENG_APPKEY"/>
android:value="${UMENG_CHANNEL_VALUE}"
android:name="UMENG_CHANNEL"/>
在build.gradle中去动态的替换掉我们的占位符的value即可
defaultConfig {
applicationId "com.zhangqie.channel"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true //突破应用方法数65535的一个限制
manifestPlaceholders = [UMENG_CHANNEL_VALUE:"name"]
}
签名配置
signingConfigs {
debug {}
//release包添加签名文件配置
release{
storeFile file("../channle.jks")
storePassword "123456"
keyAlias "channle"
keyPassword "123456"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
渠道指定两种方式
productFlavors{
xiaomi{
//manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
wandoujia{
//manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
}
//2
productFlavors.all{
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
把前面的注释取消, 第2处下面代码删除就是第二种方式
之后再控制台 Terminal
输入 gradlew assembleRelease执行打包(注意: Mac的要这样添加 ./gradlew assembleRelease)
当然 gradlew assembleDebug 这是debug的
也可以指定打包 gradlew assembleWandoujiaRelease豌豆荚的
执行打包
我弄时遇到一个坑
原因是我的 位置顺序放错误了
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
signingConfigs {
debug {}
//release包添加签名文件配置
release{
storeFile file("../channle.jks")
storePassword "123456"
keyAlias "channle"
keyPassword "123456"
}
}
所以要注意,
打包完成
生成apk包了
我们可以改变apk输出的名称
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
//指定我们release包的输出文件名 就是我们的渠道名字
applicationVariants.all{ variant ->
variant.outputs.each { output->
def outFile = output.outputFile
if (outFile != null && outFile.name.endsWith(".apk")){
def fileName = "${variant.productFlavors[0].name}"+".apk"
output.outputFile = new File(outFile.parent,fileName);
}
}
}
}
}
输入 gradlew assembleRelease执行打包
名称已改变,根据自己的需要设置,
这样我们多渠道打包就完成了
友盟统计文档,按照操作步骤
https://developer.umeng.com/docs/66632/detail/66889
找几个手机测试一下
可在后台看数据