5

After upgrading Marshmallow to Nougat I found that hosts-file based ad blockers do not work. I have tried AdAway, setting it to use a symbolic link to the hosts file, and verifying via file explorer that the /etc/hosts file contains the desired content. AdAway also reports success in its ui.

But annoying ads continue to appear in my apps, interrupting my experience. AdAway DNS logs also continue to report hosts that should have been blocked, no matter I manually enter them in blacklist.

Did Google change the DNS resolution mechanism like Microsoft did in the past for Windows Update hosts (bypassing hosts file, source not yet available the time i am writing this post)? Can I do something else to block annoying unwanted advertising?

1

Short answer

Ad blockers do not work in Nougat until the developers make an update. A beta version of AdAway does the trick but requires to check the new "Systemless mode" in Preferences screen.

Other ad blockers will probably implement similar solutions

Long answer

This is marked Community Wiki for others to contribute. The explanation is not fully clear to me too!! Everything is well explained in #770

Root applications do not normally have access to /system partition, even as root. This because the system partition is readonly by design. However, with mount command you can easily remount a file system in read-write mode and do whatever you like. This is what ad blockers and most root apps used in the past.

But Google changed the way the command mount work, to keep it in simple words. In Android 6, there actually were two coexistent implementations of the mount command, so if you didn't support toybox you could fall back to toolbox.

That is the simple reason why Nougat requires all root apps to update themselves if they ever need (and why ever in the world do you need to be root if not?) to modify the system partition

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.