android-------- 多渠道打包(借助友盟移动统计分析)

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

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

多渠道打包的理解:

渠道包就是要在安装包中添加渠道信息,也就是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"]
        }

    }

  //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://www.cnblogs.com/zhangqie/p/9190457.html

时间: 2024-08-28 22:19:21

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

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

亲自测试!! 遇到问题: 1.找不到签名文件的位置 解决方法: 确定后缀为keystore http://www.mamicode.com/info-detail-494186.html

Android 多渠道打包方式详解

Android 多渠道打包方式详解 面试的时候,如果面试官突然问到:你们渠道包是怎么打的?如果你说是用gradle一个一个编译的,然后他很鄙视的说这个效率太低啦,你们写过什么脚本自己打渠道包没?你肯定心里想,卧槽,这么狂炫吊炸天,自己写脚本打包?!其实这个根本也不是太难啦!!今天就来聊聊多渠道打包的原理以及如何自己DIY多渠道打包的工具! 渠道包出现 当一个产品到发版的时候,我们搞Android的就会面临一个超级尴尬的问题:国内这么多的渠道,渠道统计是必须做滴,那么十多个主要渠道再加无限量的地推

Gradle实战:Android多渠道打包方案汇总

查看原文:http://blog.csdn.net/u010818425/article/details/52319382 Gradle实战系列文章: <Gradle基本知识点与常用配置> <Gradle实战:不同编译类型的包同设备共存> <Gradle实战:发布aar包到maven仓库> <Gradle实战:执行sql操作hive数据库> 本文将延续之前几篇博客的风格,先从基本概念入手,这有助于我们对后文的理解: 在后续的代码中如果忘了某个概念的具体意义,

android 多渠道打包

1.packerNg 式打包 Android应用使用的APK文件就是一个带签名信息的ZIP文件,根据 ZIP文件格式规范,每个ZIP文件的最后都必须有一个叫 Central Directory Record 的部分,这个CDR的最后部分叫"end of central directory record",这一部分包含一些元数据,它的末尾是ZIP文件的注释.注释包含Comment Length和File Comment两个字段,前者表示注释内容的长度,后者是注释的内容,正确修改这一部分不

Android 使用第三方SDK—友盟实现分享功能

今天给大家写一下友盟的分享,这段时间在项目有用到,这里简单给大家介绍一下. 友盟的官网链接:点击打开链接 首先,到微信,QQ,微博开放平台添加应用,获取key,下面列出链接: QQ开放平台 微信开放平台  微博开放平台 到友盟官网注册,添加应用获取唯一的key, 下载友盟分享的SDK,需要引入到自己项目当中.我这只用到了微信,QQ,微博,就只选了一部分功能. 再添加相应的res资源文件到你的项目中,到这里,准备工作就完成了. 接下来,开始实现分享功能.友盟分享有它自己给的分享界面,可以直接使用,

Android 多渠道打包方案

常规Build 我们先来回顾一下通过Ant或者Gradle进行多渠道批量打包,通常是在AndroidManifest中配置: <meta-data android:name="CHANNEL" android:value="xxx" /> meta-data通过配置value来动态改变渠道名称,然后我们可以在代码中这样去获取Channel private String getChannelNameFromManifest(){ try { return

Android多渠道打包:极简实现方法

做安卓开发多年,总是在产品业务功能上兜兜转转,近来终于在了一个App完整的全流程开发体验:不仅是业务功能的开发,更介入到了App推广技术的领域,包括安装包快速下载.免填邀请码安装.排重防盗刷等等,对App推广技术的了解,让我感触很深,认识到产品业务功能再好,推广运营能力不行,也会在市场上举步维艰. 在对app推广技术的了解过程中,我发现了一款不错的安卓多渠道打包工具openinstall,它有几个优点值得称道,我在此推荐给大家.它的几个优点是: 优点一,首先是免费的: 优点二,openinsta

Android多渠道打包

产品每次发布,都需要打很多渠道的包.之前用per脚本打包,后来添加了自定义空间属性后,就不能打了.Ant脚本打包又嫌麻烦,引用的工程太多.最后想到一个办法就是反编译. 原理:每个渠道的包只有AndroidManifest.xml文件中渠道的ID不一样.所以反编译APK后,修改AndroidManifest.xml的渠道ID.最后重新打包. 步骤: 1.反编译已经打好包的APK(这里只用了-s,尝试过加上-r,但是AndroidManifest.xml文件没有被反编译,就删掉了) 1 java -

libgdx robovm友盟游戏统计分析SDK的绑定

为了支持libgdx游戏引擎的推广,本人会定期编写IOS SDK绑定,并且分享给大家. 用法: 1.在robovm.xml里面配置你的.a路径(自己在data目录下创建一个libs目录,放入,a) <libs> <lib>z</lib> <lib>data/libs/libMobClickGameLibrary.a</lib> </libs> 2.由于使用的全局变量,所以要现在xml里面定义一下才行 exportedSymbols 代