介绍
walle(瓦力)是android signature v2 scheme签名下的新一代渠道包打包神器。
瓦力通过在apk中的apk signature block区块添加自定义的渠道信息来生成渠道包,从而提高了渠道包生成效率,可以作为单机工具来使用,也可以部署在http服务器上来实时处理渠道包apk的升级网络请求。
使用
使用walle生成多渠道的速度是很快的,原来的项目打一个包就需要两分钟多,每次发布打7个包需要十几分钟。用了walle后,7个包只要两分钟左右就完事了。那叫一个快…
添加依赖&配置渠道,在项目的build.gradle文件中添加依赖:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.3'
}
}
在当前app的build.gradle 文件中添加依赖,以及配置插件
apply plugin: 'walle'
...
dependencies {
...
compile 'com.meituan.android.walle:library:1.1.3'
}
walle {
// 指定渠道包的输出路径
apkoutputfolder = new file("${project.builddir}/outputs/channels");
// 定制渠道包的apk的文件名称
apkfilenameformat = '${appname}-${packagename}-${channel}-${buildtype}-v${versionname}-${versioncode}-${buildtime}.apk';
// 渠道配置文件
channelfile = new file("${project.getprojectdir()}/channel")
}
对应的属性:
apkoutputfolder:指定渠道包的输出路径, 默认值为:
new file("${project.builddir}/outputs/apk")
这里指定为build/outputs/apk。
apkfilenameformat:定制渠道包的apk的文件名称, 默认值为:
'appname−appname−{buildtype}-${channel}.apk'
可使用以下变量:
projectname - 项目名字
appname - app模块名字
packagename - applicationid (app包名packagename)
buildtype - buildtype (release/debug等)
channel - channel名称 (对应渠道打包中的渠道名字)
versionname - versionname (显示用的版本号)
versioncode - versioncode (内部版本号)
buildtime - buildtime (编译构建日期时间)
filesha1 - filesha1 (最终apk文件的sha1哈希值)
flavorname - 编译构建 productflavors 名
channelfile:包含渠道配置信息的文件路径
channelfile:包含渠道配置信息的文件路径。
在app目录下创建channel文件,用于配置渠道信息(文件类型:text)

下面是我的配置表
qh360 #360 yyb #应用宝 wdj #豌豆荚 lenovo #联想 xiaomi #小米 huawei #华为 meizhu #魅族
获取渠道信息,通过以下代码,可以取渠道信息:
string channel = wallechannelreader.getchannel(this.getapplicationcontext());
生成渠道包,到这里,基本的配置都已完成。接下来可以直接打包了。
在terminal中输入对应的指令,即可完成打包。看到build successful后说明已经完成打包了。

所有渠道
./gradlew clean assemblereleasechannels
渠道包的生成目录默认存放在 build/outputs/apk/,也可以通过walle闭包中的apkoutputfolder参数来指定输出目录。
指定渠道
生成单个渠道包(huawei渠道):
./gradlew clean assemblereleasechannels -pchannellist=huawei
生成多个渠道包(huawei、xiaomi渠道):
./gradlew clean assemblereleasechannels -pchannellist=huawei,xiaomi
结果,运行
./gradlew clean assemblereleasechannels
可以在build/outputs/channels看到对应的渠道包。

以上就是android使用walle实现多渠道打包功能的实现示例的详细内容,更多关于android实现多渠道打包功能的资料请关注其它相关文章!
老板加份肉可否