You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过adb编辑安卓hosts文件?推送报错、无法进root怎么办

问题原因

所有报错都来自量产安卓设备的默认安全限制:

  • /system分区默认只读挂载,无特殊权限无法写入,这是push命令报Read-only file system的直接原因
  • 正式发售的生产版固件(user build)默认禁用adb root权限,也不会内置su二进制文件,所以执行su和adb root都会失败
  • 安卓原生shell环境默认不预装vi/nano/gedit这类文本编辑器,直接调用会提示命令不存在
可行方案

无Root方案(不修改系统分区,不影响保修,不清除数据)

如果只是需要实现自定义域名解析,不需要硬改系统hosts文件,优先选这类方案:

  • 本地VPN映射:安装支持自定义hosts规则的本地VPN类工具,导入你要配置的hosts规则后启动服务,所有网络请求会优先匹配自定义规则,全程不需要特殊权限。
  • 代理映射:在设备Wi-Fi设置中配置代理指向你可控的本地代理服务(比如PC端运行的抓包工具、代理工具),在代理规则中配置对应的域名-IP映射关系即可。

修改系统原生hosts方案(需解锁Bootloader,会清空全机数据,可能丧失保修)

如果必须修改/system/etc/hosts原文件,必须先解锁设备Bootloader,之后二选一操作:

  1. 获取Root权限后修改
    解锁BL后刷入Magisk获取完整root权限,连接adb后执行以下命令:
    adb shell
    su
    # 安卓11及以下版本执行重挂载命令
    mount -o rw,remount /system
    exit
    exit
    # 推送本地hosts文件到设备
    adb push 本地hosts文件完整路径 /system/etc/hosts
    # 配置正确的文件权限
    adb shell chmod 644 /system/etc/hosts
    

    注意:安卓12及以上版本系统分区采用EROFS只读文件系统,直接remount无效,可以制作包含自定义hosts的Magisk模块刷入生效,不需要直接修改分区文件。

  2. 第三方Recovery模式下修改
    解锁BL后刷入对应机型的第三方Recovery(如TWRP),重启进入Recovery模式后,在高级菜单中开启adb调试,挂载system分区为可写,直接执行push命令替换hosts文件即可,不需要启动进入系统。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:21:21