欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android使用Walle实现多渠道打包功能的实现示例

程序员文章站 2022-03-17 22:33:55
介绍walle(瓦力)是android signature v2 scheme签名下的新一代渠道包打包神器。瓦力通过在apk中的apk signature block区块添加自定义的渠道信息来生成渠道...

介绍

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)

Android使用Walle实现多渠道打包功能的实现示例

下面是我的配置表

   qh360 #360
   yyb #应用宝
   wdj #豌豆荚
   lenovo #联想
   xiaomi #小米
   huawei #华为
   meizhu #魅族

获取渠道信息,通过以下代码,可以取渠道信息:

string channel = wallechannelreader.getchannel(this.getapplicationcontext());

生成渠道包,到这里,基本的配置都已完成。接下来可以直接打包了。

在terminal中输入对应的指令,即可完成打包。看到build successful后说明已经完成打包了。

Android使用Walle实现多渠道打包功能的实现示例

所有渠道

./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使用walle实现多渠道打包功能的实现示例的详细内容,更多关于android实现多渠道打包功能的资料请关注其它相关文章!