Xposed module built on the modern LSPosed API that hides ads and sponsored content inside the Amazon Android app.
com.amazon.mShop.android.shopping)Download the APK:
Enable the module in LSPosed and scope it to com.amazon.mShop.android.shopping
Open the AmznKiller companion app to verify the module is active and optionally fetch updated lists (built-in filters work out of the box)
Force-stop the Amazon app and relaunch it. A toast confirms the module is active.
Search query: “macbook air m1 16gb 512”
| Stock (2 real results, rest are ads) | Patched |
|---|---|
| Force Dark | Price History |
|---|---|
Settings app
See Troubleshooting. Most common causes: module not scoped correctly, missing force stop on Amazon Shopping, or LSPosed not activated.
Bundled selectors are still applied. Check connectivity, reset the selector URL in settings, and refresh again.
Cosmetic only. It injects CSS to hide ad elements. Network requests still happen. Works alongside DNS-based blockers (AdGuard, NextDNS, Private DNS, hosts files).
No. The module is scoped to com.amazon.mShop.android.shopping only for now.
No. Updated selectors apply on the next page load inside Amazon Shopping. Force stop Amazon Shopping if changes don’t appear immediately.
Amazon disables Android’s force dark algorithm via its theme (forceDarkAllowed=false). The
module hooks ViewRootImpl.determineForceDarkType and overrides the return to
FORCE_DARK_ALWAYS, which triggers GPU-level algorithmic darkening on all content including
WebViews. Additional hooks set dark window backgrounds, theme native nav elements, and prevent
white flash on WebView load. DarkModeInjector ships CSS fixes for elements the algorithm gets
wrong (product images, buy buttons, deal badges).
Limitation: ViewRootImpl.determineForceDarkType was introduced in Android 15 (API 35).
On Android 10-14, this method does not exist so the primary force dark override cannot apply.
A fallback hook on HardwareRenderer.setForceDark is attempted but Amazon’s theme-level
opt-out still blocks darkening on those versions.
If you spot a rendering issue, open an issue with a screenshot, page URL, and Android version.
You can enable WebView debugging in settings and inspect via chrome://inspect.
git clone --recurse-submodules https://github.com/hxreborn/amznkiller.git
cd amznkiller
# Build libxposed and publish to local Maven repo
./gradlew buildLibxposed
./gradlew :app:assembleDebug
Requires JDK 21 and Android SDK. Configure local.properties:
sdk.dir=/path/to/android/sdk
# Optional: release signing for reproducible builds
RELEASE_STORE_FILE=<path/to/keystore.jks>
RELEASE_STORE_PASSWORD=<store_password>
RELEASE_KEY_ALIAS=<key_alias>
RELEASE_KEY_PASSWORD=<key_password>
See CONTRIBUTING.md for guidelines on pull requests, code style, and commit conventions.
For bugs or feature requests, open an issue.
This project is licensed under the GNU General Public License v3.0 – see the LICENSE file for details.
eu.hxreborn.amznkiller
Release Type: Stable
2/28/2026, 7:57:35 AM
009ef83 - (charts) Prevent injection inside buybox swatch buttons by @hxreborn
price charts were rendering inside the one-time purchase tab card on subscribe & save products
Fixes #11
996d3b1 - (ui) Remove WIP placeholder rows from SystemEnvironmentCard by @hxreborn
b52cef4 - (ui) Use check/X icons for ad blocking status card by @hxreborn
1a516b6 - (ui) Add Android 15 requirement note to force dark toggle by @hxreborn