Android模拟器无法通过10.0.2.2连接localhost问题求助
Android模拟器连接Windows本地API的排查解决思路
1. 先确认本地API本身无问题
- 用Windows本地浏览器访问
http://localhost:3000,验证API服务正常响应 - 打开命令提示符执行
ipconfig,找到当前网卡的IPv4地址(如192.168.1.100),再用浏览器访问http://[你的IPv4地址]:3000,确认API不是仅监听localhost,而是允许局域网访问
2. 排查模拟器网络配置
- 确认模拟器使用NAT模式(10.0.2.2是该模式下映射主机localhost的固定地址)
- 若NAT模式失效,切换到桥接模式,此时模拟器与主机同属一个局域网,直接用主机IPv4地址访问API(如
http://192.168.1.100:3000) - 在模拟器自带浏览器中测试访问
http://10.0.2.2:3000或主机IPv4地址,排除Retrofit代码层面的问题
3. 检查Windows防火墙与安全软件
- 打开Windows Defender防火墙,确认已添加允许API程序(或3000端口)的入站规则
- 临时关闭防火墙做测试,若能连接,说明是防火墙拦截,需手动添加允许3000端口入站的规则
- 排查第三方安全软件(如360、腾讯电脑管家),确认未拦截3000端口的网络请求
4. 验证Retrofit与Android网络配置
- 检查Retrofit的BaseUrl是否正确,无拼写错误(如端口、IP地址)
- 确认AndroidManifest.xml中已添加网络权限:
<uses-permission android:name="android.permission.INTERNET"/> - Android 9及以上版本需配置网络安全策略允许明文HTTP:
- 在
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">192.168.1.100</domain> <!-- 替换为主机IPv4 --> </domain-config> </network-security-config> - 在AndroidManifest.xml的
application标签中添加:android:networkSecurityConfig="@xml/network_security_config"
- 在
5. 模拟器重置与替代方案
- 重置模拟器网络配置,或新建一个AVD模拟器测试,排除现有模拟器配置损坏
- 长期替代方案:使用
adb reverse端口映射,执行命令:
之后模拟器内可直接通过adb reverse tcp:3000 tcp:3000http://localhost:3000访问主机的API
内容的提问来源于stack exchange,提问作者KIRAN K J
相关产品推荐
相关产品推荐

