美文网首页
通过ADB方式直接获取APP名字,非包名

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

作者: 夏_Leon | 来源:发表于2020-03-11 14:46 被阅读0次

    通过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。

    相关文章

      网友评论

          本文标题:通过ADB方式直接获取APP名字,非包名

          本文链接:https://www.haomeiwen.com/subject/saeqjhtx.html