六、通过ADB方式直接获取APP名字,非包名

通过adb获取已安装的包名很简单

  adb shell pm list packages

这里可以获取到所有app的包名,包括系统的和自己安装的,但是想获取app名字,比如"微信",就很困难。搜集了一些方法:

一、直接dumpsys

网上较多流传的一个命令可以获取到APP的详细信息

adb shell dumpsys package com.tencent.mm

但打印后发现,可以获取到版本号、权限等字段,就是没有app名字,而有些网友使用这个命令确实获取到了app名字。这个情况是普遍存在的,可能是兼容性问题。

二、在电脑端用AAPT工具解析apk文件

aapt工具在sdk里面自带了,可以解析apk文件,那么只要拿到你想解析的app的apk文件就行。
先查找所有包名及对应apk位置

adb shell pm list packages -f

打印出apk的位置和包名,把apk文件拉取到电脑端。

adb pull /data/app/com.leon.demo-ZMMnebZlBtlM_xwAxZyXPQ==/base.apk

用aapt工具解析这个拉到本地的apk文件,注意先把aapt工具所在目录加入Path

aapt d badging base.apk

应该就可以打印出所有信息,包括app名字了,如果出现中文乱码,改下编码

chcp 65001 

再次打印即可。
但是这个方法显然效率太低,因为每个app你都需要复制到本地再解析,而一般手机上几十个甚至上百个app。所以换一个思路,把aapt工具直接在手机上跑呢。

三、把aapt工具推到手机上,直接在手机上跑shell命令

参考:https://android.stackexchange.com/questions/90141/obtain-package-name-and-common-name-of-apps-via-adb
先下载手机上可以运行的aapt文件:https://github.com/Calsign/APDE/blob/master/APDE/src/main/assets/aapt-binaries/aapt-arm-pie
下载后,push到手机上并给与权限

adb push aapt-arm-pie /data/local/tmp
adb shell chmod 0755 /data/local/tmp/aapt-arm-pie

调用aapt来解析手机上的apk

adb shell /data/local/tmp/aapt-arm-pie d badging /data/app/com.facebook.katana-3/base.apk

可以看到解析出来的apk信息。
需要精简信息的话可以加入相关参数来格式化输出,也可以自己写个shell脚本,来循环查询所有app。

专用APP:查看包名类名 https://files-cdn.cnblogs.com/files/7qin/package_view.zip

posted @ 2023-08-01 14:46  笠航  阅读(614)  评论(0编辑  收藏  举报