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

Android Studio模拟器修改hosts文件后无法打开网页的问题排查

Android Studio模拟器Hosts修改后不生效的排查方案

我来帮你梳理下为啥PC上能用的hosts,到了Android模拟器里就失效了,大概率是这几个模拟器特有的问题没处理到位:

  • 确认hosts路径与系统分区挂载状态
    Android模拟器的hosts默认路径是/system/etc/hosts,但这个路径所在的/system分区默认是只读的。如果修改前没执行挂载命令,你的修改根本没保存进去。正确步骤应该是:

    1. 先通过adb root获取root权限;
    2. 进入模拟器shell:adb shell
    3. 挂载/system为可写:mount -o remount,rw /system
    4. 再修改hosts文件,修改后记得把分区改回只读(可选但推荐):mount -o remount,ro /system
  • 检查模拟器网络模式
    模拟器默认用NAT模式联网,这种模式下网络请求会经过PC转发,可能导致hosts解析规则被忽略。试试切换成桥接模式(部分模拟器支持,Android Studio自带模拟器可通过修改配置文件开启),让模拟器直接接入和PC同网段的网络,这样hosts规则更容易生效。

  • 清除模拟器DNS缓存
    模拟器可能缓存了旧的域名解析结果,即使修改了hosts也不会立即生效。可以用这几种方法清除:

    • 直接重启模拟器;
    • 在模拟器的「设置-网络和互联网」里选择「重置网络设置」;
    • 进入模拟器shell执行命令:ndc resolver flushdefaultif
  • 验证root权限与修改权限
    修改hosts需要root权限,如果你是用普通用户shell修改的,操作会失败或者内容不生效。一定要先确保adb root执行成功,再进入shell修改hosts。修改后可以用cat /system/etc/hosts查看内容,确认你的修改已经保存。

  • 检查hosts文件格式兼容性
    虽然PC上的hosts能用,但Android基于Linux内核,对hosts格式有严格要求:

    • 每行必须是「IP地址 + 单个空格 + 域名」的格式;
    • 换行符必须是Linux的LF,而不是Windows的CRLF;
    • 避免多余的空行或者格式错误的注释。可以把PC上的hosts内容复制到模拟器时,先转成Linux格式再粘贴。

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

火山引擎 最新活动