###### 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:  | <div style="width:200px">以 QR Code 配對</div> | <div style="width:200px">以配對碼連接</div> | | ---------------------------------------------- | ------------------------------------------- | |  |  |  不過這個 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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.