2016年5月9日 星期一

Android Wi-Fi debug功能

問題

  最近筆者在研究要怎麼使用Android消費型平板上的micro USB與Arduino或其他裝置透過UART進行溝通。但遇到一個非常麻煩的問題: 唯一的micro USB已經被UART轉板佔據住,沒辦法透過USB去抓debug訊息.........

  為了降低後續開發的痛苦,筆者試著找看看有沒有其他方式可以抓到debug訊息

Fig 1. Nexus 7 + USB OTG線 + USB to UART轉板

解決方案

  參考Android Developers網頁可以發現Android的設計上有Wireless debug[1]的方案,只需透過adb工具即可開啟Wi-Fi debug功能,詳細說明如下

  環境

  • Android裝置: Nexus 7 2013 + Android 6.0.1
  • 電腦: Macbook + OSX 10.11.4
  • adb 1.0.32

  步驟

  1. 使用USB線連結Android裝置與電腦
  2. 確認USB偵錯有開啟
  3. Fig 2. 開啟USB偵錯

  4. 將Android裝置連線到Wi-Fi的AP上,並找到Android裝置的IP
  5. 方法1: 由Android裝置的Wi-Fi設定找到目前IP位置,但並不是所有裝置都可以直接看到IP,例如筆者的Nexus 7就是不能透過此方法看到IP的機器之一.......
    Fig 3. 透過Wi-Fi設定找尋IP位置,筆者的Nexus 7不適用QQ.....

    方法2: 透過adb指令找到Android裝置的IP位置
    # 對Android裝置下ifconfig命令 # adb shell: 透過adb對Android裝置下指令 # ifconfig: 列出所有網卡的資訊 shiun@test:~$ adb shell ifconfig
    Fig 4. 透過adb指令找到IP位置為192.168.1.195

  6. 使用adb命令開啟Wi-Fi debug功能
  7. # 開啟Wi-Fi debug功能,並設定連線port 5555 shiun@test:~$ adb tcpip 5555 restarting in TCP mode port: 5555
  8. 拔掉USB連接線
  9. 在電腦端下連線指令
  10. # 連線至Android裝置 shiun@test:~$ adb connect 192.168.1.195 connected to 192.168.1.195:5555
  11. 接著到Android Studio上看結果


  12. 最後要收工的時候記得要關閉Wi-Fi debug功能
  13. # 關閉Wi-Fi debug功能 shiun@test:~$ adb usb restarting in USB mode

補充

  若讀者的Android裝置為已root裝置(adb shell進入後直接是root身份的開發板也行),則可考慮直接安裝WiFi ADB - Debug Over Air這套app即可

參考資料

沒有留言:

張貼留言