利用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

 

 

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