ADB命令卸载系统预装应用

时间:2022-05-02 01:38:46

https://developer.android.com/studio/command-line/adb

系统预装的应用分3种:

不可卸载
这部分没有 root 权限,是不能卸载的。比如 Phone、Message、Calendar 等。
可卸载,可恢复
这部分没有 root 权限,用户也可以卸载,但恢复出厂后又会回来。比如 EMUI 预置的很多第三方的 APP。
可卸载,不恢复
这部分预置在 data 分区,data 分区是用户存储数据的分区,恢复出厂清空数据时也会清理掉这部分 APP。这种情况一般作特殊用途,比如出厂前测试硬件好坏的部分工具 APP,测完恢复出厂,用户也就感觉不到了。
通常说的卸载预置应用是指第1种的,但上面也说了,没有root权限是不能卸载的,实际上本文要介绍的方法处理起来与上面第2种情况类似,虽说可以免root卸载预置应用,但也不是彻底删除APK,让它不可恢复(root后的删除一般是彻底删除)。

首先手机端激活开发者模式,然后连接type-c线到电脑端,cmd shell进入调试模式,
有两种方式可查找要删除的应用名称

  1. 使用pm list packages | grep "app"命令查找;
  2. 先打开APP,再用dumpsys window | grep mCurrentFocus查看当前界面信息;

然后卸载:

pm uninstall -k --user 0 packageName

其中-k 表示保存数据,不需要可去掉 -k。--user 指定用户 id,Android 系统支持多个用户,默认用户只有一个,id=0。

Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
守护进程 (adbd):在设备上运行命令。守护进程在每个设备上作为后台进程运行。
服务器:管理客户端和守护进程之间的通信。服务器在开发计算机上作为后台进程运行。
adb 包含在 Android SDK 平台工具软件包中。您可以使用 SDK 管理器下载此软件包,管理器会将此软件包安装在android_sdk/platform-tools/。或者,如果您需要独立的 Android SDK 平台工具软件包,可以点击此处进行下载。

Windows ADB安装:
https://dl.google.com/android/repository/platform-tools-latest-windows.zip

adb 的工作原理
当您启动某个 adb 客户端时,客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。

然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护进程 (adbd),便会与相应的端口建立连接。请注意,每个模拟器都使用一对按顺序排列的端口 - 用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口。例如:

模拟器 1,控制台:5554
模拟器 1,adb:5555
模拟器 2,控制台:5556
模拟器 2,adb:5557
依此类推…

如上所示,在端口 5555 处与 adb 连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。

服务器与所有设备均建立连接后,您便可以使用 adb 命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个 adb 客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。