I am the developer of DNS66, a free (GPL-3) host and ad blocker for Android 5.0 and newer. It utilises Android's VPN service to redirect DNS traffic to the local app, and filters out any blocked hosts from reaching the servers (instead responding directly with "non-existing domain").
As it only intercepts DNS traffic it is a fairly lightweight solution and does not seem to have any measurable effect on the battery life. Given that it only blocks entire host names, it cannot block as detailed as some other ad blockers. But it still catches almost all ads on the web.
The project can be found in the https://github.com/julian-klode/dns66 project on GitHub and you can directly install it via F-Droid: https://f-droid.org/app/org.jak_linux.dns66
Android 7 notice: The DownloadManager in Nougat and newer fails to download files when a VPN service is active. This affects Play Store updates and installs, and downloads in Chrome, amongst other things. Versions 0.1.3 contains a workaround for the Play Store, but other apps might still fail to download unless the bug in Android is fixed. See https://code.google.com/p/android/is...tail?id=213341 and https://github.com/julian-klode/dns6...ment-256695500 for further details.
Not working? For blocking issues, send me logcat via E-Mail (firstname.lastname@example.org). If it worked before, send a logcat for the old version as well. Note that not all ads can be blocked via DNS, so partial ad blocking is usually not a bug - If you see requests in the logcat, that means DNS66 works correctly, and I'm not going to investigate further. Issues in UI elements and stuff like that you can just report directly (especially in preview builds).
In-App Ad Blocking: Might or might not work. Seems Google worked around VPNs blocking the ads or something. In-Browser blocking works fine.