###### tags: `Android App` {%hackmd BPS70ijYRAKtBg90J9y3_Q %} # 一次搞懂 Android 行動裝置的偵錯功能 眾所周知,AVD 相當耗用電腦資源,如果開發者與筆者一樣、其使用的電腦性能欠佳,AVD 基本上會把 CPU 與 RAM 吃乾抹淨:所以一臺 Android 行動裝置幾乎是 Android App 開發的必備品。 ## USB 偵錯 最常見的偵錯方法不外乎就是 USB 偵錯,我們只需要進入行動裝置的 ``` 設定 > 開發人員選項 ``` 並開啟「USB 偵錯」的選項即可。 ## 無線偵錯 :::warning :warning: **無線偵錯為 Android 11 後的新功能,請先確定偵錯用裝置的 OS 版本。** ::: 雖然電腦資源消耗的問題解決了,但是連著一條線來進行偵錯還是有些不方便。因此 Android 11 後的 SDK 提供了無線偵錯的選項:該功能由 `platform-tools` 中的 Android Debug Bridge (ADB) 執行,我們首先需要將 `platform-tools` 資料夾的路徑加入環境變數,並重新開啟 Android Studio。 我們接著進到行動裝置的 ``` 設定 > 開發人員選項 > 無線偵錯 ``` 進行裝置的配對。 :::warning :warning: **行動裝置與電腦必須連接到相同的 Wi-Fi,配對才得以實現。** ::: 按下「使用配對碼配對裝置」後,系統會跳出一組配對碼、行動裝置的 IP 位址和一組通訊埠號碼。 接著回到 Android Studio,在 Terminal 中輸入 ```= adb pair <IP>:<通訊埠> ``` 此時 Terminal 會跳出 ``` Enter pairing code: ``` 輸入剛才取得的配對碼後,我們就完成了裝置的配對。 最後在 Terminal 中輸入 ```= adb connect <IP>:<連接埠> ``` 我們便可以看到 Android Studio 的 Running devices 由 AVD 變成了我們的行動裝置。 :::warning :warning: **這次的 `連接埠` 要改用無線偵錯頁面中「IP 位址和通訊埠」的通訊埠編號。** ::: :::info :information_source: **關於重新連接行動裝置** 若我們重新開啟無線偵錯,並重複以上的步驟,我們會發現連線失敗,且 Terminal 輸出 ``` cannot connect to <IP>:<連接埠>: 無法連線,因為目標電腦拒絕連線。 ``` 的錯誤訊息。這是因為我們使用了原先的連接埠,而該連接埠已經失效了:我們要分別到行動裝置的無線偵錯頁面、Android Studio 的 Device Manager 當中刪除先前的配對紀錄,再重新進行上述的各個步驟。 ::: :::info :information_source: **相信我,CLI 比 GUI 好多了。** 在上一小節中,我們都是直接在 [CLI](https://zh.wikipedia.org/zh-tw/%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%95%8C%E9%9D%A2)、也就是 Terminal 上連接行動裝置。不過有些人會發現,行動裝置上的無線偵錯還有「使用 QR 圖碼配對裝置」這個選項:其實 Android Studio 早有內建一個名為「Pair devices over Wi-Fi」的 GUI,該介面同時支援 QR Code 與配對碼的配對方式,而其底層的實現當然仍是 ADB: ![](https://i.imgur.com/qYySPCA.png) | <div style="width:200px">以 QR Code 配對</div> | <div style="width:200px">以配對碼連接</div> | | ---------------------------------------------- | ------------------------------------------- | | ![](https://i.imgur.com/cZ6ATYN.png) | ![](https://i.imgur.com/AN41IgF.png) | ![](https://i.imgur.com/XTcsDg1.png) 不過這個 GUI 常常出狀況,配對的過程經常會莫名地耗時良久,且最後往往仍然會連接失敗。與其浪費時間,建議讀者還是使用穩定的 CLI 為佳。 ::: ## 參考資料 - [Android 11 新增無線偵錯 (Wireless Debugging)](https://blackmaple.me/android-11-wireless-debug/) - [Android Debug Bridge (ADB)](https://developer.android.com/studio/command-line/adb) - [Android 11 wifi adb error "Unable to start pairing client"](https://stackoverflow.com/a/65052415/17737901)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up