android 多渠道打包

原理

在manifest文件中,application标签内部设置不同的metadata标签即可,可以通过java api获取这个matedata内的值

友盟提供的多渠道打包技术

  1. 按照umeng的要求,在manifest文件中添加如下代码

    <meta-data
    android:name="UMENG_CHANNEL"
    android:value="你自己申请的key" />
  2. 如果在value的地方写死了一个值,会使得每次打包只能固定一个渠道,所以更改为如下方式

    <meta-data
    android:name="UMENG_CHANNEL"
    android:value="${UMENG_CHANNEL_VALUE}" />

    使用占位符,在build.gradle的android标签内添加如下代码,区分渠道信息。这个占位符和spring框架中的ognl表达式作用有点像

    productFlavors{
    huawei{
    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "huawei"]
    }
    xiaomi{
    manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
    }
    }

    可以简写为以下内容

    productFlavors{
    huawei{ }
    xiaomi{ }
    }
    productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }

    如果要包含版本信息,可以修改为如下配置

    productFlavors{
    huawei{ }
    xiaomi{ }
    }
    productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
    applicationVariants.all { variant ->
    variant.outputs.each { output ->
    def outputFile = output.outputFile
    if (outputFile != null && outputFile.name.endsWith('.apk')) {
    def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
    output.outputFile = new File(outputFile.parent, fileName)
    }
    }
    }

    只有是在代码中获取渠道信息,方便发送到服务器进行数据统计

    private String getChannel() {
    try {
    PackageManager pm = getPackageManager();
    ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
    return appInfo.metaData.getString("UMENG_CHANNEL");
    } catch (PackageManager.NameNotFoundException ignored) {
    }
    return "";
    }

附加小知识

当电脑连接了多个android设备的时候,使用adb shell时进入不同的设备,可以添加参数

adb -s 序列号 install/shell 等命令

查看序列好

adb devices

显示结果的第一列就是序列号

android 多渠道打包的更多相关文章

  1. 更便捷的Android多渠道打包方式

    本文先回顾了以往流行的多渠道打包方式,随后引入的mcxiaoke的packer-ng-plugin项目,介绍该项目在实际应用(配合友盟统计)中如何解决更方便的Android多渠道打包问题 多渠道打包方 ...

  2. 【Android】Android多渠道打包--Gradle打包

    Android多渠道打包--Gradle打包 前言 由于App一般都会在多个应用市场上架,为了分析App在每个不同渠道的具体的数据,一般都会对不同渠道打包不同的App.多渠道打包有多种方式,这里只介绍 ...

  3. Android 多渠道打包原理和使用

    每次中午吃饭总会和技术同学聊天.当做 iOS 开发的做安卓开发的人员在一起的时候,他们中间又多了一个话题:iOS 开发难还是安卓开发难. 这个时候做安卓开发的同学最激动说安卓开发要自己画界面.机型复杂 ...

  4. Android多渠道打包工具

    http://www.cnblogs.com/huangtianhui/archive/2012/07/14/2591382.html 鉴于Android市场众多,基于各种利益考虑,以及未来app能够 ...

  5. android多渠道打包牛B工具

    http://www.orchidshell.com/ 兰贝壳儿:一个Eclipse插件,为Android开发提供了多渠道打包功能和一些工具类.

  6. Android多渠道打包且根据不同产品打包不同的assets资源目录

    因为项目中存在多种环境,既要区分bebug与release版本,release又要区分测试环境与生产上线环境,每次打包都得浪费不少的等待时间:并且哪个版本有问题还得去切换环境一个个打包,关键是还得牢记 ...

  7. Android多渠道打包

    项目需要,简单2步实现(由于简单,所以对大量渠道打包不是最优的),比如1000个渠道同时打包的话可能花费的时间会过长.不过目前该方法能满足绝大需求了...根据截图一步一步走: 第一步 设置配置清单文件 ...

  8. Android 多渠道打包,上百渠道,秒打签名

    具体工具参见:https://github.com/hpu-spring87/MultiSignTools

  9. Gradle 实现 Android 多渠道定制化打包

    Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...

随机推荐

  1. Angular material mat-icon 资源参考_Device

    ul,li>ol { margin-bottom: 0 } dt { font-weight: 700 } dd { margin: 0 1.5em 1.5em } img { height: ...

  2. js高级程序设计 笔记 --- 表单

    一,基础知识 在html中,表单是form元素,而在js中,表单对应的是HTMLFormElement类型,继承自HTMLElement,其独特的属性和方法有(常见): action:接收请求的URL ...

  3. 使用 json_serializable (flutter packages pub run build_runner build) 问题

    命令: flutter packages pub run build_runner build 使用 build_runner 生成 .g.dart 文件 flutter packages pub r ...

  4. linux 查看进程启动时,用户的工作目录

    在linux下查看进程大家都会想到用 ps -ef|grep XXX可是看到的不是全路径,怎么看全路径呢?每个进程启动之后在 /proc下面有一个于pid对应的路径例如:ps -ef|grep pyt ...

  5. C#反射动态调用dll中的方法,并返回结果(转)

    反射的作用是动态的加载某个dll(程序集),并执行该程序集中的某个方法,并返回结果:当然也可以给该方法传递参数 namespace assembly_name { public class assem ...

  6. voip通话分析(含语音质量)

    SipAnalysis.exe使用python开发,通过抓取网卡通信包进行质量分析:1) 分析VOIP通话的发起方.挂机方及对应时间点2) 分析通话使用的媒体信息(方向.载荷.切换时间)3) 分析通话 ...

  7. dubbo序列化hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决

    dubbo序列化,hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决 转载声明: ...

  8. 【Docker】通过cookie欺骗在ubuntu中使用wget下载jdk

    在ubuntu系统中,如果想通过wget直接下载Orcale内的jdk文件,一般是办不到的.所以就得用特殊的方法. 首先在官网找到自己需要下载的jdk版本下载链接: 点选Accept License ...

  9. 【随笔】nginx重启问题和mysql挂了的解决办法

    租了一个阿里云服务器,然后需要一个nginx来处理一下静态文件的访问和动态文件的转发,头一天没有什么问题,第二次打开,各种问题就出来了!解决方法记录一下.... Can't connect to lo ...

  10. unity优化

    1. 更新不透明贴图的压缩格式为ETC 4bit,因为android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他们都兼容ETC格式, 2. 对于透明贴图,我们只能选择RGBA 16 ...