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实现多渠道打包功能的资料请关注其它相关文章!
推荐阅读
-
Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例
-
Android开发实现的简单媒体播放器功能示例
-
Android开发使用自定义view实现ListView下拉的视差特效功能
-
javascript使用substring实现的展开与收缩文字功能示例
-
Android编程实现使用Intent传输包含自定义类的ArrayList示例
-
Android编程实现的自定义弹窗(PopupWindow)功能示例
-
html5使用canvas实现图片下载功能的示例代码
-
C#使用FileSystemWatcher控件实现的文件监控功能示例
-
Android编程使用加速度传感器实现摇一摇功能及优化的方法详解
-
Android开发之瀑布流控件的实现与使用方法示例