多渠道打包

Android多渠道打包

多渠道打包概念

  • 发布到不同渠道上的apk,标记不同的渠道,目的是为了统计该渠道的下载量、留存率等等数据,可以有针对性的分析数据.

渠道统计的核心

  1. 为apk打标记,也就是各种渠道的标识;

  2. 运行apk的时候取出标记;

  3. 上传标记给自己的服务器进行统计数据.

友盟渠道统计的实现

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

    <meta-data
    android:name="UMENG_CHANNEL"
    android:value="官网" />

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

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

多渠道打包的方式

  1. 一个一个分别导出;
  2. ant:要求比较高,需要懂得如何编写ant脚本,但是编写好之后,执行一个命令就可以;
  3. 友盟的打包工具;
  4. Gradle 多渠道打包;
  5. 美团技术团队的多渠道打包,使用比较简单;
  6. 新一代Android渠道打包工具.

如何选择

  1. 如果只是修改渠道名可以考虑用umeng打包工具或者gradle多渠道打包,其实绝大数公司情况属于此种情况;
  2. 打包过程需要定制化的配置,可以考虑用ant或者gradle定制打包,可以参考http://tech.meituan.com/mt-apk-adaptation.html,说明的情况.

    a.自定义包名

    b.自定义签名

第一种:umeng打包工具下载地址

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

第二种:gradle多渠道打包

1. 在AndroidManifest.xml中定义占位符
<meta-data
        android:name="UMENG_CHANNEL"
        android:value="${UMENG_CHANNEL_VALUE}"/>
2. 在module的gradle脚本中替换占位符
productFlavors {
    wangdoujia {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wangdoujia"]
    }
    xiaomi {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
    }
    anzhi {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "anzhi"]
    }
}

第三种:快速打包(1分钟打900个渠道包,不是梦)

参考网址:

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

http://tech.meituan.com/mt-apk-packaging.html 美团自动化之旅

准备

下载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秒

步骤

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

buildscript {
......
dependencies{
    // add packer-ng
    classpath 'com.mcxiaoke.gradle:packer-ng:1.0.4'
}
}

2.修改【app下】的 build.gradle,有以下两行代码需要添加

apply plugin: 'packer' 

dependencies {
    // add packer-helper
    compile 'com.mcxiaoke.gradle:packer-helper:1.0.4'
}

注意: packer-ng 和 packer-helper 的版本号需要保持一致

3.Java代码中获取当前渠道,建议是在应用程序启动的时候,在自定义的Application类中的onCreate()方法中去获取当前渠道,例如下面

public class XiaoKeApplication 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
    config {
        keyAlias 'xiaoke'
        keyPassword 'xiaoke'
        storeFile file('C:/xiaoke.jks')
        storePassword 'xiaoke'
    }
 }

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        //add
        signingConfig  signingConfigs.config
    }
}

5.创建markets.txt放到【根目录】

 Google_Play#play store market
 Gradle_Test#test
 SomeMarket#some market
 HelloWorld

6.通过命令进行打包

gradle -Pmarket=markets.txt clean apkRelease

7.致辞,完成多渠道打包的概念。打包完成后你可以在 ${项目根目录}/build/archives/ 目录找到最终的渠道包。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值