0%

WLAN下进行adb调试

Android调试桥(Android Debug Bridge,简称ADB)。本文主要是记录如何在WLAN网络下进行ABD连接设备以及一些常用的ADB命令,还有ADB的组成以及原理简要说明。

ADB的组成

客户端:用于发送命令,客户端在开发计算机上运行,可以通过adb从命令行终端调用Android设备。
守护程序 (adbd):用于在Android设备上运行命令,守护程序在每个设备上作为后台进程运行。
服务器:用于管理客户端与守护程序之间的通信,服务器在开发机器上作为后台进程运行。

ADB的原理

当启动某个adb客户端时,该客户端会先检查是否有adb服务器进程正在运行。如果没有,它会启动服务器进程。服务器在启动后会与本地TCP端口5037绑定,并监听adb客户端发出的命令,所有adb客户端均通过端口5037与adb服务器通信。可以看成是MySQL与3306的端口的关系。

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

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

如上所示,在端口5555处与adb连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。
服务器与所有设备均建立连接后,便可以使用adb命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个adb客户端的命令,因此可以从任意客户端(或从某个脚本)控制任意设备。

使用WLAN进行ADB连接

使用WLAN进行ADB连接的前提仍然是需要有一根USB数据线,但是只要Android设备的WLAN下的IP不变,就可以丢掉数据线了。
1、首先将Android设备和adb主机连接到这两者都可以访问的同一WLAN网络。请注意,并非所有接入点都适用;您可能需要使用防火墙已正确配置为支持adb 的接入点。

2、使用 USB 线将设备连接到主机。

3、设置目标设备以监听端口5555上的TCP/IP连接:

1
adb tcpip 5555

4、拔掉连接目标设备的USB线,找到Android设备的IP地址。例如,设置 > WLAN设置 > 高级 > IP地址下找到 IP 地址。

5、通过 IP 地址连接到设备:

1
adb connect ${device_ip_address}

6、确认主机已连接到目标设备:

1
adb devices -l

如果 adb 连接断开:
确保主机仍与Android设备连接到同一个WLAN网络,通过再次执行adbconnect 步骤重新连接。如果上述操作未解决问题,则需要重置adb主机:

1
adb kill-server

下面是我通过Wi-Fi连接两台设备的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 此时只有一台小米通过USB进行ABD连接
# adb devices -l 用于查看处于连接中的设备
changlinzou@mac ~ % adb devices -l
List of devices attached
a9c5d217 device usb:339869696X product:gauguinpro model:M2007J17C device:gauguinpro transport_id:72

# 设置小米这台设备以监听端口5555上的TCP/IP连接:
changlinzou@mac ~ % adb tcpip 5555
restarting in TCP mode port: 5555

# 此时移除USB/type-c等有线连接
changlinzou@mac ~ % adb connect 10.73.13.237
connected to 10.73.13.237:5555

# 查看连接结果
changlinzou@mac ~ % adb devices -l
List of devices attached
10.73.13.237:5555 device product:gauguinpro model:M2007J17C device:gauguinpro transport_id:77

# 再通过USB连接一台华为的设备
changlinzou@mac ~ % adb devices -l
List of devices attached
PWHNW19709002241 device usb:339869696X product:GLK-AL00 model:GLK_AL00 device:HWGLK transport_id:78
10.73.13.237:5555 device product:gauguinpro model:M2007J17C device:gauguinpro transport_id:77

# adb -s可以指定对设备进行操作
changlinzou@mac ~ % adb -s PWHNW19709002241 shell
HWGLK:/ $ exit

# 给华为这台设备设置监听端口5557上的TCP/IP连接:
changlinzou@mac ~ % adb -s PWHNW19709002241 tcpip 5557
restarting in TCP mode port: 5557

changlinzou@mac ~ % adb devices -l
List of devices attached
PWHNW19709002241 device usb:339869696X product:GLK-AL00 model:GLK_AL00 device:HWGLK transport_id:79
10.73.13.237:5555 device product:gauguinpro model:M2007J17C device:gauguinpro transport_id:77

# 此时移除华为这台设备的USB连接
changlinzou@mac ~ % adb devices -l
List of devices attached
10.73.13.237:5555 device product:gauguinpro model:M2007J17C device:gauguinpro transport_id:77
changlinzou@mac ~ % adb connect 10.73.14.11
failed to connect to '10.73.14.11:5555': Connection refused

# 多台设备需要指定具体端口,如下
changlinzou@mac ~ % adb connect 10.73.14.11:5557
connected to 10.73.14.11:5557

# 连接成功
changlinzou@mac ~ % adb devices -l
List of devices attached
10.73.13.237:5555 device product:gauguinpro model:M2007J17C device:gauguinpro transport_id:77
10.73.14.11:5557 device product:GLK-AL00 model:GLK_AL00 device:HWGLK transport_id:80

在AndroidStudio中也是可以成功看见两台设备的。

ADB常用命令

虽然使用GUI操作起来比较方便,但是有时候还是需要通过命令来帮我们完成一些事情,所以还是记一下ADB的常用命令,查起来比较方便。

启动/关闭adb
关闭adb服务 adb kill-server
开启adb服务 adb start-server

查看手机设备 adb devices
查看手机设备 adb devices -l

安装/卸载应用
安装本地应用 adb install apk文件的绝对路径
保留数据及缓存文件安装新包 adb install -r apk文件的绝对路径
卸载应用 adb uninstall 应用包名

使用adb读取/写入手机文件
保存手机中文件到本地 adb pull 手机中路径 电脑路径
将本地文件传入手机 adb push 电脑路径 手机中路径

进入shell模式 adb shell

以下命令都是在shell里面执行的

列出手机上面所有安装的apk包名 pm list packages
列出手机上面所有安装的第三方apk包名 pm list packages -3
在包名的基础上面列出apk的路径 pm list packages -f
查看指定包名app的详细信息 dumpsys package package-name
截屏并保存文件在手机 /system/bin/screencap -p /sdcard/xx.png
清除缓存数据 pm clear com.xxx.xxx
指定APP产生随机事件100次 monkey -p 包名 100

  • 本文作者: Tim
  • 本文链接: https://zouchanglin.cn/486253043.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!