Android少年,快拔掉你的數據線

NO IMAGE

數據線是個磨人的小妖精

移動端開發,特別是 Android,模擬器略卡,也比較容易吃內存,所以我幾乎都是電腦連真機調試運行,連接的紐帶就是一根數據線。

數據線是沒什麼錯的,錯就錯在,它是一根可以肉體可接觸到的實物線。很多時候抬手拿杯子不小心碰了它一下,連接就斷掉了, 想象一下,當寫完一個非常棒的代碼,準備運行看效果,未發現連接設備,這種情況發生多次時,內心的語言是十分不健康的。

所以,想給大家分享一個實用的小技巧,來擺脫數據線這個磨人的小妖精。

如何擺脫小妖精

具體操作步驟非常簡單,只要三步,不過有兩個前提條件。

1.電腦配置安裝了 ADB 環境。關注我的絕大部分是 Android 開發人員,這個前提條件應該很好滿足,不多說了。

2.手機和電腦的 IP 要保證是同一個網段內。這個只要連的是同一個局域網,一般都是在一個網段內的。

Step1-連接電腦和手機

第一步仍需要數據線,連接電腦和手機,這一步確保要連接成功,我的確認方法是看 Android Studio 的連接設別列表或 adb devices 命令查看。

Android少年,快拔掉你的數據線

Android少年,快拔掉你的數據線

如果你沒有看到設備,在手機上檢查 開發者選項-USB 調試 是否打開。

Step2-設置5555端口

成功連接之後,第二步是設置手機設備的 WIFI 調試端口 5555,然後少年,你就可以拔掉數據線啦,第三步已經可以無線的條件下操作了呢。

在電腦上的命令行窗口,輸入下面的命令:

 adb tcpip 5555;

下面是運行結果截圖,提示信息顯示已經重置了端口。

Android少年,快拔掉你的數據線

Step3-連接手機的IP地址

最後一步,一個連接命令即可,如下,但是該命令需要知道手機的 IP 地址。

 adb connect  <要連接設備的IP地址>;

拿到手機的 IP 地址的方法有很多,這裡分享兩個我自己的方法。

第一種是下面這個命令,運行可以查看到連接設備的 IP 地址。

 adb shell  ifconfig wlan0;

下面紅框標準的地方,就是設備的 IP 地址。

Android少年,快拔掉你的數據線

第二種是在手機操作,打開 設置-WLAN-配置 頁面,可看到當前 IP 。

Android少年,快拔掉你的數據線

拿到設備的 IP 後,使用 adb connect 命令連接電腦和手機。

Android少年,快拔掉你的數據線

以上就完成了整個過程,此時再次運行 adb devices 得出以下結果。沒有通過數據線,但成功的連接上了電腦和手機。

Android少年,快拔掉你的數據線

不同就是前面設備的唯一標識 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 發來的命令。

下面是三者關係的簡單示意圖:

Android少年,快拔掉你的數據線

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,也是成功地秀了一波操作!

好啦,我們下篇文章見。喜歡不要忘記給作者點個贊,或者分享給你的小夥伴哦!

Android少年,快拔掉你的數據線

PS:

通過評論發現,文章中有幾個地方沒有描述清楚,這裡補充幾點:

  • 不是每次連接的時候,都需要插數據線,理論上只是第一次需要。

    文章中說到插數據線,是為了設置端口,允許 WI-FI 調試。所以如果WI-FI 調試使用過程中,連接斷掉,只需要再次使用 connect 命令就好了。

    為什麼說理論上,因為評論中「設計師吳彥祖」同學提出 “大部分國產手機可能會出現端口不是5555的情況; 即使你設置成5555重啟手機後也會變回去; ” 這種情況我暫時還沒遇到,但是遇到的同學,需要重新連接數據線,設置端口號。

  • 關於耗電與充電
    看到這個問題,我深有體會。因為前幾天,發現測試機竟然提示電量不足!,有線狀態下,沒電就自動補充了,測試機幾乎一直是滿電狀態,突然被提示電量不足,的確意外。關於耗電與否,沒有準確數據評估,但是我覺得咱應該不差這點電吧。

    沒電了,咱就去充唄。

  • AS 可以設置類似功能的插件
    Android Studio 可以設置相關插件,例如:ADB WIFI/ADB WIFI Connect 等,支持設置 WIFI 調試,原理沒研究過不太清楚,有GUI頁面供操作,使用起來很方便。看大家需要,喜歡用啥,就用啥,滿足需求就可以。

相關文章

Gitrebase黑魔法之打造完美的線性歷史

Git用cherrypick挑好看的小櫻桃

Git三大特色之WorkFlow(工作流)

Git三大特色之Stage(暫存區)