React Native项目运行出现could not connect to development server(Android)的解决方法

诸葛煜
2023-12-01

其实React Native项目运行debug模式,经常会遇到红屏的情况,以往都是adb reverse tcp:8081 tcp:8081就可以了(adb下载及环境变量配置请自行处理,此处不赘述)。

但是今天遇到一个问题,在android 10系统的手机上一直出现这个问题,而之前一直未出现这个问题,是由于使用的测试机是android 8.0系统。其实是由于android 9.0系统(API级别28及以上)开始,默认情况下禁止通过HTTP请求,而我们的APP是尝试通过HTTP访问Metro Bundler,这就是为什么一直出现could not connect to development server的原因。
亲测可用的方案:打开android文件目录下的AndroidManifest.xml,在<application>中添加android:usesCleartextTraffic="true",重新编译,启动npm服务
adb reverse tcp:8081 tcp:8081,然后再摇一摇Reload即可连上服务。
好了,下面梳理一下常见的完整解决方案:
1.在当前项目根目录下,确保npm服务已运行正常,验证方法:在电脑浏览器中输入网址:http://localhost:8081/index.android.bundle?platform=android,查看是否有页面响应;
2.查看手机是否启用开发者模式,允许设备调试;且确保手机与电脑在同一wifi网络下;
3.cmd中 输入 adb devices 查看是否有此设备;
4.cmd中 输入 adb reverse tcp:8081 tcp:8081
5.打开android文件目录下的AndroidManifest.xml,在<application>中添加android:usesCleartextTraffic="true",重新编译,启动npm服务,再adb reverse tcp:8081 tcp:8081,然后再摇一摇Reload即可;
6.关于方案5的另一种更优方案:

(1)在android文件夹中创建文件 app/src/debug/res/xml/network_security_config.xml;]
(2)network_security_config.xml文件写入如下内容:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <!-- deny cleartext traffic for React Native packager ips in release -->
  <domain-config cleartextTrafficPermitted="true">
   <domain includeSubdomains="true">localhost</domain>
   <domain includeSubdomains="true">10.0.2.2</domain>
   <domain includeSubdomains="true">10.0.3.2</domain>
     ***<domain includeSubdomains="false">192.168.x.x</domain>***
  </domain-config>
</network-security-config>

注意:最后一个192.168.x.x是自己当前电脑的ip地址,需修改!!!(可通过cmd中的ipconfig,ipv4地址),
然后clean项目,再重新build,然后启动npm服务再adb reverse tcp:8081 tcp:8081,然后再摇一摇Reload即可。


以上即可本人总结的完整的关于出现could not connect to development server(Android)的解决方法,如果还有其他解决方案,欢迎补充,
也希望以上内容对你能有帮助,如果帮你解决了问题,请点个赞~

 类似资料: