0x01 下载安装与环境变量配置

介绍

adb全称全称为Android Debug Bridge(安卓调试桥),它可以与设备进行通信,实现操作管理Android设备

作用

1、通过电脑的命令行使用adb,对安卓设备进行操作

2、比如可以在设备上安装或卸载应用

3、可以获取设备的基本信息等

来源

1、adb 是Android SDK Platform-Tools中的一个工具,而Android SDK Platform-Tools是Android SDK的一个组件

2、对于安卓开发人员来说,在安装IDE (Android Studio)时或是android SDK时就已经带有这个工具

3、而对于非开发人员,也可以通过直接下载adb安装包的方式安装

下载地址

SDK Platform-Tools下载地址

配置环境变量

下载解压后将adb所在的地址添加到系统里的环境变量,然后再cmd命令行输入adb,若有adb的信息出现说明配置成功。

0x02 通过adb连接安卓设备

adb的工作原理

adb 提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

客户端:用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。 守护程序

守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。

服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。

abd的工作流程

1、当某个adb 客户端启动时,会先检查是否有 adb 服务器进程已在运行

2、如果没有,它会启动服务器进程

3、服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令

4、服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间的奇数号端口查找模拟 器。服务器一旦发现 adb 守护程序 (adbd),便会与相应的端口建立连接

5、服务器与设备建立连接后,便可以使用 adb 命令访问这些设备

开启手机USB调试模式

打开开发者选项隐藏开关:

开启手机的开发者模式,方法是进入设置里的关于手机(我的设备),然后点击里面的参数信息多次,若该参数信息是正确的则会提示再次点击可开启开发者模式,打开后返回系统管理界面就能看到开发者选项。

1e0c56eb2105dcdb9c3aced9ef82ed9

开启USB调试:

打开开发者选项,然后往下继续找到USB调试开关,打开。

0633c66f346bf53bf58ccd4a9712c63

adb连接安卓设备

打开手机上的开发者选项和开关后用USB连接,接着点击手机上的允许调试。

打开电脑终端,输入以下指令

1
adb devices -l

查看输出结果,就可以看到设备是否连接成功

image-20240409222351890

adb devices -l的含义

作为“adb devices -l”的响应,adb 会针对每个设备输出以下状态信息:

序列号:adb 会创建一个字符串,用于通过端口号唯一标识设备。下面是一个序列号示例:emulator-5554

状态:设备的连接状态可以是以下几项之一:

offline:设备未连接到 adb 或没有响应。

device:设备已连接到 adb服务器。请注意,此状态并不表示 Android 系统已完全启动并可正常运行,因为在设备连接到 adb时系统仍在启动。系统完成启动后,设备通常处于此运行状态。

no device:未连接任何设备。

说明:如果加入 -l 选项,devices命令会告知设备是什么。当连接了多个设备时,此信息可以方便区分这些设备。

0x03 使用adb操作手机

查询是否连接

用上个步骤的adb devices命令来检测

如果出现异常可以重启adb服务

1
2
adb kill-server
adb start-server

如果出现daemon started successfully字样,说明adb服务启动成功

尝试安装app

1
adb install "D:\test file\test.apk"

注:当文件路径有空格的情况下,需要给路径加上引号

安装成功后,响应success

若安装失败:

1、设备未连接:adb.exe: no devices/emulators found

2、文件未找到:adb: failed to stat D:\test1.apk: No such file or directory

3、在安卓低系统设备上,这个指令直接用于覆盖安装时会报错:INSTALL_FAILED_ALREADY_EXISTS

在第三种情况中,加伤-r选项可以允许覆盖安装。

卸载应用

1
adb uninstall app_key 

app_key为需要删除的包名

多设备连接

当多个设备连接时,执行命令却未指定设备会报错。

需要在指令中adb后面加上设备的序列号,序列号可以通过adb devices -l查看

0x04 其他指令

启动应用指令

通过adb指令可以直接启动应用,但需要知道应用的启动activity的完整路径

1
adb shell am start 包名

如果不知道应用的启动activity,可以尝试使用下面方法:

1、使用adb指令“adb logcat -c”清空日志

2、再使用adb指令“adb logcat ActivityManager:I *:S”,这样会打印出设备上运行的activity信息

3、启动应用

4、然后在运行信息里面找到包名,一般包名由花括号括起来,然后前面有pre-top-activity字样

使用浏览器打开指定网址

1
adb shell am start -a android.intent.action.VIEW -d URL

URL是网址

杀死应用进程

1、杀死指定应用的进程

1
adb shell am force-stop 包名

2、终止所有后台进程

1
adb shell am kill-all

删除应用所有数据

1
adb shell pm clear 包名

获取设备已安装应用列表

1
adb shell pm list packages 选项 关键字

选项和关键字非必填

如果填写了关键字,将会输出包含关键字的应用

选下有下面几种:

  • -f:查看关联文件。
  • -d:进行过滤以仅显示已停用的软件包。
  • -e:进行过滤以仅显示已启用的软件包。
  • -s:进行过滤以仅显示系统软件包。
  • -3:进行过滤以仅显示第三方软件包。
  • -i:查看软件包的安装程序。
  • -u:包括已卸载的软件包。
  • –user user_id:要查询的用户空间。

复制文件

1、将文件从设备复制电脑

1
adb pull 设备上的地址 本地地址

2、将文件从电脑复制设备

1
adb push 本地地址 设备上的地址

手机截图

当设备连接adb时,可以使用adb指令截图设备屏幕截图

1、截屏,并将截图保存在指定目录下

1
adb shell screencap /文件路径/图片名字

2、将截图复制到电脑

1
adb pull /文件路径/图片名字 本地地址

补充一下录制视频的命令screenrecord,格式和手机截图类似,通过Ctrl + C可以停止屏幕录制