利用wifi連接Android真機調試React Native代碼

瞭解adb

adb是安卓調試橋(Android Debug Bridge),官方中文文檔:https://developer.android.google.cn/studio/command-line/adb.html

開發PC端包括client、server兩部分,手機端是一個adbd守護進程,/dev/socket/adbd,監聽手機上5555端口;

server爲adb服務fork出得子進程,監聽PC本地5037端口,接收PC本地client的命令,並負責與mobile端建立鏈接;

client提供cmd命令輸入;client啓動時檢查server是否啓動,若未啓動則先啓動server,server通過5037端口與client建立連接;

手機端與PC端可以有兩種連接方式:TCP連接,USB連接

參考:https://blog.csdn.net/ysh149216447/article/details/53334015

實現思路:

要利用同一個wifi,使得Android真機上React Native的調試可以脫離USB連接線,思路是先通過USB連接PC與手機,通過手動設置手機與PC的TCP連接,達到脫離USB連接後,手機與PC依然可以通信的效果,這樣手機就可以繼續reload RN代碼了

以上思路的實現過程:

  1. 打開手機開發者調試,通過USB將手機已USB調試模式連接到PC
  2. PC中打開命令行,"adb devices" 確認手機與PC已連接成功
  3. "adb tcpip 5555",設置手機與PC以TCP方式連接時的端口爲5555
  4. 此時已經可以斷開手機與PC的USB連接
  5. "adb connect 192.168.0.199:5555",將PC通過 TCP/IP 連接到手機設備,192.168.0.199爲手機的ip,使用手機5555端口、
  6. 跟USB連接時一樣正常執行"adb reverse tcp:8081 tcp:8081",將手機上8081端口反向轉發到PC的8081端口(第一個8081指定手機端口,第二個8081指定PC端口)(個人理解reverse含義就是將對於目標port——即手機8081端口——的請求,反向代理到PC得8081端口進行響應)

方案一初次實踐時遇到了問題,後來請教大神才發現手機端RN搖一搖手機加載出得菜單裏有"Dev Settings"-“Debugging”-"Debug server host & port for device",填入PC的ip:端口即可,此時手機端APP指定到了pc的端口請求資源,而不是手機localhost:8081

adb connect方案遇到的問題

如下:實現思路在執行"adb connect"後,再執行"adb reverse..."會產生如下報錯:
 

adb: error: more than one device/emulator

但實際上此時只有一個設備連接到PC,而且使用"adb forward..."命令也並不會報類似錯誤

$ adb devices

List of devices attached

192.168.0.199:5555 device

$ ./adb version

Android Debug Bridge version 1.0.41

Version 29.0.5-5949299

stackoverflow也有兩個人遇到這個問題,暫時還沒有找到問題的原因

https://stackoverflow.com/questions/46138780/adb-reverse-tcp-not-working-on-android-connected-remotely#

https://stackoverflow.com/questions/51592477/adb-s-192-168-1-65555-error-more-than-one-device-emulator

還有一個已經有答案的問題,但圖沒加載出來不知道是否可以參考

https://stackoverflow.com/questions/57570658/i-cant-debug-react-native-through-wifi-after-following-the-instructions

11.7:

突然想到出問題的機器是root過的,上網搜了下也有利用adbd漏洞提升權限的操作,難道...

結果 成功reverse reverse失敗
手機型號 一加7pro 一加5t
操作系統版本 9.0 8.1
root狀態 未root 已使用magisk成功root

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章