方案
这里我是用Android SDK自带的aapt工具来获取应用的manifest文件信息的,有时候明明你已经配置好Android的开发环境了但还是报“Unable to find executable for: aapt” 这个错误,这时候首先看看自己Android SDK目录下的build-tools下有没有aapt可执行文件,如果没有建议下载26.0.0的版本,然后再把路径加到环境变量中。
1、在命令行中输入新旧版本的apk地址,然后过滤出权限信息到文本中:
apk_old=$1 apk_new=$2 aapt d badging ${apk_old} | grep "uses-permission:" | awk -F "'" '{print $2}' > permission_old.txtaapt d badging ${apk_new} | grep "uses-permission:" | awk -F "'" '{print $2}' > permission_new.txt
2、遍历新版本权限列表,看是否有旧版本权限列表中没有的权限,如果有就是新增,将新增的权限写入新增权限文件:
for data in $(cat permission_new.txt); do count=$(cat permission_old.txt | grep -c ${data}) if [ "$count" -eq 0 ]; then echo ${data} >> permission_increase.txt fi done
3、遍历旧版本权限列表,看是否有新版本权限列表中没有的权限,如果有就是减少,将减少的权限写入减少权限文件:
for data in $(cat permission_old.txt); do count=$(cat permission_new.txt | grep -c ${data}) if [ "$count" -eq 0 ]; then echo ${data} >> permission_decrease.txt fi done
4、判断新增权限文件是否存在,如果存在,就输出新增的权限信息
if [[ ! -f permission_increase.txt ]]; then echo "无权限新增" else echo "新增的权限:" cat permission_increase.txt #删除新增权限文件 rm permission_increase.txt fi
5、判断减少权限文件是否存在,如果存在,就输出减少的权限信息:
if [[ ! -f permission_decrease.txt ]]; then echo "无权限减少" else echo "减少的权限:" cat permission_decrease.txt #删除减少权限文件 rm permission_decrease.txt fi