美文网首页Android知识点和文章分享
Android —— 多渠道打包方式

Android —— 多渠道打包方式

作者: 未聞椛洺 | 来源:发表于2017-07-14 15:16 被阅读0次

    ###多渠道打包概念

    >* 发布到不同渠道上的apk,标记不同的渠道,目的是为了统计该渠道的下载量,留存率等等数据

    >* 了解下载量

    >* 针对性的打广告

    ###渠道统计的核心

    1 为apk打标记(渠道的标识)

    2 运行apk的时候取出标记

    3 上传标记给服务器统计

    ###友盟渠道统计的实现

    1. 打标记:在清单文件中的meta-data结点下配置渠道

    2. 运行apk的时候,友盟的api,会取出meta-data的渠道信息

    3. 上传渠道标记到友盟自己的服务器,用户就可以通过友盟的后台查看具体的渠道统计了

    ###多渠道打包的方式

    0. 一个一个分别导出

    1. ant:要求比较高,需要懂得如何编写ant脚本,但是编写好之后,执行一个命令就可以

    2. 友盟的打包工具

    3. Gradle 多渠道打包 ,比较新,使用比较简单

    4. 快速打包

    ###如何选择

    1. 如果只是修改`渠道名`可以考虑用`umeng打包工具`或者`gradle多渠道打包`,其实绝大数公司情况属于此种情况;

    2. 打包过程需要`定制化的配置`,可以考虑用ant或者gradle定制打包,可以参考`http://tech.meituan.com/mt-apk-adaptation.html`,说明的情况.

    1.自定义包名

    2.自定义签名

    ###umeng打包工具

    ####下载地址

    `https://github.com/umeng/umeng-muti-channel-build-tool`

    ####步骤

    看具体视频

    ###gradle多渠道打包

    ####1. 在AndroidManifest.xml中定义占位符

    ####2. 在module的gradle脚本中替换占位符

    productFlavors {

    wangdoujia {

    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wangdoujia"]

    }

    xiaomi {

    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]

    }

    anzhi {

    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "anzhi"]

    }

    }

    productFlavors {

    Wandoujia {}

    _360 {}

    baidu {}

    xiaomi {}

    tencent {}

    taobao {}

    ...........

    }

    productFlavors.all {

    flavor -> flavor.manifestPlaceholders= [UMENG_CHANNEL_VALUE:name]

    }

    ###快速打包(1分钟打900个渠道包,不是梦)

    ####参考网址:

    http://www.open-open.com/lib/view/open1418262988402.html

    http://m.blog.csdn.net/blog/u013651247/42426227

    ####准备

    下载python: https://www.python.org

    下载别人写好的脚本:  https://github.com/GavinCT/AndroidMultiChannelBuildTool

    ####步骤

    1. 安装Python

    2. `..PythonTool\info\channel.txt`,里面去添加自己想要的渠道

    3. 放置apk到`MultiChannelBuildTool.py`所在目录

    4. 双击`MultiChannelBuildTool.py`执行脚本,完成多渠道打包;

    5. 拷贝`ChannelUtil.java`到项目中

    6. 代码设置渠道`AnalyticsConfig.setChannel(ChannelUtil.getChannel(this));`

    ###新一代Android渠道打包工具:1000个渠道包只需要5秒

    >* 参考:http://www.open-open.com/lib/view/open1453684213136.html(新一代Android渠道打包工具:1000个渠道包只需要5秒)

    ####步骤

    1.修改项目根目录的 build.gradle

    buildscript {

    ......

    dependencies{

    // add packer-ng

    classpath 'com.mcxiaoke.gradle:packer-ng:1.0.4'

    }

    }

    2.修改Android模块的 build.gradle

    apply plugin: 'packer'

    dependencies {

    // add packer-helper

    compile 'com.mcxiaoke.gradle:packer-helper:1.0.4'

    }

    3.Java代码中获取当前渠道(在应用程序启动的时候),在Application子类中的onCreate()方法中

    public class MyApplication extends Application {

    @Override

    public void onCreate() {//程序的入口方法

    ....

    // 如果没有使用PackerNg打包添加渠道,默认返回的是""

    // com.mcxiaoke.packer.helper.PackerNg

    final String market = PackerNg.getMarket(this);

    // 或者使用 PackerNg.getMarket(Context,defaultValue)

    // 之后就可以使用了,比如友盟可以这样设置

    AnalyticsConfig.setChannel(market);

    ....

    }

    }

    4.添加打包的签名,可以通过图形界面添加

    signingConfigs {

    //add

    releaseConfig {

    keyAlias 'itheima'

    keyPassword 'itheima'

    storeFile file('C:/itheima.jks')

    storePassword 'itheima'

    }

    }

    buildTypes {

    release {

    minifyEnabled false

    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    //add

    signingConfig  signingConfigs.releaseConfig

    }

    }

    5.创建markets.txt放到根目录,#号后面是注释,可有可无

    Google_Play#play store market

    Gradle_Test#test

    SomeMarket#some market

    HelloWorld

    6. 通过命令进行打包

    gradle -Pmarket=markets.txt clean apkRelease

    7.效果

    ![](img/tu3.png)

    相关文章

      网友评论

        本文标题:Android —— 多渠道打包方式

        本文链接:https://www.haomeiwen.com/subject/zytohxtx.html