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

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

多渠道打包的理解:

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

为什么要提供多渠道包?

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

实现多渠道打包的原理

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

进入主题

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

引入依赖

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

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

  1. <!--友盟统计相关 meta-data-->
  2. <meta-data
  3. android:value="5b2497a6f29d985d850001b3"
  4. android:name="UMENG_APPKEY"/><!--友盟 appkey-->
  5.  
  6. <meta-data
  7. android:value="${UMENG_CHANNEL_VALUE}"
  8. android:name="UMENG_CHANNEL"/><!--渠道号-->

在build.gradle中去动态的替换掉我们的占位符的value即可

  1. defaultConfig {
  2. applicationId "com.zhangqie.channel"
  3. minSdkVersion 15
  4. targetSdkVersion 22
  5. versionCode 1
  6. versionName "1.0"
  7. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  8. multiDexEnabled true //突破应用方法数65535的一个限制
  9. manifestPlaceholders = [UMENG_CHANNEL_VALUE:"name"]
  10. }

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

签名配置

  1. signingConfigs {
  2. debug {}
  3. //release包添加签名文件配置
  4. release{
  5. storeFile file("../channle.jks")
  6. storePassword "123456"
  7. keyAlias "channle"
  8. keyPassword "123456"
  9. }
  10. }
  11.  
  12. buildTypes {
  13. release {
  14. minifyEnabled false
  15. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  16. signingConfig signingConfigs.release
  17. }
  18. }

渠道指定两种方式

  1. productFlavors{
  2. xiaomi{
  3. //manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
  4. }
  5. wandoujia{
  6. //manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
  7. }
  8.  
  9. }
  10.  
  11.   //
  12. productFlavors.all{
  13. flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
  14. }

把前面的注释取消,  第2处下面代码删除就是第二种方式

之后再控制台 Terminal

输入 gradlew assembleRelease  执行打包(注意:  Mac的要这样添加 ./gradlew assembleRelease

当然 gradlew assembleDebug  这是debug的

也可以指定打包  gradlew assembleWandoujiaRelease豌豆荚的

执行打包

我弄时遇到一个坑

原因是我的 位置顺序放错误了

  1. buildTypes {
  2. release {
  3. minifyEnabled false
  4. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  5. signingConfig signingConfigs.release
  6.  
  7. }
  8. }
  9. signingConfigs {
  10. debug {}
  11. //release包添加签名文件配置
  12. release{
  13. storeFile file("../channle.jks")
  14. storePassword "123456"
  15. keyAlias "channle"
  16. keyPassword "123456"
  17. }
  18. }

所以要注意,

打包完成

生成apk包了

我们可以改变apk输出的名称

  1. buildTypes {
  2. release {
  3. minifyEnabled false
  4. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  5. signingConfig signingConfigs.release
  6.  
  7. //指定我们release包的输出文件名 就是我们的渠道名字
  8. applicationVariants.all{ variant ->
  9. variant.outputs.each { output->
  10. def outFile = output.outputFile
  11. if (outFile != null && outFile.name.endsWith(".apk")){
  12. def fileName = "${variant.productFlavors[0].name}"+".apk"
  13. output.outputFile = new File(outFile.parent,fileName);
  14. }
  15.  
  16. }
  17.  
  18. }
  19.  
  20. }
  21. }

输入 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. Python3基础 list list()生成空列表

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. Spring-Cache 注解 @Cacheable,@CachePut , @CacheEvict

    1.自动生成key @Bean public KeyGenerator keyGenerator() { return new KeyGenerator() { @Override public Ob ...

  3. 最小二乘法拟合非线性函数及其Matlab/Excel 实现

    1.最小二乘原理 Matlab直接实现最小二乘法的示例: close x = 1:1:100; a = -1.5; b = -10; y = a*log(x)+b; yrand = y + 0.5*r ...

  4. kafka丢失和重复消费数据

    Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景,我们在享受他的高并发,高可靠时,还是不得不面对可能存在的问题,最常见的就是丢包,重发问题. 1.丢包问题:消息推送服务,每天 ...

  5. JQuery的ajax方法获取返回值得到了值还包含了不要的html源码 (Ajax相关知识)

    因为后台使用了response.Write():这个方法,当输出完了以后,没有结束掉会继续输出,所以需要用到response.End():这样问题就解决了 jquery的ajax 除了通过url传值, ...

  6. 【bzoj1706】[usaco2007 Nov]relays 奶牛接力跑

    题意 给出一张无向图,求出恰巧经过n条边的最短路. 题解 考虑先离散化,那么点的个数只会有202个最多.于是复杂度里面就可以有一个\(n^3\).考虑构造矩阵\(d^1\)表示经过一条边的最短路,那么 ...

  7. CF983B XOR-pyramid

    设\(xorx[l][r]\)表示题目中\(f(l,r)\)的值,则可以得出 \[ xorx[i][j]=xorx[i][j-1] \oplus xorx[i+1][j] \] 设\(maxx[l][ ...

  8. 论文笔记:Learning Dynamic Memory Networks for Object Tracking

    Learning Dynamic Memory Networks for Object Tracking  ECCV 2018Updated on 2018-08-05 16:36:30 Paper: ...

  9. [jsp & thymeleaf] - jsp和thymeleaf的共存解析

    做项目时因为有些老jsp还需要测试用到,所以之前的thymeleaf也需要保持,配置如下: https://github.com/deadzq/jsp-thymeleaf 等空余时间在做详解吧!

  10. 2. mysql 语句

    基础语句 创建表 DROP TABLE IF EXISTS student;CREATE TABLE student ( id ) NOT NULL AUTO_INCREMENT, sname ) N ...