[Android] Using ADB QR code pairing in R

shakalaca
3 min readJun 12, 2020

在最新的 Android 版本 R 加入了 Wireless debugging 的選單,嚴格來講 adb 本來就可以透過網路連結,但在先前的版本你得先使用 USB 連線,透過 adb tcpip 指令才能啟用網路連結功能,步驟相對繁瑣而且手機不設防的暴露在網路中,增加被入侵的風險。Android R 除了可以直接在系統裡面啟用這功能以外,也加入了配對碼的設計,讓 Wireless debugging 更加方便與安全。

Wireless debugging 選單

不過裡面有個神妙的功能:Pair device with QR code,除了手機上找不到任何說明以外,官網上也沒有任何文件。花了點時間追一下 code 終於瞭解這個雞肋功能如何使用。

首先 ADB Pairing 用的 QR code 格式如下:

WIFI:T:ADB;S:<name>;P:<code>;;

name 為你定義的 instance name,code 則是配對碼,接下來我們會透過 dns-sd 工具程式查詢手機位址,最後使用 adb pair 進行連線。假設我們的 QR code 內容如下:

WIFI:T:ADB;S:debug;P:123456;;

代表我們要讓手機建立一個名稱為 debug 的 adb 連線服務,配對碼為 123456,產生的 QR code 會長這樣:

在手機裡點選 “Pair device with QR code“ 進行掃描,完成後會進入配對等待畫面。接著在電腦使用 dns-sd 指令查詢手機的位址:

$ dns-sd -L debug _adb-tls-pairing._tcp

執行後你會看到類似這樣的輸出結果:

debug._adb-tls-pairing._tcp.local. can be reached at Android.local.:38362 (interface 4)

Android.local.:38362 便是手機在網路上的位址 (名稱與通訊埠的組合),透過 adb 指令即可連線:

$ adb pair Android.local.:38362 123456

為什麼說是雞肋功能呢? 因為同個畫面上有另一個 “ Pair device with pairing code “ 的功能,除了讓手機進入配對等待狀態,也會顯示配對需要使用的資訊 (code,ip address,port):

以上面畫面為例,使用者只要在電腦輸入下面指令即可連接手機:

$ adb pair 192.168.86.26:41776 563475

比起使用 QR code 後再查詢位址連線更為直覺,那 QR code 的好處是什麼?除了可以寫 script 自動化以外,也有機會讓桌機的工具軟體『自動偵測』adb 連線,難不成是這次 release 的彩蛋嗎?;-)

--

--

Responses (2)