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