阻止广告在Nougat 7.0中的方法

7次阅读
没有评论

问题描述

在从Marshmallow升级到Nougat 7.0后,我发现基于hosts文件的广告拦截器不再有效。我尝试过使用AdAway,并设置了符号链接指向hosts文件,同时通过文件资源管理器验证了/etc/hosts文件确实包含了所需的内容。AdAway UI也报告成功。但是,仍然有烦人的广告出现在应用中,打断了我的体验。AdAway的DNS日志也继续报告被阻塞的主机,即使我手动将其添加到黑名单中也是如此。

解决方案

请注意,以下操作可能需要root权限,并且存在一定的风险,请在执行前做好备份。

方案1

短期解决方案

目前,广告拦截器在Nougat上不生效,直到开发者做出更新。AdAway的一个Beta版本可以解决这个问题,但需要在首选项屏幕中勾选“系统级模式”选项。其他广告拦截器也可能提供类似的功能。

长期解决方案

  1. 理解原因
    根据AdAway GitHub Issue #770的解释,root应用程序通常无法访问/system分区,因为这是只读设计的一部分。然而,使用mount命令可以轻松地将文件系统挂载为可写模式,这是过去大多数root应用程序所使用的方法。

  2. Google的改变
    从Android 6开始,mount命令的行为有所改变。具体来说,在Android 6中存在两个mount命令的实现,如果你不支持toybox,可以回退到toolbox。这导致了Nougat需要所有root应用程序更新,以便在必要时(如果不是为了修改系统分区的话)能够进行修改。

  3. 更新应用程序
    如果你需要修改系统分区,确保你使用的root应用程序已经更新以支持新的mount命令行为。例如,AdAway的一个Beta版本提供了“系统级模式”,可以通过这种方式来实现hosts文件的修改。

方案2

使用第三方工具

除了上述方法外,还可以考虑使用第三方工具来管理广告拦截。这些工具通常会提供更灵活的解决方案,并且可能已经适应了新的系统要求。

示例工具

  • OpenAdBlock:这是一个流行的广告拦截工具,支持多种平台,包括Android。它可能已经更新以适应Nougat的新特性。
  • AdGuard:另一个强大的广告拦截工具,同样支持Android平台,并且可能会提供更好的用户体验。

方案3

手动编辑hosts文件

如果上述方法都不奏效,你可以尝试手动编辑hosts文件。虽然这种方法比较繁琐,但在某些情况下可能是唯一的选择。

  1. 获取root权限
    确保你的设备已经获得root权限。
  2. 挂载系统分区
    使用mount命令将/system分区挂载为可写模式。
  3. 编辑hosts文件
    编辑hosts文件,添加你需要屏蔽的广告域名。
  4. 重启设备
    修改完成后,重启设备以使更改生效。

通过上述方案,你应该能够在Nougat 7.0上有效地阻止广告。如果问题依然存在,建议查阅相关论坛和社区,寻求更多帮助和支持。

正文完