walle
1.1、walle简介
是什么 ?:walle美团外卖大众点评合并后的公司美团点评开源出来的Android多渠道打包工具。

walle完美支持APK Signature Scheme v2签名。

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

开发语言:Java
开发公司:美团点评
源码仓库:https://github.com/Meituan-Dianping/walle
1.2、通过包管理器安装walle-cli
操作系统包管理器安装命令
macOSHomeBrewbrew tap leleliu008/fpliu
brew install walle-cli
GNU/LinuxHomeBrewbrew tap leleliu008/fpliu
brew install walle-cli
1.3、通过下载预编译好的jar包安装walle-cli

step1、安装依赖

所有时Terminal + Shell + GNU CoreUtils
下载时cURL
运行时JRE | JDK

step2、使用curl命令下载walle-cli-all.jar

curl -LO https://github.com/Meituan-Dianping/walle/releases/download/v1.1.6/walle-cli-all.jar

step3、编写一个名字为wallePOSIX sh脚本,内容如下

#!/bin/sh

P=$(cd $(dirname $0);pwd)
java -jar "${P}/walle-cli-all.jar" $@

step4、给walle赋予可执行权限

chmod a+x walle

step5、将walle所在的目录加入PATH环境变量中

export PATH=$PWD:$PATH
1.4、从源码编译安装walle-cli

step1、使用git命令下载walle源码

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

step2、进入walle目录

cd walle

step3、编译

./gradlew build

step4、编写一个名字为wallePOSIX sh脚本,内容如下

#!/bin/sh

P=$(cd $(dirname $0);pwd)
java -jar "${P}/walle-cli/dist/walle-cli-all.jar" $@

step5、给walle赋予可执行权限

chmod a+x walle

step6、将walle所在的目录加入PATH环境变量中

export PATH=$PWD:$PATH
1.5、walle命令
1.5.1、walle -h

查看使用帮助。

1.5.2、walle -v

查看版本号。

1.5.3、walle 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.5.4、walle 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.5.5、walle rm [file]...

删除写入的信息。

java -jar walle-cli.jar rm ~/xx-360.apk
java -jar walle-cli.jar rm ~/xx-360.apk ~/xx-91.apk
1.5.6、walle 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.6、walle-gradle-plugin

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

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

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

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

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

Java代码中读取:

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

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