Android 多渠道打包与美团Walle的实践
本文不长,阅读大概五分钟
关于多渠道打包这个问题,首先,我们要明白,多渠道打包的意义何在,众所周知,因为国内Android应用分发市场的现状,我们在发布APP时,一般需要生成多个渠道包,上传到不同的应用市场。这些渠道包需要包含不同的渠道信息,在APP和后台交互或者数据上报时,会带上各自的渠道信息。这样,我们就能统计到每个分发市场的下载数、用户数等关键数据。很多人喜欢用友盟是因为友盟提供了一个很好的平台给你统计相关的数据,当然,也有部分公司会自己去统计这些相关的信息,当然,这并不重要,我们主要还是来明白如何实现多渠道打包。
一.快速实现多渠道打包
如何快速实现多渠道打包呢? 我们用原始的方式,在清单文件中定义一个属性:
这里的meta-data,我们可以使用PackageManager读取,他的key就是APP_CHANNEL,而value则是一个动态的值,我们在app/build.gradle下配置相关的参数,在android的根节点下写入如下代码:
这段代码很好理解,我们定义了四个渠道,实际上你可以自由的定义任意的渠道,只要指定APP_CHANNEL_VALUE的值即可,这样,我们就配置好了,然后可以通过PM来读取:
好了,开始打包了,这里打包的话,这里首先进行签名,签名的时候你就可以看到我们之前定义的效果了:
这里你可以全部选择,当然,我并没有这么做,而是打开了Gradle,选择了assemble
如果你想单独编译也可以选择其中一个,编译完成后可以在app/build/outputs 目录查看:
但是现在并没有进行签名,所以release是安装不了的,但是debug没问题,安装后可以看到,我们的渠道都是可以完美显示,现在我们进行签名之后在build.gradle下配置如下:
我在android的根节点定义了一个signingConfigs,然后配置自己的签名信息后,在buildTypes的release下引用来达到签名的效果,之前打包出来的release和现在的名称对比
之前没签名的文件会有unsigned字样,到此,我们只需要点击一下assemble就可以打出所有的渠道包来了
二.美团渠道打包神器Walle
这是美团技术团队发布的Android Signature V2 Scheme签名下的新一代渠道包打包神器
集成他的话,可能就不需要我们上面那样定义了,我们来看下配置先:
在位于项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖, 如下:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.6'
}
}
并在当前App的 build.gradle 文件中apply这个插件,并添加上用于读取渠道号的AAR
apply plugin: 'walle'
dependencies {
implementation 'com.meituan.android.walle:library:1.1.6'
}
在android根节点下配置:
这里的配置在github上都是有说明的,其中apkOutputFolder是指定输出的路径,apkFileNameFormat 是输出的文件名称,我们可以去掉一点不要那么长,channelFile 是配置的渠道名称,你需要在app目录下新建一个channel文件里面写入配置的信息,可参考demo或者github中的示例:
https://github.com/Meituan-Dianping/walle/blob/master/app/channel
最终调用命令编译出需要的渠道包:
编译命令:gradlew clean assembleReleaseChannels
这是window的,linux或者mac 上 应该是 ./gradlew开头
差点忘记了,如何读取渠道包:
String channel = WalleChannelReader.getChannel(this.getApplicationContext());
这样就能读取到渠道包了,到这里两种方式已经陈述完了,有兴趣的可以多了解一下。
有兴趣可以加入我的星球:Hi Android , 里面可都是我手撸的新鲜文章,高质量你值得拥有!
进入星球你可以做什么?
1.我的所有视频可以观看
2.发布提问贴可以得到满意的答案
3.可指定我写你感兴趣的技术文章
4.初学者可配套视频辅导
5.有机会线下交流聚会