根本原因是ADB未识别手机而非React Native配置问题;需检查USB调试、重启ADB服务、直连USB口、更新ADB版本等。

Android设备连不上adb,react-native run-android报错“no devices/emulators found”
根本原因不是React Native配置问题,而是adb没识别到手机——VSCode只是个编辑器,真正起作用的是本地ADB环境。常见现象包括:手机已开USB调试、线也插了,但adb devices返回空列表,或显示????????。
实操建议:
- 确认手机开启了「USB调试」和「USB安装」(部分厂商如小米/华为还要求打开「MIUI优化」关闭、「开发者选项」里启用「USB调试(安全设置)」)
- 在终端运行
adb kill-server && adb start-server重启服务,再插拔一次USB线 - Windows用户若用USB-C转接头或扩展坞,优先直连电脑原生USB口;Mac用户注意某些雷电扩展坞会屏蔽ADB通信
- 检查
adb version是否≥1.0.41,太旧的版本不支持Android 12+设备
VSCode里点了React Native Tools插件的「Debug in Chrome」却没反应
这个按钮本质是启动react-native start并打开Chrome调试器,但它不会自动触发APP重载——你得先确保APP已在手机上运行且处于前台,否则断点无效、控制台无日志。
实操建议:
- 先手动执行
npx react-native run-android(或ios),等APP启动完成再点调试按钮 - 不要依赖插件自动生成的
launch.json,删掉它,改用VSCode自带的「JavaScript Debug Terminal」终端运行npm start更稳定 - 如果Chrome打不开
http://localhost:8081/debugger-ui,检查防火墙是否拦截了8081端口,或有其他进程占用了该端口(比如另一个Metro实例) - 真机调试时,Chrome调试器只能看JS逻辑,不能查看Native组件树或网络请求——这部分必须用Flipper
react-native start热重载失效,改了JS代码没反应
热重载(Hot Reloading)和实时重载(Live Reloading)是两回事:前者只替换组件定义,后者整页刷新。默认开启的是Live Reloading,而很多人误以为改完就该立刻看到效果,结果发现要手动摇动手机调出菜单点「Reload」才生效。
实操建议:
- 确保APP运行时摇出开发者菜单(Android双击菜单键或按两次R;iOS晃动设备),检查「Enable Hot Reloading」是否已勾选
- Hot Reloading对函数组件友好,但对类组件中修改
state结构、新增/删除生命周期方法等操作不敏感,此时仍需手动Reload - 如果保存后完全没反应,检查Metro终端是否有
Unable to resolve module报错——常见于路径大小写错误或未安装@babel/preset-react - 某些文件系统(如WSL2挂载的Windows目录)会导致文件监听失灵,建议把项目放在Linux原生路径下开发
用Flipper调试时看不到Network或Layout插件
Flipper默认只启用基础插件,Network和Layout需要单独安装,并且必须匹配React Native版本。尤其Layout插件依赖Native层注入,iOS还需额外链接react-native-flipper库。
实操建议:
- 在Flipper界面左下角点击「Manage plugins」→ 搜索并安装「Network」和「Layout」插件
- Android无需额外配置;iOS需在
ios/Podfile中取消注释use_flipper!(),然后执行cd ios && pod install - 确保APP启动时Flipper已连接成功(右上角显示绿色圆点),否则Network面板为空白
- Layout插件无法显示自定义Native组件,仅支持标准
View、Text等,且不支持React Navigation的栈容器
npx react-native run-android能跑通,再谈调试体验。


















