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  执行打包

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

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










猜你喜欢

转载自blog.csdn.net/DickyQie/article/details/80712811