React Native远程调试报错:cleartext communication to localhost未被网络安全策略允许
嘿,这个问题我之前调试React Native项目时也踩过坑!给你理清楚原因和解决办法:
问题原因
Android从API 28(Android 9.0)开始,默认启用了严格的网络安全策略,禁止应用进行明文(cleartext)的HTTP通信。而React Native的远程调试器是通过localhost的HTTP连接与设备/模拟器通信的,刚好触发了这个安全限制,所以才会抛出这个错误。
解决办法
我整理了几个靠谱的方案,你可以按需选择:
1. 配置定向网络安全规则(最推荐,长期安全)
在你的RN项目的android/app/src/main/res/xml目录下,创建network_security_config.xml文件(如果xml目录不存在,先手动创建),写入以下内容:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">localhost</domain> <domain includeSubdomains="true">10.0.2.2</domain> <!-- 适配Android模拟器的特殊调试地址 --> </domain-config> </network-security-config>
接着打开android/app/src/main/AndroidManifest.xml,在<application>标签中添加配置引用:
<application ... android:networkSecurityConfig="@xml/network_security_config"> ... </application>
这种方式只允许调试相关的地址走明文HTTP,既解决问题又不会放宽全局安全限制,适合长期使用。
2. 临时全局放宽明文限制(仅调试用,禁止生产环境)
如果只是临时调试不想改太多配置,可以直接在AndroidManifest.xml的<application>标签里加一行:
<application ... android:usesCleartextTraffic="true"> ... </application>
注意:这个方法会允许应用所有HTTP明文请求,存在安全风险,绝对不能用于生产包!
3. 改用HTTPS调试(进阶方案)
如果你的调试环境支持HTTPS,也可以切换到HTTPS调试地址,但配置相对繁琐,本地调试用前两种方法就足够了。
内容的提问来源于stack exchange,提问作者New iOS Dev
相关产品推荐
相关产品推荐

