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

Android应用无法连接本地Web服务器,但adb shell可正常访问

Android应用无法连接本地127.0.0.1端口的解决思路

问题场景

Android设备上的系统服务启动了Web服务器,通过adb shell执行curl http://127.0.0.1:8545能正常请求,但设备上的任意Android应用请求该地址时,出现超时错误:

Caused by: java.net.SocketTimeoutException: failed to connect to /127.0.0.1 (port 8545) from /127.0.0.1 (port 48102) after 10000ms

可能的原因及解决方法

  • Android 10+的回环访问限制
    从Android 10开始,系统默认限制应用沙箱访问本地回环地址(127.0.0.1),需做如下配置:

    1. 在AndroidManifest.xml中添加基础网络权限:
      <uses-permission android:name="android.permission.INTERNET" />
      
    2. 若使用HTTP而非HTTPS,需开启明文流量允许:
      <application
          ...
          android:usesCleartextTraffic="true">
          ...
      </application>
      
  • Web服务器监听地址绑定问题
    若系统服务的Web服务器仅绑定127.0.0.1,可能无法接收来自应用沙箱的请求。需修改服务器配置,将监听地址改为0.0.0.0,这样服务器会监听所有本地网络接口,包括应用沙箱的回环访问。

  • SELinux权限拦截
    系统服务的进程SELinux上下文可能限制了来自应用的连接请求:

    1. 先临时关闭SELinux测试(需root权限):
      adb shell setenforce 0
      
    2. 若关闭后应用能正常连接,需为系统服务进程添加对应的SELinux规则,允许接收应用的网络连接请求。
  • 系统防火墙规则限制
    Android系统防火墙可能拦截了应用对8545端口的访问:

    1. 查看当前防火墙规则:
      adb shell iptables -L
      
    2. 添加允许访问8545端口的规则(需root权限):
      adb shell iptables -A INPUT -p tcp --dport 8545 -j ACCEPT
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:05:15