码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2018-06-16 15:14:28      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:led   alt   来讲   col   tde   gconf   deb   统计分析   UI   

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

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

 

多渠道打包的理解:

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

技术分享图片

 

名称已改变,根据自己的需要设置,

 

这样我们多渠道打包就完成了

 

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

标签:led   alt   来讲   col   tde   gconf   deb   统计分析   UI   

原文地址:https://www.cnblogs.com/zhangqie/p/9190457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!