Android使用Walle实现多渠道打包功能的实现示例
介绍
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实现多渠道打包功能的资料请关注其它相关文章!
推荐阅读
-
vue2.0使用Sortable.js实现的拖拽功能示例
-
Android开发实现的图片点击切换功能示例
-
Android开发之选项卡功能的实现方法示例
-
Android 自定义LineLayout实现满屏任意拖动功能的示例代码
-
使用ElasticSearch6.0快速实现全文搜索功能的示例代码
-
NodeJS使用Range请求实现下载功能的方法示例
-
Android编程实现使用Intent传输包含自定义类的ArrayList示例
-
Android编程使用加速度传感器实现摇一摇功能及优化的方法详解
-
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
-
Android开发之TextView使用intent传递信息,实现注册界面功能示例