「自动化测试」Android 渠道号验证脚本

前提

以往验收渠道包,需要开发写个log打印出渠道号 → 测试手工装包 → 查看打印日志 → 然后对比渠道号。

思考写个Android 自动验证渠道号的脚本,减少测试的工作量。找了下网上资源,基本套路都是 apkTool 反编译 → 拿到 AndroidManifest.xml → 解析里面的渠道号。这种方式只能应用于 Gradle Plugin 多渠道打包方案。这种打渠道包方式效率太低,基本已经弃用。公司采用美团的Walle打包方案,所以本文用 Walle 做例子说明。

脚本思路

解析apk名拿到外部渠道号 → 使用打渠道包工具 walle 提供的命令行工具获取 apk 真正的渠道号 → 比对两个渠道号 → 渠道号正确的移入 runApk 文件夹,错误的移入 errorApk 文件夹,并输出过程日志。

apppath="."
# 如果当前文件夹下没有"runApk"和"errorApk"文件夹,就新建一个
if [ ! -d "./runApk" ]; then
mkdir ./runApk
fi
if [ ! -d "./errorApk" ]; then
mkdir ./errorApk
fi
# 开始遍历文件夹
for file in ${apppath}/*
do
# 抽取后缀名为apk的文件
if [[ $file == *.apk ]] || [[ $file == *.APK ]]
then

#提取apk名  
apkPath=${file#*/}

# 取出包名并截取出渠道号
# 例:Demo_WHAN_FF_PPZSCPD_v8.1.6 ==> WHAN_FF_PPZSCPD 
channel=${file#*_}
channel=${channel%_*}
#echo $channel

# 命令行获取包渠道号,并截取出渠道号
walleChannel=$(java -jar walle-cli-all.jar show $apkPath)
walleChannel=${walleChannel#*=}
walleChannel=${walleChannel%\}*}
#echo $walleChannel

#比较,正确的话输出日志并将已执行的apk移动到run文件夹,错误则打印错误日志
if [ $channel == $walleChannel ]; then
    echo -e "success: "$apkPath", channel:"$channel", realChannel:"$walleChannel'\n' >>checkChannelResult.log
    mv $file ./runApk
else
    echo -e "error: "$apkPath", channel:"$channel", realChannel:"$walleChannel'\n' >>checkChannelResult.log
    mv $file ./errorApk
fi

fi
done

使用方法

  1. 将脚本和 walle-cli-all.jar 包到渠道包的文件夹目录下,执行 sh 脚本。
  2. 执行完成后同目录内会生成 log 日志,查看日志信息。

注:思路通用,如果以后不是用 walle 打渠道包了,可以换 jar 包改改解析规则。GitHub地址

感谢 elesg 的脚本提供的思路!

你可能感兴趣的:(「自动化测试」Android 渠道号验证脚本)