现在 Google Play 对应用权限的管理非常严格,之前公司内有个版本就是因为新增了四个权限导致停灰处理。所以,在每个版本发布之前很有必要检查一下是否有新增权限。

安卓应用请求的所有权限可以通过 aapt 命令查看:

在拿到应用的权限列表后,即可对比两个版本的权限是否有变化,新增加或者新减少。

脚本如下:

#!/usr/bin/env bash

#清空上次运行后产生的文件
if [[ -f permission_old.txt ]]; then
    rm permission_old.txt permission_new.txt
fi

#读取apk文件地址
read -p "请输入上个版本apk文件存放地址:" apk_old
read -p "请输入最新版本apk文件存放地址:" apk_new

#aapt命令解析apk,输出权限到文件
aapt d badging ${apk_old} | grep "uses-permission:" | awk -F "'" '{print $2}' > permission_old.txt
aapt d badging ${apk_new} | grep "uses-permission:" | awk -F "'" '{print $2}' > permission_new.txt

#遍历新版本权限列表,对比旧版本权限列表是否相同,不同则为新增
for x in $(cat permission_new.txt); do
    if cat permission_old.txt | grep ${x} > /dev/null; then
        echo "hello, world" > /dev/null
    else
        echo ${x} >> permission_increase.txt
    fi
done

#遍历旧版本权限列表,对比新版本权限列表是否相同,不同则为新减少
for y in $(cat permission_old.txt); do
    if cat permission_new.txt | grep ${y} > /dev/null; then
        echo "hello, world" > /dev/null
    else
        echo ${y} >> permission_decrease.txt
    fi
done

#判断permission_increase.txt是否存在:存在,输出新增权限提醒;不存在,输出无新增权限
if [[ ! -f permission_increase.txt ]]; then
    echo "无新增权限"
else
    echo "新增权限:"
    cat permission_increase.txt
    #删除新增权限文件
    rm permission_increase.txt
fi

#判断permission_decrease.txt是否存在:存在,输出新减少权限提醒;不存在,输出无新减少权限
if [[ ! -f permission_decrease.txt ]]; then
    echo "无新减少权限"
else
    echo "新减少权限:"
    cat permission_decrease.txt
    #删除新减少权限文件
    rm permission_decrease.txt
fi

运行示例:


欢迎关注微信公众号"测试开发Stack"

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!