使用安卓adb命令行来管理手机软件

Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作,例如安装和调试应用。adb 提供对 Unix shell(可用来在设备上运行各种命令)的访问权限;
—— 摘自 adb官方使用文档

我也是在开发 flutter app 的时候接触了 adb 的,发现还可以通过 adb 去删除顽固软件。
首先我们在电脑上安装 adb 工具,如果你做 flutter 或安卓开发,可以直接在 Android Studio 里面下载,当然也可以单独下载 adb 工具,下载链接点击这里

下载安装完成之后,需要配置好环境变量,配置完成执行 adb 命令就可以了,adb 执行流程如下:

1、安卓手机打开开发者工具并启用 USB 调试,安卓手机会启动一个 adbd 的守护进程来供 adb 服务访问
2、开发者电脑通过 adb 服务器扫描开启 adbd 守护进程的手机并建立连接
3、adb 客户端(cli)通过命令行来向 adb 服务器发送指令,adb 服务器来与手机进行交互

pasted-20230825234256

连接设备

使用下面查看已连接的设备,如果有设备连接到就会直接展示出来:

adb devices

有下面的两种链接方式:

1、使用 USB 链接
手机打开开发者模式并启用 USB 调试即可。

2、使用 wifi 链接设备
注意电脑和手机要处于同一个局域网下面,然后执行下面的命令就可以连接了。

# 连接老的设备,Android 10.0以及以下版本,我们找到设备的IP地址,连接5555端口即可
# 基于安卓的网络电视一般就可以这样连接
adb connect <ip_address>:5555

# 连接新的设备,Android 10.0以上,除了ip之外,我们需要知道端口号
# 可以在手机开发者模式中启用wifi调试,就会展示IP和端口号,使用下面的命令后在命令行写上配对码就能连接成功了
adb pair <ip_address>:<port>

执行操作

如果只连接了一个设备,直接执行命令就可以了,例如给手机安装一个 apk 程序

adb install xxx.apk

如果连接了多个设备,就需要指定设备去执行,设备序列号可以使用 adb devices 去查看,例如下面是给模拟器安装一个 apk,这里的 emulator-5554 就是模拟器的序列号。

adb -s emulator-5554 install xxx.apk

还有一种快捷的的方法,如果你只有一个物理设备和一个模拟器设备,可以不使用传递序列号,如下

# 安装到唯一的模拟器上
adb -e install xxx.apk
# 安装到唯一的物理设备上
adb -d install xxx.apk

常见操作

如果你连接了多个设备,需要指定设备执行操作,请查看上一段的说明。

1、设置端口转发,将电脑的6100端口转发到设备的7100端口,就可以使用 localhost:6100访问设备7100端口的内容了,可以实现设备上的资源局域网共享(而电脑作为一个代理服务器);

adb forward tcp:6100 tcp:7100

2、复制文件,push 是推送文件或目录,pull 是下载文件或目录,该操作会完整操作目录

# 发送文件
adb push localPath devicePath

# 拷贝文件,localPath不传递,默认是当前目录
adb pull devicePath localPath

3、停止电脑上的 adb 服务,如果连接设备等出错,可以尝试停止服务后,在通过 adb 其他命令重启

adb kill-server

4、在设备上执行 shell 命令,如果有多个设备请参考上面参数

adb shell <shell>

如果 <shell> 没有传递,会进入到一个 shell 的命令行,执行命令也是一样的,退出 ctrl+d 即可。
支持的 shell 命令大部分可以在 toybox 查询。

内置的 shell 工具

使用 adb shell 进入到内置的 shell 命令行,就可以执行内置的命令了,下面的常见的一些命令。

1、am(activity manage)启动 activity、强行停止进程、广播 intent、修改设备屏幕属性;
详细的使用可以参考官方文档说明

2、pm(package manage)包管理,安装、卸载软件包等,常见的操作如下所示,其他的参考官方文档说明。我们可以使用下面的命令来卸载一些安卓自带的但是在桌面上无法卸载的软件,例如小米手机就内置了很多删不掉的软件,有一部分我们可以使用 pm 删除删除掉。

# 列出所有的软件包,包括系统的软件包
pm list packages
# 查看包的路径
# pm path com.miui.audioeffect
# package:/system/priv-app/MusicFX/MusicFX.apk
pm path <packageName>
# 删除软件包
# pm uninstall --user 0 com.miui.audioeffect
# 0 是user_id,一般都是0,可以通过 pm list users 查看到
pm uninstall <packageName>
# 清除软件包的信息但不卸载,类似于程序管理里面的清除数据
pm clear <packageName>
# 停止某些应用,但不删除,适用于系统应用又删不掉的那种
pm disable <packageName>
pm disable-user <packageName>
# 启用应用,和停用相反
pm enable <packageName>

3、屏幕截图

adb exec-out screencap -p > 1.png
# 或者下面
adb shell screencap /sdcard/1.png
adb pull /sdcard/1.png

4、录制视屏,录制视频的详细参数请查看官方说明文档

# 如果设置的尺寸和屏幕尺寸不同,就会有黑边
adb shell screenrecord --size=1280x720 --verbose /sdcard/1.mp4
adb pull /sdcard/1.mp4

留下回复