最近有个需求需要获取手机上已安装应用列表,需要包含应用名称(非包名)、版本号、包名等信息,记录一下解决过程。
1. list
使用adb命令查看设备已安装应用列表很简单
adb shell pm list packages -3
但命令只能获取到应用包名
2.dumpsys
想要获取应用的详细信息需要使用以下命令
adb shell pm dumpsys package [pkgName]
但查看输出发现,该命令可以获取到包名、版本号、权限等字段,就是没有app名字
3.aapt工具
想要获取app名字需要使用aapt工具
//1.查询应用安装包路径
adb shell pm list packages -f
//2.将安装包pull到本地
adb pull [安装包路径] [本地路径]
//3.使用aapt工具解析安装包
aapt d badging [本地apk路径]
可以这个方法比较麻烦,每个app都需要先pull到本地再解析,而一般手机上几十个甚至上百个app,这种方法就不太适用了
4.终极方案
经过查询发现了一种终极解决方案,就是将appt push到手机中执行
参考文章:
adb push aapt-arm-pie /data/local/tmp
adb shell chmod 0755 /data/local/tmp/aapt-arm-pie
然后获取手机上应用安装包路径
adb shell pm list packages -f
执行aapt命令解析
adb shell /data/local/tmp/aapt-arm-pie d badging [apk路径]
这样就可以直接在shell命令中获取apk的详细信息了