一、ADB是什么?
ADB,即 Android Debug Bridge (安卓调试桥)是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,可以在Android SDK/platform-tools中找到 adb 工具。
二、ADB能干什么?
ADB 是 Android SDK 里的一个工具, 用这个工具可以直接操作管理Android模拟器或者真实的Android设备。此处可以想象各种手机刷机工具。它可以:
1、打开手机的shell命令,进入手机的底层系统
2、将本地APK软件安装到模拟器或Android设备上
3、管理Android模拟器或者真实的Android设备重启,设置端口等操作
4、可以将PC端文件上传到设备或将设备中文件下载到PC
ADB程序包括三个组件,分别为:
客户端:运行在开发用的电脑上,可以在命令行中运行adb命令来调用该客户端。
服务端部分:是运行在开发用电脑上的后台进程,用于管理客户端与运行在模拟器或真机的守护进程通信。
守护进程部分:运行于模拟器或手机的后台。
三、ADB运行原理
当启动adb客户端时,客户端首先检测adb服务端进程是否运行,如果没有运行,则启动服务端。当服务端启动时,它会绑定到本地的TCP5037端口,并且监听从adb客户端发来的命令——所有的adb客户端都使用5037端口与adb服务端通信。
接下来服务端与所有正在运行的模拟器或手机连接。它通过扫描5555-5585之间的奇数号端口来搜索模拟器或手机,一旦发现adb守护进程,就通过此端口进行连接。需要说明的是,每一个模拟器或手机使用一对有序的端口,偶数号端口用于控制台连接,奇数号端口用于adb连接,例如:
手机 1, console: 5554
手机 1, adb: 5555
手机 2, console: 5556
手机 2, adb: 5557 ...
即如果模拟器与adb在5555端口连接,则其与控制台的连接就是5554端口。
当服务端与所有的模拟器建立连接之后,就可以使用adb命令来控制或者访问了。因为服务端管理着连接并且可以接收到从多个adb客户端的命令,所以可以从任何一个客户端或脚本来控制任何模拟器或手机设备。
四、ADB命令语法
adb [-d|-e|-s <手机识别码>] <command>
如果只有一个设备/模拟器连接时,可以省略掉参数这一部分,直接使用 adb + 命令即可。
如果有多个设备/模拟器连接,则需要为命令指定目标设备。
ADB命令参数含义:
-d
指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e
指定当前唯一运行的模拟器为命令目标
-s 手机识别码
指定相应设备序列号的设备/模拟器为命令目标
在多个设备/模拟器连接的情况下较常用的是 -s 手机识别码 参数,手机识别码 是指设备的设备序列号,可以通过 adb devices 命令获取。
五、ADB常用命令示例
查看adb的版本信息
adb version
启动adb
adb start-server
停止adb
adb kill-server
以 root 权限运行 adbd
adb root
指定 adb server 的网络端口
adb -P <port> start-server
ADB的默认端口为 5037。
查询已连接的设备/模拟器列表
adb devices
六、使用adb工具连接设备
使用USB 连接
- 需要确认Android 设备的开发者选项和 USB 调试模式已开启
- 确认设备驱动状态正常(安装ADB驱动程序)。
- 通过 USB 线连接好电脑和设备。
- 通过 adb devices 命令查看设备是否连接成功。
使用无线wifi连接
- 将 Android 设备与电脑连接到同一个WiFi网络(局域网)。
- 将设备与电脑通过 USB 线连接(可通过 adb devices 命令查看设备连接情况)。
- 通过 adb tcpip 5555 命令让设备在 5555 端口监听 TCP/IP 连接。
- 通过adb connect ip:port 的方式连接设备(ip为当前设备IP)
- 查看设备是否连接成功adb devices
WiFi 连接转为 USB 连接
通过adb usb命令以USB模式重新启动ADB:
adb usb
**
更多精彩内容详见Python 爬虫工程师必学——App数据抓取实战
**
热门评论
这个和python的关系是?