資料線是個磨人的小妖精
移動端開發,特別是 Android,模擬器略卡,也比較容易吃記憶體,所以我幾乎都是電腦連真機除錯執行,連線的紐帶就是一根資料線。
資料線是沒什麼錯的,錯就錯在,它是一根可以肉體可接觸到的實物線。很多時候抬手拿杯子不小心碰了它一下,連線就斷掉了, 想象一下,當寫完一個非常棒的程式碼,準備執行看效果,未發現連線裝置,這種情況發生多次時,內心的語言是十分不健康的。
所以,想給大家分享一個實用的小技巧,來擺脫資料線這個磨人的小妖精。
如何擺脫小妖精
具體操作步驟非常簡單,只要三步,不過有兩個前提條件。
1.電腦配置安裝了 ADB 環境。關注我的絕大部分是 Android 開發人員,這個前提條件應該很好滿足,不多說了。
2.手機和電腦的 IP 要保證是同一個網段內。這個只要連的是同一個區域網,一般都是在一個網段內的。
Step1-連線電腦和手機
第一步仍需要資料線,連線電腦和手機,這一步確保要連線成功,我的確認方法是看 Android Studio 的連線設別列表或 adb devices 命令檢視。
如果你沒有看到裝置,在手機上檢查 開發者選項-USB 除錯 是否開啟。
Step2-設定5555埠
成功連線之後,第二步是設定手機裝置的 WIFI 除錯埠 5555,然後少年,你就可以拔掉資料線啦,第三步已經可以無線的條件下操作了呢。
在電腦上的命令列視窗,輸入下面的命令:
adb tcpip 5555;
複製程式碼
下面是執行結果截圖,提示資訊顯示已經重置了埠。
Step3-連線手機的IP地址
最後一步,一個連線命令即可,如下,但是該命令需要知道手機的 IP 地址。
adb connect <要連線裝置的IP地址>;
複製程式碼
拿到手機的 IP 地址的方法有很多,這裡分享兩個我自己的方法。
第一種是下面這個命令,執行可以檢視到連線裝置的 IP 地址。
adb shell ifconfig wlan0;
複製程式碼
下面紅框標準的地方,就是裝置的 IP 地址。
第二種是在手機操作,開啟 設定-WLAN-配置 頁面,可看到當前 IP 。
拿到裝置的 IP 後,使用 adb connect 命令連線電腦和手機。
以上就完成了整個過程,此時再次執行 adb devices 得出以下結果。沒有通過資料線,但成功的連線上了電腦和手機。
不同就是前面裝置的唯一標識 APU7N16304003941,從 ADB 生成的隨機序列號變成了 IP:port 的具體網路地址 192.168.0.126:5555。
是不是很神奇?
實現原理
其實神奇的是無線通訊,一種利用電波訊號可以在自由空間中傳播的特性進行資訊交換的通訊方式。當然這不是重點,是我在抖機靈,重點在於 ADB 的工作的方式和兩種連線模式。
在日常的開發過程中,一直在使用著 ADB,但是很多人對它所知不多,例如我,現在大家來一起簡單複習下吧。
ADB,是 Android Debug Bridge 的縮寫,中文翻譯為 Android 除錯橋,是一個通用命令列工具。在 android_sdk/platform-tools 中可以找到它,它可以被用來直接操作 Android 的各種裝置。例如 APK 的安裝和解除安裝,檢視手機已安裝應用的包名和簽名資訊等等。
ADB 其實分為三個部分:
- 客戶端 adb client :執行在 PC 上。作用是傳送命令,文章前面,我們輸入的 adb 命令,就是在 client 環境下傳送的。
- 伺服器 adb server :執行在 PC 上。作用管理客戶端和後臺程式之間的通訊。
- 後臺程式 adbd :執行在 Android 裝置上。以後臺服務的形式執行 adb server 發來的命令。
下面是三者關係的簡單示意圖:
ADB 支援兩種方式和 PC 進行連線通訊, USB 和 TCP/IP 。資料線連線使用的是 USB 方式,我們這次介紹的 WIFI 連線使用的是 TCP/IP 方式。
手機上的 adbd 預設使用 USB 模式,如果要使用 WIFI 連線,需要手動開啟 5555 監聽。因此,我們有了上面 adb tcpip 5555;
的這個操作步驟。
實際上,設定 5555 埠監聽,實質上是設定 adbd 中 service.adb.tcp.port 的值。當 adbd 啟動的時候,會先檢查這個值,如果設定了,就是使用 TCP/IP 作為連線方式。如果沒設定,就選擇用 USB 作為連線方式。
如果裝置擁有 root 許可權,可以不用資料線,在手機上通過命令列設定據說也是可以的。手上沒有已經 root 的裝置,沒法實踐。你們條件滿足,有興趣可以嘗試一下。
使用的命令如下:
// adb shell 下面執行一下命令
setprop service.adb.tcp.port 5555
ps |grep adbd
kill -9 {adbd程式號}
複製程式碼
好啦,結束!小夥伴們,趕緊試下這個方法,體驗從有線變無線的感覺,非常棒棒噠。
偷偷告訴你,WIFI 方式可以連線多臺手機呢,再也不用怕電腦上的 USB 插口不夠用了。還可以給測試妹紙的裝置連線上開發電腦上,隨時安裝最新的 APK,也是成功地秀了一波操作!
好啦,我們下篇文章見。喜歡不要忘記給作者點個贊,或者分享給你的小夥伴哦!
PS:
通過評論發現,文章中有幾個地方沒有描述清楚,這裡補充幾點:
-
不是每次連線的時候,都需要插資料線,理論上只是第一次需要。
文章中說到插資料線,是為了設定埠,允許 WI-FI 除錯。所以如果WI-FI 除錯使用過程中,連線斷掉,只需要再次使用 connect 命令就好了。
為什麼說理論上,因為評論中「設計師吳彥祖」同學提出 “大部分國產手機可能會出現埠不是5555的情況; 即使你設定成5555重啟手機後也會變回去; ” 這種情況我暫時還沒遇到,但是遇到的同學,需要重新連線資料線,設定埠號。
-
關於耗電與充電
看到這個問題,我深有體會。因為前幾天,發現測試機竟然提示電量不足!,有線狀態下,沒電就自動補充了,測試機幾乎一直是滿電狀態,突然被提示電量不足,的確意外。關於耗電與否,沒有準確資料評估,但是我覺得我們應該不差這點電吧。沒電了,我們就去充唄。
-
AS 可以設定類似功能的外掛
Android Studio 可以設定相關外掛,例如:ADB WIFI/ADB WIFI Connect 等,支援設定 WIFI 除錯,原理沒研究過不太清楚,有GUI頁面供操作,使用起來很方便。看大家需要,喜歡用啥,就用啥,滿足需求就可以。