walle
1.1、walle简介

walle美团外卖大众点评合并后的公司美团点评开源出来的Android多渠道打包工具。

walleGitHub上的网址:https://github.com/Meituan-Dianping/walle

walle完美支持APK Signature Scheme v2签名。目前最好的多渠道打包工具。

walle提供了命令行工具和gradle插件。

1.2、下载walle命令行工具

使用curl命令下载:

curl -L https://github.com/Meituan-Dianping/walle/blob/master/walle-cli/walle-cli-all.jar?raw=true -o walle-cli.jar
1.3、从源码构建walle命令行工具

1、使用git克隆一份源代码:

git clone https://github.com/Meituan-Dianping/walle.git

2、进入walle目录:

cd walle

3、构建:

./gradlew build
1.4、walle命令行的使用
1.4.1、java -jar walle-cli.jar -h

查看使用帮助。

1.4.2、java -jar walle-cli.jar -v

查看版本号。

1.4.3、java -jar walle-cli.jar put [options]... <inputFile> [outputFile]

生成单个渠道包,也就是说这条命令运行完后,只生成一个渠道包。同时可以写入额外的key=value信息。

option有下面这些:

-c是渠道号

-e是额外的key=value信息,可以出现多个,以,分割。

示例:

java -jar walle-cli.jar put -c yingyongbao ~/xx.apk
java -jar walle-cli.jar put -e buildtime=20161212,hash=xxxxxxx ~/xx.apk
java -jar walle-cli.jar put -c yingyongbao -e buildtime=20161212,hash=xxxxxxx ~/xx.apk
java -jar walle-cli.jar put -c yingyongbao -e buildtime=20161212,hash=xxxxxxx ~/xx.apk ~/xx-yingyongbao.apk
1.4.4、java -jar walle-cli.jar batch [options]... <inputFile> [outputDirectory]

批量生成渠道包。同时可以写入额外的key=value信息。

option有下面这些:

-f是渠道号列表配置文件,每行一个渠道号,以#作为注释的开头。

-c是渠道号列表,以,分割。

-e是额外的key=value信息,可以出现多个,以,分割。

示例:

java -jar walle-cli.jar batch -c yingyongbao,360,91 ~/xx.apk
java -jar walle-cli.jar batch -e buildtime=20161212,hash=xxxxxxx ~/xx.apk
java -jar walle-cli.jar batch -c yingyongbao,360,91 -e buildtime=20161212,hash=xxxxxxx ~/xx.apk ~/
java -jar walle-cli.jar batch -f channels-config.txt ~/xx.apk channels/

这样就会生成很多个渠道包。

1.4.5、java -jar walle-cli.jar rm [file]...

删除写入的信息。

java -jar walle-cli.jar rm ~/xx-360.apk
java -jar walle-cli.jar rm ~/xx-360.apk ~/xx-91.apk
1.4.6、java -jar walle-cli.jar show [option]... <apkFile>

查看写入的信息。

option有下面这些:

-c表示显示渠道号。

-e表示显示额外的key=value信息。

示例:

java -jar walle-cli.jar show -c ~/xx-360.apk
java -jar walle-cli.jar show -e ~/xx-360.apk
java -jar walle-cli.jar show -c -e ~/xx-360.apk
1.5、使用walle的gradle插件

官网有详细说明,参照即可。

通常,我们可能会使用AndResGuard进行资源的压缩。 这时候,我们就无法再使用wallegradle插件了,只能使用命令行工具了。

1.6、如何在程序中读取写入的数据呢?

app模块中加入如下的依赖库:

implementation("com.meituan.android.walle:library:1.1.5")

Java代码中读取:

String channel = WalleChannelReader.getChannel(this.getApplicationContext());
1.7、walle的原理

所有的被安装的APK文件的存放路径是:/data/app/{packageName}{*}.apk, 那么我们在运行的过程中去读取该文件就可以把数据读取出来。