ADB使用WiFi进行除错 – ADB Over WiFi

ADB使用WiFi进行除错 – ADB Over WiFi

ADB (Android Debug Bridge)为Android平台上的除错工具,它可以让你连线至模拟器或是实际的Android装置,所以提供了三种模式:

  • Client 客户端,DDMS会执行很多的Client连线至伺服端并取得资料
  • Server 伺服端,执行在装置或模拟器上提供客户端的连线与客户端互动
  • Daemon 背景程式,这是以背景模式执行在伺服端

当装置开启除错模式时,装置上的adb会执行在USB模式与电脑上的adb操作互动,以下的命令都是执行在电脑端上的角色并对装置下命令,利用命令方式最后可以达成ADB Over WiFi,简单的来说就是将装置上的ADB Server改成透过网路的方式接收ADB的命令。

列出已连接的装置

执行下面命令可以列出目前已连接的装置

adb devices

装置有连线并开启除错模式时会看到下面的回应

List of devices attached
CB5A1LMBP9  device

其中,CB5A1LMBP9为你的装置名称,要记住这一项,后面对装置下命令时都会需要指定装置名称,如果你能确定连线的装置只有像上述单一个,那么就能省略不指定装置名称。

取得装置上的无网路IP

你的装置开启除错模式时,并且使用传输线与电脑连接后,再将你装置上的WiFi开启,装置必需要确定有连上无线网路,而且 电脑与装置必需要在同一个网段上,否则ADB在连线可能会失败。取得IP方式有两种,最顺利的是直接用方法1,如此就不需要再在手机上操作。

  • 方法1

取得装置上无线网路IP的命令:

adb -s 装置名称 shell ip -f inet addr show wlan0

照刚取得的装置名称填入,像下面这样:

adb -s CB5A1LMBP9 shell ip -f inet addr show wlan0

正确无误后可以看到回应讯息如下面讯息:

dannydeMac-Pro:platform-tools danny$ ./adb -s CB5A1LMBP9 shell ip -f inet addr show wlan0
31: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 100
    inet 192.168.9.10/24 brd 192.168.9.255 scope global wlan0
dannydeMac-Pro:platform-tools danny$

inet开始到/24中间就是IP,回应讯息了解IP位址是192.168.9.10,等会之后就是要连线到这个IP与装置互动。

  • 方法2

开启设定之后再开启Wi-Fi,选择已连线的无讯SSID名称就可以看到IP讯息,像图上所看到的。

变更ADB连线模式

将装置上的adb启动网路模式,命令如下:

adb -s 装置名称 tcpip 5555

以上命令会让adb能支援tcpip模式,所以照范例的资讯改成:

adb -s CB5A1LMBP9 tcpip 5555

执行后如果可以看到下面的讯息,那代表你在装置上成功的开启TCP模式,装置会接收客户端从连接埠5555送过来的命令请求,

restarting in TCP mode port: 5555

ADB透过网路连线至装置

先前已经有取得IP(192.168.9.10),接下来在电脑上透过ADB来与装置连线:

adb connect 192.168.9.10

连线成功后会看到下面的提示:

connected to 192.168.9.10:5555

此时我们再来看一下装置状态,执行一下命令:

adb devices

当我们未将USB线拔除时,整个过程完成会看到2个装置存在,一个是透过USB连线,一个透过网路连线。

List of devices attached
CB5A1LMBP9  device
192.168.9.10:5555   device

开启DDMS或ADM查看LogCat讯息

虽然已经都确定连线完成,但最终还是要配合官方的工具来查看除错讯息,所以至下载好的SDK目录中的tools目录中执行程式,

官方提供的工具中可以使用的除错工具有两种:

  • DDMS(Dalvik Debug Monitor)

DDMS执行程式名称为ddms,早期单独使用时都是使用这个工具,后来比较多人使用ADM。

  • ADM(Android Debug Monitor)

程式全名Android Debug Monitor,在官方网上是称呼Device Monitor,这里我用简短的ADM形容,它的执行程式名称为monitor,命名的方式比较特别,ADM与DDMS较大不同是ADM提供整合的工具平台,像:

  • DDMS
  • Tracer for OpenGL ES
  • Hierarchy Viewer
  • Systrace
  • Traceview

所以单独使用的话依照你的需求可以自行选择,下图就是ADM的画面撷图:

从图中能看到名称中带有IP的就是使用网路方式的连线模式,当然你的装置如果不是无线网路而是有线网路的也是可以使用此方式去连线。

回复至USB模式

要回复至USB模式有两个方式:

  • 网路
adb -s 192.168.9.10:5555 usb

  • 传输线连接
adb -s CB5A1LMBP9 usb

看到提示代表回到USB模式

restarting in USB mode

再次的检查一下装置状态,同样执行命令:

adb devices

下面提示已经看不到网路ip组成的装置名称:

List of devices attached
CB5A1LMBP9  device