React Native 0.61.5/0.63.3、Expo38/39安卓无法连接开发服务器求助
问题根因说明
adb shell curl请求开发服务器正常,证明设备与开发机的网络链路完全通畅,问题集中在应用内部配置、RN框架加载逻辑或系统权限管控层面,可按照以下步骤逐一排查解决:
排查解决步骤
1. 校验开发服务器地址配置
- 原生RN项目:
摇晃设备唤起React Native Dev Menu,进入Debug server host & port for device选项,确认填写的地址为「Mac开发机局域网IP:Metro服务端口」,默认端口为8081,自定义端口需替换为实际值。 - Expo项目:
确认启动Expo开发服务时未添加--localhost参数,该参数会强制应用仅通过localhost地址访问服务,真机设备无法识别该地址指向的开发机。
2. 核对应用权限配置
- 除已配置的明文传输权限外,确认
AndroidManifest.xml中已声明基础网络权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - 检查定制ROM的权限管控:小米、华为、OPPO等品牌的安卓10定制ROM会默认静默拦截未上架测试应用的网络权限,进入系统设置-应用管理-当前测试应用-权限管理,确认「WLAN访问」「后台网络访问」权限已开启。
3. 验证端口映射有效性
- 执行命令
adb reverse --list确认端口映射规则存在,正常输出应为tcp:8081 tcp:8081(自定义端口替换对应值即可)。 - 映射规则异常时可先执行
adb reverse --remove-all清空所有规则,再重新执行映射命令adb reverse tcp:8081 tcp:8081。
4. 清理缓存重新构建
- 执行以下命令清理全链路缓存后,重启Metro服务并重新安装应用到设备:
cd 项目根目录 rm -rf node_modules && npm install cd android && ./gradlew clean cd .. && npm start -- --reset-cache - 检查
android/app/build.gradle中debug构建类型的bundleInDebug配置是否为false,若设置为true会导致应用直接加载本地离线bundle,不会向开发服务器发起请求。
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

