如何遠端操控 Android 手機
需求
因為疫情的關係,公司已經實施了一陣子的在家上班 WFH 的政策。 也導致了一些平常我人在公司可以完成的事情,在家工作後就會變得非常不易。
今天有個需求是需要針對機房裡面的 Android 手機進行排錯、修復甚至是重啟 App。 前一陣子的作法就是有問題後,我會進公司到機房做一些基礎的排錯。 但是一來一回來個幾次後,就非常地沒有效率。
因此公司的 Android 工程師決定幫我一把,教我如何遠端操控機房的手機。 讓我可以之後不需要一直進機房也可以藉由電腦遠端手機排錯進行一些簡易的處理。
作法
注意:以下教學皆屬學術研究,請勿拿去做非法的行為。
注意:以下操作皆在 Terminal 下完成。
前置作業
安裝
-
首先需要安裝 scrcpy (一款像是 iOS 的模擬器,可以顯示畫面與操控 Android 手機)
brew install scrcpy
-
接著需要安裝 Android 的 SDK Platform Tools,以便後續的 debug 操作
brew install android-platform-tools
指令介紹
adb 全名為 Android Debug Bridge ,一種利用指令列來與 Android 手機溝通的 debug 工具。
adb devices # 可以列出所連接的手機
adb tcpip 5555 # 修改手機的 port 為 5555
adb connect <IP>:5555 # 藉由 IP 連接手機
adb disconnect # 取消連接手機
adb shell input keyevent KEYCODE_POWER # 測試是否可以觸發手機的電源鍵
scrcpy # 利用 scrcpy 連接手機
實機操作
-
將手機打開開發者模式(因每一款機型皆不同,這邊就不贅述了),將 USB 偵錯模式打開
-
將手機與電腦連接,第一次應該會跳出權限同意,點擊同意並永遠允許或是紀錄 RSA 金鑰以便後續無需再次同意
-
利用
adb devices
來確認是否有連結到手機,如下圖所示注意:一次建議只連結 1 台裝置,不然後續的 scrcpy 會有問題。
-
利用
adb tcpip 5555
將port 改成 5555 -
拔除 USB 線,到手機的 wifi 或是網路查看 IP,記下來後,在 Terminal 輸入
adb connect <IP>:5555
如果 IP 沒有被自動切換的話,應該是可以連接到的 -
可以輸入
adb shell input keyevent KEYCODE_POWER
來測試是否連接成功,如果有的話應該是會關閉螢幕的 -
接著打開手機螢幕,並在 Terminal 輸入
scrcpy
,就會跳出 Android 的畫面囉!(如果有需要允許操作記得點擊允許 ✅ ),接著就可以做任何你需要的操作!
-
結束後,記得取消連接
adb disconnect
後續作業步驟與要點
上述就是基本上如何遠端操作 Android 手機的作法。
後續只要 3 個步驟即可遠端操作手機了。
adb connect <裝置IP>:5555
scrcpy
adb disconnect
但有幾個需要注意的要點是
-
手機需要是打開螢幕的,因此有特別設置接上電源時不關閉螢幕
-
手機連結的 IP 建議是固定的,要不然下次可能會連結不到
具體作法可以指定哪些手機使用哪些 IP 。
或是更 hack 方式,寫一個 App 安裝進去,IP 有變化時就回報給 RD 知道。
ps. Android 大神還幫我寫了內部使用查詢手機 IP 的工具,佩服佩服
-
一次建議只連結 1 個裝置,要換下一個裝置時記得取消上次的連結
總結
藉由上述的操作,之後只要於 Terminal 中輸入指令就可以進行遠端操作 Android 手機了。
可以大大的提升工作的效率。
不過也讓我意識到,真的不能讓手機離開自己的視野 XDD。
還有文中的 Android 大神讓我覺得原來做一個小產品就跟疊積木一樣。 他簡易地寫一個網頁、寫可以 IP 變化後打 API 到 DB 的 APK、DB 採用 Firebase Storage、後端 API 架設在 Heroku,就這樣做出可以簡易查詢手機對應的 IP 工具。 果然事情拆分的越小然後一步一步去完成去修正方向,這樣成功的機率也更大!
這篇文章花了我些時間撰寫,如有錯誤歡迎指正喔!
也歡迎大家幫我點擊下方 ⬇️ 的 LikeCoin 按鈕 5 下給予肯定與回饋,讓我能持續的創作撰寫下去XDD。
- 原文作者:Spark
- 原文連結:https://sparkdoaz.com/post/remote-control-android/
- 版權聲明:本作品採用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议進行許可,非商業轉載請註明出處(作者,原文連結),商業轉載請聯繫作者獲取授權。