adb

✅ 两个问题直接结论

  1. adb 完全可以查出手机安装的所有应用(包名),不需要Root,只需要开启USB调试
  2. adb 可以把已安装应用的apk提取(pull)到电脑,相当于打包导出,第三方用户APP免Root;部分系统预装APP要看分区权限

原理:不是重新编译打包,是直接拷贝手机上已经存在的原始安装文件 base.apk(现代很多App是Split APK,会有多个apk,需要全部拉取)

一、查看已安装APP命令

# 列出全部应用(系统+第三方)
adb shell pm list packages

# 只列出【第三方自己装的APP】(推荐,过滤系统预装)
adb shell pm list packages -3

# 列出同时附带apk路径
adb shell pm list packages -3 -f

Windows筛选某个包名示例(找fake gps这类虚拟定位app):

adb shell pm list packages -3 | findstr fake

二、导出APK完整流程(免Root)

  1. 先查包路径
adb shell pm path com.xxx.appname

输出示例:package:/data/app/~~xxxx==/com.xxx.appname-xxx/base.apk

把 package: 后面的路径拿出来

  1. pull拉到电脑(windows示例,保存到当前cmd目录)
adb pull /data/app/~~xxxx==/com.xxx.appname-xxx/base.apk ./output.apk

⚠️ 重要限制

  1. Split APK(App Bundle):现在很多应用不是单个base.apk,会返回多条路径,需要把所有apk全部pull,只拉base.apk会安装失败。
  2. 系统核心应用:/system/priv-app 部分高权限系统应用,普通adb shell权限会Permission denied,需要Root才能导出。
  3. 导出的apk = 原始安装包,不含用户账号数据,只是安装文件;如果要连带应用数据备份,要用adb backup。
  4. 合规提醒:仅用于自己设备、自己安装的应用调试备份;不要提取别人的商业APP用于逆向、分发。

前置准备

  1. 手机开启开发者选项 + USB调试,电脑授权RSA调试
  2. 电脑安装Android SDK Platform Tools(官方adb)
  3. 数据线连接,先校验连通:adb devices,能看到设备序列号才可以

补充小技巧

查看当前前台正在打开的APP包名:

adb shell dumpsys window | findstr mCurrentFocus
posted @ 2026-09-22 16:12  aiplus  阅读(28)  评论(0)    收藏  举报
悬浮按钮示例