Android模拟器无法访问Windows主机名的Flutter网络请求问题
解决Android模拟器无法访问自定义本地域名的问题
我明白你现在遇到的麻烦——主机浏览器能正常访问http://hipiapp.test/api/index,但Flutter项目在Android模拟器里却报错找不到地址。这其实是因为Android模拟器的网络环境和主机是隔离的,主机的hosts配置不会自动同步到模拟器里,下面给你几个可行的解决办法:
方法1:直接使用模拟器专属映射IP或主机局域网IP
Android模拟器提供了一个特殊的IP地址10.0.2.2,它会直接映射到主机的localhost。你可以把请求URL改成:
http://10.0.2.2/api/index
或者用你主机的实际局域网IP(也就是你hosts里写的192.xxx.xx.xx),改成:
http://192.xxx.xx.xx/api/index
这个方法最简单,不需要修改任何配置文件,直接替换URL就能测试。
方法2:将主机hosts同步到Android模拟器
如果你一定要保留hipiapp.test这个自定义域名,可以把主机的hosts文件推送到模拟器里,步骤如下:
- 打开命令提示符,导航到Android SDK的
platform-tools目录(比如cd C:\Users\你的用户名\AppData\Local\Android\Sdk\platform-tools) - 执行命令获取模拟器root权限:
adb root - 挂载模拟器系统分区为可写状态:
adb remount - 把主机的hosts文件推送到模拟器对应的路径:
adb push C:\Windows\System32\drivers\etc\hosts /system/etc/hosts - 重启模拟器,之后就能在Flutter里正常使用
http://hipiapp.test/api/index了。
方法3:确认Android网络权限
最后别忘了检查你的Flutter项目中Android端的权限配置,确保android/app/src/main/AndroidManifest.xml里添加了网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
虽然这个大概率你已经配置了,但如果之前漏加的话也会导致网络请求失败。
内容的提问来源于stack exchange,提问作者azra abdullah




