You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native安卓访问本地API报qemud:network管道错误

首先明确:修改AndroidManifest等原生配置后必须重新构建项目。React Native的Metro热更新只会同步JS层代码改动,原生层配置变更如果不执行全量重打包,完全不会生效,你之前加的android:usesCleartextTraffic配置大概率从来没被打进过安装包。

你遇到的qemu管道报错和明文流量限制是两个独立问题,按以下顺序排查修复即可:

修复步骤

1. 先执行clean构建,排除配置不生效问题

停掉当前正在运行的Metro服务、模拟器进程,在项目根目录依次执行命令:

# 清理安卓构建缓存
cd android && ./gradlew clean
cd ..
# 重新打debug包启动
ENVFILE=.env.dev npx react-native run-android

如果构建完成后还是报错,继续往下走。

2. 修正本地接口访问地址

绝大多数场景下这个报错是本地接口地址配置错误导致的:

  • 安卓模拟器内部的127.0.0.1/localhost指向模拟器自身,不是你的Mac开发机
  • 访问宿主机上运行的本地接口,请把接口base地址替换为10.0.2.2(官方AVD模拟器预留的宿主机映射地址),如果用Genymotion模拟器则替换为10.0.3.2
  • 确认你本地运行的后端服务监听地址是0.0.0.0,不要绑定仅127.0.0.1,否则转发请求无法到达后端服务

3. 修复模拟器QEMU网络管道bug

你贴的Failed to open QEMU pipe日志是模拟器自身的网络转发故障,按以下操作处理:

  • 打开模拟器的「设置-网络和互联网-互联网」,找到当前连接的WLAN,修改网络高级选项,把代理设置为「无」,保存后冷启动模拟器
  • 避开API 31(Android 12)的Google Play版本镜像,这个版本存在已知的网络转发bug,换用同版本的Google APIs镜像,或者直接使用API 30/API 33版本的模拟器镜像
  • 启动模拟器前完全退出系统里运行的VPN、代理类工具,这类工具会劫持系统网络栈,导致模拟器的qemu网络管道初始化失败

4. 补充明文流量兼容配置

如果项目targetSdkVersion >=28,仅加usesCleartextTraffic在部分系统版本上可能不生效,补充以下配置:

  1. 在android/app/src/main/res/xml路径下新建network_security_config.xml文件,写入:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">10.0.2.2</domain>
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>
  1. 打开AndroidManifest.xml,在<application>标签上新增属性:
    android:networkSecurityConfig="@xml/network_security_config"
  2. 重新执行第一步的clean构建命令即可。

内容的提问来源于stack exchange,提问作者Mathias Bradiceanu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 06:30:45