adb工具配置和使用
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安装包的方式安装
下载地址
配置环境变量
下载解压后将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调试模式
打开开发者选项隐藏开关:
开启手机的开发者模式,方法是进入设置里的关于手机(我的设备),然后点击里面的参数信息多次,若该参数信息是正确的则会提示再次点击可开启开发者模式,打开后返回系统管理界面就能看到开发者选项。
开启USB调试:
打开开发者选项,然后往下继续找到USB调试开关,打开。
adb连接安卓设备
打开手机上的开发者选项和开关后用USB连接,接着点击手机上的允许调试。
打开电脑终端,输入以下指令
1 | adb devices -l |
查看输出结果,就可以看到设备是否连接成功
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 | adb kill-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可以停止屏幕录制