AdAway 中文文档 下载 App

开机自启与前台服务 —— Android 后台限制下 AdAway 的常驻机制

为什么 AdAway 需要开机自启

每次设备重启,Android 的 hosts 文件会重置为系统默认值(只有 localhost 那一行)。AdAway 必须在开机后立刻把完整的 hosts 表重新应用回去,否则重启后拦截就失效了。

这和 root 模式下"Magisk Systemless Hosts" 的配合:Magisk 在开机早期(init 阶段)就注入 Systemless Hosts 模块,AdAway 则在系统完全启动后才可能运行。两者时序不同,但效果互补——Magisk 保证 hosts 文件的挂载链,AdAway 保证 hosts 内容本身正确。

为什么需要前台服务

从 Android 8.0 (Oreo) 开始,系统对后台进程做了严格限制:

AdAway 申请了"运行前台服务"和"开机启动"权限,目的是:

不同拦截模式的自启机制差异

Root 模式

Root 模式下 hosts 文件是 被动生效 的——系统直接读 /system/etc/hosts(或 Magisk 分区的 hosts),不需要 AdAway 进程在跑。

所以 AdAway 进程本身可以被杀:

前台服务更多是为了 定时更新 hosts 而不是拦截本身。

VPN 模式

VPN 模式下 AdAway 进程是 主动拦截 的——虚拟网卡需要 AdAway 进程来处理每个 DNS 请求。

如果 AdAway 进程被杀:

所以 VPN 模式下前台服务的重要性远高于 root 模式。

通知栏图标

AdAway 的前台服务会显示一个常驻通知:

这是 Android 前台服务的强制要求——不能有隐形的前台服务。一些用户觉得这个通知烦人,可以在系统设置里屏蔽(长按通知 → 关闭通知渠道),但这可能影响 Android 对 AdAway 前台服务的判断。

电池优化例外

Android 的电池优化功能会把长时间没使用的 APP 加到"睡眠"列表,限制其后台活动。建议:

  1. 设置 → 应用和通知 → AdAway → 电池 → 后台限制
  2. 选择"无限制"(App 可以自由运行)

特别注意 Doze 模式:AdAway 在 Doze 下无法唤醒自己去更新 hosts,但 hosts 本身还在生效。如果你用了 Auto 更新 hosts(偏好里配置),可能需要额外允许 AdAway 在 Doze 下运行。

小米/三星/华为的特殊性

国产 ROM 通常比原生 Android 更激进地限制后台进程。你可能需要额外操作:

不做这些,AdAway 很可能被 ROM 杀掉进程,VPN 断开,广告回来。

一句话总结

Root 模式:AdAway 进程不是必须的,但自启 + 前台服务让 hosts 文件保持更新。

VPN 模式:AdAway 进程活着就等于拦截活着,前台服务是生命线。