Android多渠道打包安卓打包android基础知识

Android多渠道打包

2016-10-20  本文已影响680人  砺雪凝霜
Android多渠道打包
概述

每当发新版本时,Android客户端会被分发到各个应用市场,比如豌豆荚,360手机助手等。为了统计这些市场的效果(活跃数,下单数等),需要有一种方法来唯一标识它们。客户端通过渠道号来区分不同的市场,比如,豌豆荚市场中美团应用的渠道号是wandoujia,360手机助手中美团应用的渠道号为qihu360。客户端访问API时会在请求参数中带上渠道号,以便后台接下来计算不同渠道的效果。
如果渠道越来越多的话,手动打包就显得效率太低了,多渠道打包这种高效率打包的方式就显得尤为重要了。
多渠道打包看着挺高大上的,但是其本质就是在APP中动态改变渠道这个参数,就这么简单~
下面我来介绍几种比较常用的多渠道打包方式。

(一)动态资源配置的方式实现多渠道打包

(1) ./gradlew -v 版本号
(2) ./gradlew clean 清除/app目录下的build文件夹
(3)./gradlew build 检查依赖并编译并把debug和release环境的包都打出来
(4) ./gradlew assembleDebug 编译并打Debug包
(5) ./gradlew assembleRelease 编译并打Release的包
(6) ./gradlew installRelease Release模式打包并安装
(7)./gradlew uninstallRelease 卸载Release模式包

(二) 在Mainifest.xml配置文件中添加meta-data参数来实现

<meta-data android:name="PUB_CHANNEL"android:value="${PUB_CHANNEL_VALUE}" />

ED0D0405-6119-48E6-A166-7E40530FDCC1.png
PackageManager.GET_META_DATA);   
Stringmsg=info.metaData.getString("PUB_CHANNEL");   System.out.println("PUB_CHANNEL:"+msg);

这种打包方式和第一种方式一样效率太低,由于需要配置多个渠道参数,如果渠道包太多,配置的参数比较多不说,还需要打包多次,自然比较耗时~ 该打包方式适合渠道较少的应用

(三) 使用apktool进行多渠道打包

根据第二种打包方式可知,我们可以在Mainifest文件中配置MATE-DATA属性,然后在应用内部获取该参数的方式实现渠道号的配置。那么如果我们通过改变这个参数,也是可以实现多渠道打包的?使用apktool进行打包的方式就出现了~
该打包方式的具体思路如下:

上面就是使用apktool打包的方法,通过使用脚本可以批量地生成渠道包。该方法只需构建一次,大大节省了时间。但是没有第四种方式快~(900百个渠道包需要3个小时)
具体参考:
使用apktool进行多渠道打包地址
美团多渠道打包

(4)美团渠道打包方式

实现原理:先打好一个已经签名的apk包,在apk文件中META-INF目录,通过Python脚本在该文件夹下新建一个带有渠道参数的空文件,最后通过在应用内部获取该渠道号。这样只需要打包一次就可以实现多渠道打包了,效率非常高~

(5) 自制多参数配置渠道打包

由于项目具有多个渠道包参数需要配置,而不局限于一个渠道名称参数,美团渠道打包的方式是通过python脚本在META-INF目录下
新建一个带有渠道号的空文件夹实现的,那么能不能我们把事先准备好的渠道参数配置文件LeSportsConfig.json复制到META-INF目录下呢?每个渠道包下面都有一份对应的渠道参数配置,然后当应用启动的时候,再去读取里面的参数配置。通过一天的努力终于实现了。


81C50D82-0221-4D2D-9121-EA7507AF946D.png D08342E8-6B68-484A-8A6C-0A94FCFF3478.png

参考网址:
(1) 美团多渠道打包
(2) https://github.com/GavinCT/AndroidMultiChannelBuildTool
(3) https://github.com/AlexSmille
(4) http://blog.csdn.net/u013766103/article/details/52454585

上一篇下一篇

猜你喜欢

热点阅读