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

Android真机请求本地Express服务器遇Axios网络错误,模拟器正常

问题分析与解决方案

核心排查方向:网络权限与Android安全策略

你的情况大概率和Android网络权限以及明文网络限制有关,以下是具体排查步骤:

1. 检查Android网络权限配置

EAS构建的APK默认可能未添加必要的网络权限,需在app.json或app.config.js中补充:

{
  "expo": {
    "android": {
      "permissions": ["INTERNET", "ACCESS_NETWORK_STATE"]
    }
  }
}

添加完成后重新构建APK并安装测试。

2. 解决Android 9+的明文网络限制

Android 9(API级别28)及以上系统默认禁止明文HTTP请求,你的后端使用http://协议,会被系统拦截,可通过两种方式解决:

  • 方式一:精准配置允许明文的域名(推荐)
    在项目中创建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">192.168.1.44</domain>
        </domain-config>
    </network-security-config>
    
    随后在app.json中引用该配置:
    {
      "expo": {
        "android": {
          "networkSecurityConfig": "./android/app/src/main/res/xml/network_security_config.xml",
          "usesCleartextTraffic": true
        }
      }
    }
    
  • 方式二:全局开启明文许可(仅测试环境使用)
    直接在app.json中添加:
    {
      "expo": {
        "android": {
          "usesCleartextTraffic": true
        }
      }
    }
    
    注意:该方式不适用于正式环境,正式环境需配置HTTPS协议。

3. 额外排查点

  • 确认Android真机与Macbook处于同一WiFi网络,建议给Macbook设置静态IP,避免路由器动态分配导致IP变更。
  • 检查Express服务器是否绑定0.0.0.0而非127.0.0.1,若服务器仅监听本地回环地址,真机无法访问:
    // 正确监听写法
    app.listen(8000, '0.0.0.0', () => {
      console.log('Server running on http://0.0.0.0:8000');
    });
    
  • 在真机浏览器中直接访问http://192.168.1.44:8000/auth/code,验证是否能正常获取响应,排除App代码层面的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:12:15