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代码了
方案一初次实践时遇到了问题,后来请教大神才发现手机端RN摇一摇手机加载出得菜单里有"Dev Settings"-“Debugging”-"Debug server host & port for device",填入PC的ip:端口即可,此时手机端APP指定到了pc的端口请求资源,而不是手机localhost:8081
如下:实现思路在执行"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
突然想到出问题的机器是root过的,上网搜了下也有利用adbd漏洞提升权限的操作,难道...
结果 | 成功reverse | reverse失败 |
手机型号 | 一加7pro | 一加5t |
操作系统版本 | 9.0 | 8.1 |
root状态 | 未root | 已使用magisk成功root |