Root 设备上的 AdAway 部署 —— Magisk Systemless Hosts 集成指南
前置条件
你的设备需要:
- 已解锁 Bootloader
- 已刷 Magisk(或 Magisk 变种,比如 Magisk Delta、Magisk Kitsune)
- Magisk 版本 >= v20.4(支持 Systemless Hosts 功能)
- AdAway v5.x 或 v6.x(v4 不支持 Magisk 集成)
什么是 Systemless Hosts
传统 root 方式下 AdAway 会直接写 /system/etc/hosts。问题是:
/system分区只读,需要 remount- 修改后开机恢复出厂会丢
- 某些 ROM 用 A/B 分区,写一侧另一侧没同步
- 还原需要手动用 root 工具恢复原始 hosts
Magisk 的 Systemless Hosts 模块解决了这些:
- 不碰
/system分区,改为在 Magisk 分区维护 hosts 文件 - 通过 mount bind 让系统把 Magisk 分区里的 hosts 当作
/system/etc/hosts用 - 随时可以在 Magisk Manager 里开关模块,或者卸载恢复原样
- 恢复出厂设置也不会丢模块(在 Magisk 分区)
配置步骤
第一步:在 Magisk Manager 里启用 Systemless Hosts
- 打开 Magisk Manager
- 进入设置(右上角齿轮)
- 找到 "启用 Systemless Hosts"(Enable systemless hosts)开关,打开
- 按提示重启设备
这一步很重要——不重启的话 AdAway 检测不到 Magisk 的支持。
第二步:确认 AdAway 识别到 root 和 Magisk
重启后打开 AdAway:
- 主界面应该显示 "Root Mode" 或类似提示
- 点应用按钮,AdAway 会提示 root 权限,允许即可
- 如果 AdAway 提示"无法写入 hosts",说明 Magisk Systemless Hosts 没启好,回去检查第一步
第三步:首次应用
详见 首次启动向导,root 模式下的流程和普通模式略有不同。
验证是否生效
最简单的方法:
- 浏览器打开
doubleclick.net(Google 的广告域名) - 如果页面加载失败或显示空白,说明拦截生效
- 或者用 root 工具查看
/system/etc/hosts,里面应该有上万条 AdAway 生成的条目
进阶验证:
adb shell cat /system/etc/hosts | head -20
开头应该有 AdAway 的注释:
# This hosts file is generated by AdAway.
# Please do not modify it directly, it will be overwritten when AdAway is applied again.
Magisk Hide 的影响
如果你在 Magisk 里启用了 Hide 或 DenyList,需要确保 AdAway 不在 Hide 列表里——否则 AdAway 自己会被认为"没有 root 权限",无法写入 hosts。
同样,如果你把某些 APP 加了 Hide,那些 APP 发起的 DNS 请求 AdAway 可能看不到——这种情况下用 VPN 模式配合 root 模式可能更稳。
卸载与还原
想完全撤销 Magisk Systemless Hosts 的效果:
- Magisk Manager → 模块 → 关掉 Systemless Hosts 开关
- 重启设备
- hosts 文件恢复为系统默认的简单版本
这就是 Systemless Hosts 相比传统直接写 /system 的最大优势:随时开关、零痕迹、不需要恢复原始文件。
注意事项
- A/B 分区 ROM:Magisk Systemless Hosts 会自动处理两侧分区,传统方式可能只写一侧
- 加密设备:Magisk Systemless Hosts 在 Magisk 加密分区里,不影响设备加密
- OTA 更新:Magisk 会在 OTA 后重新注入 Systemless Hosts,不需要手动操作
- 某些定制 ROM:比如 LineageOS、MIUI 会有额外的 hosts 管理机制,可能和 AdAway 冲突——遇到时先在 ROM 设置里关掉内置广告拦截
为什么这是最优解
Root + Magisk Systemless Hosts + AdAway 的组合是目前 Android 上"系统级广告拦截"的黄金方案:
- 拦截生效于所有 APP(系统级 hosts)
- 零性能损耗(不跑 VPN)
- 可回退(Systemless 不碰 /system)
- 自动化友好(Tasker + Broadcast API)
- 透明开源(GPLv3 + Magisk 开源)