zoukankan      html  css  js  c++  java
  • 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://developer.umeng.com/docs/66632/detail/66889

    找几个手机测试一下

    可在后台看数据

  • 相关阅读:
    .NET中使用Memcached的相关资源整理
    Windows 下的.NET+ Memcached安装
    基于.NET的大型Web站点StackOverflow架构分析(转)
    组建学习型项目团队(转)
    WIN 2003服务器终极安全及问题解决方案
    禁止用户远程登录方法方法
    微信公众平台完整开发教程【转】
    【转】Android 最火的快速开发框架XUtils
    【转】Android 最火框架XUtils之注解机制详解
    android开发Proguard混淆与反射
  • 原文地址:https://www.cnblogs.com/zhangqie/p/9190457.html
Copyright © 2011-2022 走看看