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