多渠道打包一般应用于向不同应用市场提交应用后用来统计不同渠道下载量等一些信息。一般集成友盟sdk(同类型的sdk还有诸葛io,量江湖等sdk),不同sdk集成方式大同小异,可去各自官网查看详细文档。本文以友盟sdk为例。
渠道:各种应用市场比如华为应用市场,小米应用市场,积分墙(花钱的推广渠道)等。
首先集成友盟sdk,集成方式参照友盟sdk集成,在项目的build.gradle文件中加入以下代码
productFlavors { yingyongbao {} 朋友{} } productFlavors。所有{ 味道→味道。manifestPlaceholders=[UMENG_CHANNEL_VALUE名称): }
修改生成的apk名字
applicationVariants。所有{变体→ variant.outputs。每个{输出→ def oldFile=output.outputFile 如果(variant.buildType.name.equals(释放)){ def releaseApkName=" + variant.productFlavors [0] . name +“-”+ defaultConfig。versionName + ' . apk ' 输出。(oldFile outputFile=新文件。家长,releaseApkName) } } } >之前在AndroidManifest.xml中加入友盟的集成代码以及权限
& lt;元数据 android: name=" UMENG_APPKEY " android: value=" https://www.yisu.com/zixun/Your键“/比; & lt; !——& lt;元数据android: value=" https://www.yisu.com/zixun/faqiao " android: name=" UMENG_CHANNEL "/比;——比; & lt;元数据 android: name=" UMENG_CHANNEL " android: value=" https://www.yisu.com/zixun/$ {UMENG_CHANNEL_VALUE} "/比;//这里改成对应构建。gradle中的productFlavors。所有对应的字符串 >之前然后选择你要打包的渠道就可以了
→
,
缺点:如果渠道过多这种打包方式很费时间20个渠道包差不多要40分钟的时间。
一些大厂的渠道会多到惊人,美团会有900 +的渠道要是按上面的打包方式2 * 900肯定是不行的。美团技术大牛们也在一直研究快速多渠道打包方法。
在这介绍美团最新的机器人瓦力打包,之前美团还有一个打包方式是通过python脚本修改apk (apk也是一个压缩包)中的一个配置文件的名称,配置文件名称也就是渠道名称从而打不不同的包,这种速度很快,但是从android7.0以android加后入了apk签名方案v2打包方式,因为这种打包方式改变的包里面的内容所以apk在7.0以后的系统中安装会提示安装失败。
在此推荐美团机器人瓦力打包,此种方式是不通过外部修改配置文件的方式打包具体打包细节可参考美团机器人瓦力打包
集成方式
首先build.gradle中
应用插件:“机器人瓦力” 机器人瓦力{//指定渠道包的输出路径//apkOutputFolder=新文件(“$ {project.buildDir}/输出/渠道”); apkOutputFolder=新文件(“D:/Android/输出/user/通道”);//定制渠道包的APK的文件名称//apkFileNameFormat=" ${浏览器名称}- {packageName} -{频道}-美元$ {buildType} - v $ {versionName} - {versionCode} - {buildTime} . apk美元”; apkFileNameFormat=' app - ${频道}- v $ {versionName} . apk ';//渠道配置文件 channelFile=新文件(“$ {project.getProjectDir()}/频道”) } 依赖关系{ 编译的com.meituan.android.walle:图书馆:1.1.6//美团多渠道打包 }这里的channelFile是一个频道(渠道的一个配置文件)放在该工程的对应的目录下
apkOutputFolder是apk包生成的位置,可更改
该文件用文字编辑器文件编辑器打开格式如下:
,
然后在工程的build.gradle中加入
依赖关系{ 类路径的com.meituan.android.walle:插件:1.1.6 }这种打包方式不是更改AndroidManifest的方式,所以先把AndroidManifest中的配置友盟渠道的代码注释掉:
Android多渠道打包总结(推荐)