浅谈Android多渠道打包

来源:互联网 发布:js怎么定义数组 编辑:程序博客网 时间:2024/06/02 14:55


注:如转载,请标明出处!

多渠道简介

        渠道是国内Android平台特有的名词,由于google play无法使用,因此出现了众多的市场。所以我们可以理解为一个渠道即代表一个应用市场。所以当我们研发的app应用需要提供多种下载途径,就会用到多渠道。例如:官网下载,豌豆荚下载,应用宝下载等。通过多渠道,可以更详尽的统计app被下载的途径,可以查看app在每个渠道上的表现,可以更有利于我们的app推广。

多渠道打包的实现

        在多渠道打包中,本人习惯用友盟来进行统计等业务需求。那么下面让我来详细的讲解一下使用友盟的步骤:
        1.下载sdk并集成。
        2.在manifest.xml中配置渠道号和Appkey。
        3.在应用module中的build.gradle中编写多渠道脚本。(大家如果有需求的话,可以去学习一个这个脚本,本文中只对需求需要的脚本语言进行编写)

首先让我们去友盟官网获取唯一的appkay



然后在你项目中app下的build.gradle中dependencies中添加以下代码进行sdk集成:

compile 'com.umeng.analytics:analytics:latest.integration'

下面我们需要对manifest.xml进行编写了:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.liuzhuang.myipctext">    //切记要添加权限    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.INTERNET" />    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        //value为之前得到的唯一appkey        <meta-data android:value="5850a2829f06fd5b05001ba3" android:name="UMENG_APPKEY"/>        //value为Channel ID(渠道号),此时让我们用占位符来代替        <meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>    </application></manifest>

下面进行最重要也是最复杂的一步,就是在build.gradle中编写主要的脚本了:

android {    compileSdkVersion 24    buildToolsVersion "25.0.0"    defaultConfig {        applicationId "com.example.liuzhuang.myipctext"        minSdkVersion 18        targetSdkVersion 24        versionCode 1        versionName "1.0"        multiDexEnabled true  //突破应用方法数65535的一个限制        manifestPlaceholders = [UMENG_CHANNEL_VALUE:"umeng"]//添加渠道,默认是友盟渠道    }    productFlavors{        //可以直接如注释掉的一样写,但是为了方便,我定义了productFlavors.all来循环,只需要在productFlavors中写:渠道名{}就可以了。        xiaomi{//            manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]        }        wandoujia{//            manifestPlaceholders=[UMENG_CHANNEL_VALUE: "wandoujia"]        }    }    productFlavors.all{        flavor -> flavor.manifestPlaceholders=[UMENG_CHANNEL_VALUE: name]    }    //添加签名文件位置    signingConfigs {        debug {}        //这里是签名的信息,这里就不多介绍了        release {            storeFile file("appkey.jks")            storePassword "123456"            keyAlias "nihao"            keyPassword "123456"        }    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            //指定去执行signingConfigs的release            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);                        }                }            }        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:24.2.1'    compile 'com.umeng.analytics:analytics:latest.integration'    testCompile 'junit:junit:4.12'}

到此时,基本我们的准备工作已经完成,下面就是检验成果的时候了,要实现多渠道打包的最后一步,我们还需要控制台,下面是一些打包的语句:

    ./gradlew assembleRelease   //去自动的打出所有渠道的包    ./gradlew assemblewandoujiaRelease   //打单独指定的包

这是最基础的打包方式,如果你使用的是studio,那么它已经为你提供了一个快捷的方法


在Gradle中Tasks下的build中找到相应的语句,然后直接点击运行就可以了。是不是简单了不少呢。

总结

到这里,我们的多渠道打包就已经有完成了。当然了,多渠道打包并不仅仅这一种第三方,还有百度多渠道打包等,只是本人习惯用友盟而已,如果猿友们有别的第三方需求不明白,可以给我留言。最后谢谢审阅。希望我们共同进步。

1 0