You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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文件推送到模拟器里,步骤如下:

  1. 打开命令提示符,导航到Android SDK的platform-tools目录(比如cd C:\Users\你的用户名\AppData\Local\Android\Sdk\platform-tools
  2. 执行命令获取模拟器root权限:
    adb root
    
  3. 挂载模拟器系统分区为可写状态:
    adb remount
    
  4. 把主机的hosts文件推送到模拟器对应的路径:
    adb push C:\Windows\System32\drivers\etc\hosts /system/etc/hosts
    
  5. 重启模拟器,之后就能在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

火山引擎 最新活动