discover-ads-filter

An Xposed module that hides sponsored cards and ads from the Google Discover feed in the Pixel Launcher -1 screen and inside the Google app itself.

AGSA 17.14+
libxposed API 101
DexKit 2.2.0

Requirements

  • Android 11+
  • LSPosed manager with libxposed API 101 support

Installation

  1. Grab the APK:

    GitHub Releases
    Get it on F-Droid

  2. Enable the module in LSPosed and scope it to com.google.android.googlequicksearchbox.

  3. Open the Discover Ads Filter app and tap Scan to resolve hook targets.

  4. Force-stop Google App and relaunch.

How It Works

The app scans the installed Google App with DexKit, resolving hook targets via protobuf extension field numbers and type signatures, and stores the result in a versioned cache. The hooked process uses the cached targets to filter ad items from the Discover feed.

License

GPLv3

This project is licensed under the GNU General Public License v3.0. See LICENSE for details.

Releases

v1.1.1

Stable

5/19/2026, 3:49:18 PM

What's Changed

Bug Fixes

Refactor

Documentation

Build

Miscellaneous

Assets

1

v1.0.4

Stable

4/28/2026, 6:50:50 AM

What's Changed

Documentation

CI

Miscellaneous

Assets

1

v1.0.3

Stable

4/27/2026, 7:07:37 PM

What's Changed

Bug Fixes

  • 632ce34 (proguard) Adapt java_init.list so R8-renamed entry class loads by @hxreborn

Refactor

Documentation

Build

Miscellaneous

Assets

1

v1.0.1

Stable

4/27/2026, 9:31:31 AM

What's Changed

Added

  • (diag) Show fingerprint schema version in Scanned-against card - dfaa18a

Fixed

  • (ui) Pad LazyColumn with innerPadding to fix unresponsive taps - a905667

  • (ui) Swap Diagnostics nav icon to Map - 3fda6fb

  • (ui) Drop scrollbar nestedScroll to free click events - ea3254c

Changed

  • (hook/stream) Inline content-id field walker; isNullOrBlank - 10e9511

  • (licenses) Drop kotlinx.immutable for aboutlibraries 14 - 0896300

  • (prefs) Drop unused context property; suppress AGSA cache path lint - 498789d

  • (ui) Remove dead branches flagged by KotlinConstantConditions - d0055e1

  • (ui) Dashboard cleanup; drop unused AgsaIcon - 0dac68b

  • (ui/scan-progress) Move modifier to first optional param - 1fb8218

  • (ui/scrollbar) Drop redundant map { Unit } - c85cab0

  • Drop unused preview fixtures, target counters, IconSize.md - 345b79f

Dependencies

  • (deps) Bump aboutlibraries from 13.2.1 to 14.0.1 - e802692

  • (deps) Bump com.android.application from 9.1.1 to 9.2.0 - eb28cc7

  • (deps) Bump compose-bom and material3 (alpha18) - b0984fc

  • (deps) Bump navigation3 from 1.1.0 to 1.1.1 - 745424d

  • (deps) Bump kotlin from 2.3.20 to 2.3.21 - 374a73b

Other

  • (res) Merge mipmap-anydpi-v26 into mipmap-anydpi; move ic_about_discover to drawable-nodpi - 511e32e

  • (res) Drop unused strings, colors, drawables - 2556357

Assets

1

v1.0.0

Stable

4/25/2026, 10:41:56 AM

What's Changed

Added

  • (ui) Add licenses screen with aboutlibraries - 9123393

Fixed

  • (ui) Move nestedScroll from Scaffold to LazyColumn - d5e29af

  • (ui) Remove StatusCard color animation to prevent muddy blending - dc630e8

  • (ui) Replace blocking splash with inline StatusCard loading - ddea311

  • Suppress false positive UseKtx lint in HookMetrics - b9670ea

Changed

  • (nav) Rewrite AppNavHost with declarative NavDisplay API - 164c748

  • (ui) Inline AboutScreen icon overloads - c67327e

  • (ui) Clean up ResolvedSymbolRow and ScanProgressCard - 5a767fc

  • (ui) Filter licenses to direct deps, add scrollbar - 8142b88

  • (ui) Move previews inline and fix dashboard spacing - 445a8ad

  • (ui) Add Search icon to FAB and inline previews - bae74f5

  • (ui) Clean up about screen header and add inline preview - 5d4fd65

  • (ui) Redesign StatusCard with split states and visual hierarchy - 51e7dbb

  • (ui) Rename Hook Targets to Symbol Map - a04101b

  • (ui) Redesign about screen with GitHub icon and licenses nav - 880a75b

  • (ui) Add licenses strings, rename libraries section - 6f20068

  • (ui) Remove scan summary row from diagnostics - 7f6fd46

  • (ui) Use AccountTree icon for hook targets - 56f995d

  • (ui) Simplify preference summaries - 3fc3d6f

  • (ui) Polish about screen header layout - b97dcee

  • Simplify HookMetrics mutable state and file handling - e832bca

  • Simplify HomeViewModel - ad3ad19

  • Clean up DexKit cache and resolver - 71fed77

Other

  • Hide owner attribution in changelog commits - 9efe216

  • Update launcher icon assets - 0f0a762

Assets

1