這一篇讓你的手機曝露於資安風險之中!
請先確認 usb 連線的 adb 功能 正常無誤。 想要改用 wifi 來對手機 adb 連線, 你的手機必須 root。 並且建議先安裝一個終端機模擬器 (例如 f-droid 的 terminal emulator) 以便實驗失敗、 暫時無法從電腦上用 adb shell 下指令時, 還可以直接在手機上面下指令。 以下不論是從電腦連手機, 或是直接在手機上用 terminal emulator, 都必須先 su 變身成 root。 (但是電腦端, 可以用一般用戶的身份下 adb 指令。)
註1: 懶人請直接搜尋 「adb wifi」, 有 app 可以幫你。 註2: 不要誤會, 這不是什麼好用的遠端遙控手機圖形介面; 這篇只是教玩家們如何從遠端使用 adb 命令列 操控手機。
- 先指定: 未來用 wifi 連線時, 使用 port 5555。
可以從電腦上用
adb tcpip 5555
或是在手機上用setprop service.adb.tcp.port5555
來達成。 這只是設定參數, 還沒有真的啟動。 如果你是用 adb shell 來下這個指令, 有可能下完之後會被踢出來; 但其實還是可以連回去。 可以在下指令之前跟之後查看:getprop service.adb.tcp.port
確認其效果。 - 在手機上:
stop adbd ; start adbd
如果你是用 adb shell 連線, 這兩個指令一定要打在同一列, 不然下完第一個指令你就被踢出來拜拜了 :-) - 在手機上, 到 Settings => Developer options => ADB over network 打勾, 對對我不怕資安風險, 並且抄下手機的 ip 及 adb port。 比方說是 192.168.1.235:5555 好了。
- 回到電腦上,
adb connect 192.168.1.235
應該會出現 connected to 192.168.1.235:5555 那就成功了!
玩完了以後, 只要在手機上再度到 Settings => Developer options => ADB over network 取消打勾, 就可以改回 usb 連線模式。
以上是根據
這篇問答 再加上自己的實驗修改出來的筆記。
也請搜尋 「adb wifi」。 我覺得裡面提到的 (電腦上)
adb tcpip 5555
指令跟 (手機上)
setprop service.adb.tcp.port5555
指令的效果相同,
所以應該只需要擇一即可。
官方手冊 寫 tcpip 的部分也怪怪的...
實驗過程當中如果失敗, 有幾個動作有助於除錯:
- 確認手機的 Developer options 裡面的 USB debugging notify 有打勾。 這樣連線成功時會有訊息。
- 另外準備一部電腦、 一部手機或平板, 不改變任何設定, 而是只用來跟實驗中的機器插線拔線, 用排列組合的方式來確認到底是誰出問題。
- 手機那邊, 有時可能需要重新啟動 adb:
stop adb ; start adb
- 電腦這邊, 也可能需要停掉 adb:
adb server stop
。 不需要adb server start
, 因為下 adb 指令時, adb server 會自動重新啟動。 - 但有時上面的指令無法完全停掉 adb server。
請用
ps ax | grep adb
確認已無 adb 程序。 如果還有, 就要kill
掉 (參數是上列指令結果最左側的 pid)。
其實透過 wifi 用 adb 也並沒有那麼危險啦。 最大的問題就是它沒有密碼保護。 所以最重要的就是: 每當有人要用 adb 連我的手機時, 要確認到底是誰才打勾。 而且除了你自己的電腦之外, 最好只允許本次連線。 因為你不曉得下次連線時, 操作 [原本你所信任那部] 電腦的人是誰。 此外, 手機重開機, 就會自動取消 wifi adb 功能。
作者已經移除這則留言。
回覆刪除