好久没有发博客了,原因是换工作了,今天端午假期,所以来发一篇博客,

多渠道打包,借助友盟移动统计分析,希望对各位有所帮助

多渠道打包的理解:

渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、豌豆荚、应用宝市场等

为什么要提供多渠道包?

我们要在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计(这就是添加渠道信息的用处)。

实现多渠道打包的原理

一般来讲,这个渠道的标识会放在AndroidManifest.xml的Application的一个Metadata中。然后就可以在java中通过API获取对应的数据了。

进入主题

注册友盟,并且添加新应用,获得AppKey

引入依赖

 compile 'com.umeng.sdk:common:latest.integration'

AndroidManifest.xml 添加appkey 和渠道占位符

<!--友盟统计相关 meta-data-->
<meta-data
android:value="5b2497a6f29d985d850001b3"
android:name="UMENG_APPKEY"/><!--友盟 appkey--> <meta-data
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"]
}

签名文件生成  可以看我的博客Android Studio apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码

签名配置

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"]
} }   //
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

找几个手机测试一下

可在后台看数据

android-------- 多渠道打包(借助友盟移动统计分析)的更多相关文章

  1. gradle多渠道打包及友盟统计-eclipse版本

    在进行渠道打包的之前,先看看准备篇,知道打包为了什么. 参见1.0android批量打包认知. eclipse中使用gradle多渠道打包全部流程 一.生成gradle文件,配置本地的gradle环境 ...

  2. 更便捷的Android多渠道打包方式

    本文先回顾了以往流行的多渠道打包方式,随后引入的mcxiaoke的packer-ng-plugin项目,介绍该项目在实际应用(配合友盟统计)中如何解决更方便的Android多渠道打包问题 多渠道打包方 ...

  3. android 多渠道打包

    android 多渠道打包 原理 在manifest文件中,application标签内部设置不同的metadata标签即可,可以通过java api获取这个matedata内的值 友盟提供的多渠道打 ...

  4. Android Cocos2d-x游戏集成友盟社会化组件分享功能

    最近在帮助开发者集成友盟社会化组件的过程中,发现游戏的集成过程遇到一些困难,而Cocos2d-x具有较好的代表性,因此整理了一篇关于Android Cocos2d-x游戏集成友盟社会化组件指南,由于本 ...

  5. android第三方分享之友盟社会化组件

    前言 现在几乎所有的app都带有分享功能,第一为了更好地推广自己的产品,第二作为使用者也能及时的把自己觉得好的文章,话题,app分享到社交平台供大家一起学习和使用.开发中虽然android系统自带分享 ...

  6. 【Android】Android多渠道打包--Gradle打包

    Android多渠道打包--Gradle打包 前言 由于App一般都会在多个应用市场上架,为了分析App在每个不同渠道的具体的数据,一般都会对不同渠道打包不同的App.多渠道打包有多种方式,这里只介绍 ...

  7. 使用Android Studio Gradle实现友盟多渠道打包

    最新项目中要求在友盟后台看到不同渠道的统计,Android大大小小的应用市场要几百个,要一个一个手工打包那一天也干不完,还好是有大牛的,弄出了好多解决方法,就Gradle做一下记录和分享,首先看一些理 ...

  8. 55、android app借助友盟实现微信授权登录

    一.去微信开放平台的管理中心申请移动设备的审核(需进行开发者资质认证,每年300元) 1.获取应用的签名 2.在微信开放平台申请移动应用 两个注意点:①签名要填对 ②应用的包名要写对(tips: co ...

  9. Android 多渠道打包原理和使用

    每次中午吃饭总会和技术同学聊天.当做 iOS 开发的做安卓开发的人员在一起的时候,他们中间又多了一个话题:iOS 开发难还是安卓开发难. 这个时候做安卓开发的同学最激动说安卓开发要自己画界面.机型复杂 ...

随机推荐

  1. POP-OOP-SOP-COP-SOA-AOP

    一.面向过程 二.面向对象 三.面向服务 四.补充 五.总结: 英文及缩写: 面向过程:procedure oriented programming POP 面向对象:object oriented ...

  2. 【做题】Codeforces Round #453 (Div. 1) D. Weighting a Tree——拆环

    前言:结论题似乎是我的硬伤…… 题意是给你一个无向图,已知连接到每一个点的边的权值和(为整数,且属于区间[-n,n]),需要求出每条边权值的一个合法解(都要是在区间[-2*n^2,2*n^2]内的整数 ...

  3. .NET Standard vs. .NET Core

    What is the difference between .NET Core and .NET Standard Class Library project types? Answer1 When ...

  4. 论文笔记之:Deep Attributes Driven Multi-Camera Person Re-identification

    Deep Attributes Driven Multi-Camera Person Re-identification 2017-06-28  21:38:55    [Motivation] 本文 ...

  5. Vue.extend构造器和$mount实例构造组件后可以用$destroy()进行卸载,$forceUpdate()进行更新,$nextTick()数据修改

    html <div id="app"> </div> <p><button onclick="destroy()"&g ...

  6. Python3 list sort排序

    转自:https://blog.csdn.net/u010758410/article/details/79737498 当带排序列表的元素由多字段构成时,我们可以通过sorted(iterable ...

  7. vs项目模板

    创建项目模板 Creating a VSIX Deployable Project (or Item) Template with Custom Wizard Support Create a Pro ...

  8. windows 上让文件类型和程序关联的批处理程序。

    文件关联工具 地址: https://github.com/wll8/assoc-tool 本工具可以用来为你的便携程序添加文件关联,比如 nodepad2.exe . vscode 或其他图片处理程 ...

  9. Go 灵活多变的切片Slice

    我们知道数组定义好之后其长度就无法再修改,但是,在实际开发过程中,有时候我们并不知道需要多大的数组,我们期望数组的长度是可变的, 在 Go 中有一种数据结构切片(Slice) 解决了这个问题,它是可变 ...

  10. _itemmod_nopatch、_itemmod_nopatch_level、_itemmod_nopatch_spell、_itemmod_nopatch_src、_itemmod_nopatch_stat、_itemmod_nopatch_stat_prefix

    原始物品(_itemmod_nopatch中Entry)需要能够装备 该功能产生的新物品不需要制作dbc 尽量避免配置主动技能(_itemmod_nopatch_spell) _itemmod_nop ...