修改Android Studio模拟器hosts文件致模拟器启动异常
我来帮你解决这个头疼的问题!修改Android模拟器hosts后遇到启动异常和推送失败,在High Sierra系统下确实有几个容易踩的坑,下面是亲测有效的解决方案:
一、修复AVD Manager启动无响应的问题
你遇到的AVD Manager启动模拟器无响应,大概率是修改hosts时误操作导致模拟器系统镜像的权限或文件结构出问题了,试试这两个办法:
重置模拟器用户数据:
找到你的AVD存储路径(High Sierra下一般是~/Library/Android/sdk/.android/avd/[你的模拟器名称].avd/),删掉里面的userdata.img和userdata-qemu.img文件,然后重新用AVD Manager启动模拟器。这会清空模拟器里的用户数据,但能恢复初始系统状态,之后再重新配置hosts就好。调整AVD启动配置:
如果你用命令行指定方式启动没问题,看看你用的命令参数(比如是否加了-writable-system这类权限参数),可能AVD Manager默认配置没包含这些必要参数。你可以编辑AVD目录里的config.ini文件,添加一行hw.writableSystem=true,保存后再用AVD Manager启动试试。
二、High Sierra下成功推送Hosts到模拟器的正确流程
之前用adb设rw模式失败,大概率是操作顺序不对,跟着这个完整步骤来:
启动模拟器时开启可写系统权限:
先关闭所有模拟器进程,终端执行命令(替换成你的模拟器名称):emulator -avd [你的模拟器名称] -writable-system一定要启动时就加
-writable-system,不然之后再改权限可能无效。重新挂载系统分区为rw模式:
打开新的终端窗口,依次执行:adb root adb remount提示
remount succeeded就说明挂载成功。要是还是失败,先执行adb disable-verity,然后重启模拟器(依旧用带-writable-system的命令),再重新跑adb root和adb remount。推送本地hosts文件:
假设你的本地修改好的hosts在~/Desktop/hosts,执行:adb push ~/Desktop/hosts /system/etc/hosts推送完可以用
adb shell cat /system/etc/hosts验证下内容是否正确。恢复系统分区为只读(可选):
为了系统稳定性,推送完成后可以执行adb remount ro把系统分区改回只读模式。
三、额外注意点
- 确保你的Android SDK是最新版本,High Sierra下旧版的emulator和adb可能存在权限兼容问题,建议通过SDK Manager更到最新稳定版。
- 如果是Android 10及以上版本,系统SELinux可能阻止修改hosts,这时候可以在adb shell里执行
setenforce 0临时关闭,完成推送后再执行setenforce 1开启。
内容的提问来源于stack exchange,提问作者Alphonse




