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

修改Android Studio模拟器hosts文件致模拟器启动异常

我来帮你解决这个头疼的问题!修改Android模拟器hosts后遇到启动异常和推送失败,在High Sierra系统下确实有几个容易踩的坑,下面是亲测有效的解决方案:

解决Android模拟器修改Hosts后的启动异常与Hosts推送问题

一、修复AVD Manager启动无响应的问题

你遇到的AVD Manager启动模拟器无响应,大概率是修改hosts时误操作导致模拟器系统镜像的权限或文件结构出问题了,试试这两个办法:

  • 重置模拟器用户数据
    找到你的AVD存储路径(High Sierra下一般是~/Library/Android/sdk/.android/avd/[你的模拟器名称].avd/),删掉里面的userdata.imguserdata-qemu.img文件,然后重新用AVD Manager启动模拟器。这会清空模拟器里的用户数据,但能恢复初始系统状态,之后再重新配置hosts就好。

  • 调整AVD启动配置
    如果你用命令行指定方式启动没问题,看看你用的命令参数(比如是否加了-writable-system这类权限参数),可能AVD Manager默认配置没包含这些必要参数。你可以编辑AVD目录里的config.ini文件,添加一行hw.writableSystem=true,保存后再用AVD Manager启动试试。

二、High Sierra下成功推送Hosts到模拟器的正确流程

之前用adb设rw模式失败,大概率是操作顺序不对,跟着这个完整步骤来:

  1. 启动模拟器时开启可写系统权限
    先关闭所有模拟器进程,终端执行命令(替换成你的模拟器名称):

    emulator -avd [你的模拟器名称] -writable-system
    

    一定要启动时就加-writable-system,不然之后再改权限可能无效。

  2. 重新挂载系统分区为rw模式
    打开新的终端窗口,依次执行:

    adb root
    adb remount
    

    提示remount succeeded就说明挂载成功。要是还是失败,先执行adb disable-verity,然后重启模拟器(依旧用带-writable-system的命令),再重新跑adb rootadb remount

  3. 推送本地hosts文件
    假设你的本地修改好的hosts在~/Desktop/hosts,执行:

    adb push ~/Desktop/hosts /system/etc/hosts
    

    推送完可以用adb shell cat /system/etc/hosts验证下内容是否正确。

  4. 恢复系统分区为只读(可选)
    为了系统稳定性,推送完成后可以执行adb remount ro把系统分区改回只读模式。

三、额外注意点

  • 确保你的Android SDK是最新版本,High Sierra下旧版的emulator和adb可能存在权限兼容问题,建议通过SDK Manager更到最新稳定版。
  • 如果是Android 10及以上版本,系统SELinux可能阻止修改hosts,这时候可以在adb shell里执行setenforce 0临时关闭,完成推送后再执行setenforce 1开启。

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

火山引擎 最新活动