MapAdKiller

Verified safeOpen sourceExclusive
—
No reviews reviews
21
downloads
8.0
android

AI summary

LSPosed module that blocks splash ads, banners, feed cards and third-party ad SDKs in Amap, Baidu Maps and Tencent Maps. v2.0.2 fixes persistent Baidu "Campaign" and "Joint Construction" cards with high-frequency scanning during layout, eliminating blank-space holes left by earlier removal methods.

Generated by AI. May contain inaccuracies.

Screenshots

About this app

A local-only LSPosed module that deterministically blocks splash ads, home banners, feed ad cards and third-party ad SDKs in the three major Chinese map apps. Every hook point was derived from static reverse-engineering (jadx / apktool / androguard) of the target APKs — see https://github.com/ldxm666/MapAdKiller/blob/master/docs/ANALYSIS.md

・Amap (com.autonavi.minimap): splash (forced into the app's own NO_SPLASH path — no launch hang), real-time fetch, home carousel banner, background push ops-popups, search-page template splash

・Baidu Maps (com.baidu.BaiduMap): splash across all three channels (native/openapi/push), the mediation layer feeding 6 ad networks (Business/GroMore/Meishu/Octopus/Qumeng/Recommend), floating promo yellow bar, mid-banner

・Tencent Maps (com.tencent.map): GDT SDK init kill (initWith=false neutralizes tangram splash + fusion SDK), splash pipeline tasks, home banner binding, POI list ad cards (view layer)

v1.1.0 additions (both on by default, each with its own switch):

・Home search-box hot-word carousel — the rotating preset/ops/ad words (plus their brand icons). Hooked at the only two funnels that write BaseSearchBar.mHotWordTxtView (setHotWordTxt(..) / setPreWordTextView(..)); the word is replaced with the app's own string/title_search_hint, so the box stays static. ・"去XXX 打车" ride-hailing floating card in the home feed — located by "card copy anchors + AJX list-item structure" and removed as a whole card (first frame, plus an anchor-table re-sweep for rebuilt items).

Plus a generic ViewKiller sweep on every Activity.onResume matching known ad view classes and resource ids.

Requires root + LSPosed (tested on KernelSU + ZygiskNext + LSPosed v2.1.1, Android 16). Build without Android Studio: .\app\build.ps1 (JDK + SDK build-tools only).

Ads are probabilistically server-delivered — verify via logcat -s LSPosedFramework | grep MapAdKiller (HOOKED / KILLED / forced NO_SPLASH lines), not by one ad-free launch.

⚠️ Installation instructions: ① Need root + LSPosed (libxposed API 102; measured KernelSU + ②ZygiskNext + LSPosed v2.1.1 / Android 16) ③ Install MapAdKiller.apk Enable this module in LSPosed Manager (staticScope=true Fixed scope: Gaode/Baidu/Tencent, see app/META-INF/xposed/scope.list) ④ Restarting the target App takes effect (no need to restart the mobile phone)

● Privacy The module is not networked and does not collect any data; all logic modifies only the behavior of advertising components within the target App process.

📄 License Licensed under GPL-3.0-or-later.

What's new

v2.0.2Oct 1, 2026
  • ·Repair (feedback from users on real machines, final form) The "Baidu Campaign" and "Joint Construction for All" are still in place after being closed: These two cards were rendered by JS after getting the UGC data, and the re-scanning of card picking was originally only run in OnGlobalLayout --In the few seconds before the layout callback was triggered, the card was hung brightly on the page (User: "It has been there since I entered, but it will take a while to disappear"). Now you scan the "My" page every 200ms (lasts for about 15 seconds, and then automatically stops). The card is removed as soon as it is rendered, and the user will only see a flash.
  • ·Leave a large amount of blank space after closing: In earlier versions, the view was taken after the page was drawn, while the "My" page was an AJX self-drawn list (Set the positions according to the expected coordinates and will not be rearranged) → Remove and leave the hole. Now the removal occurs in the layout stage (in conjunction with the above high-frequency repeat scan) and no voids are generated; And if JS inserts the card back again, it will be removed on the spot for the next 200ms scan.
  • ⚠️ Note: The target App must be restarted after the module is updated (LSPosed injection occurs when the process is started)-- Open adb shell am force-stop com. baiduMap again. The reason why the user still had the card in the last round was that the module was installed later than the process.

About this version

Version
2.0.2 (202)
Size
188.91 KB
Requires Android
8.0
Target SDK
26
Architecture
universal
Downloads
21
Updated
Oct 1, 2026
Package
io.github.ldxm666.mapadkiller

Similar apps

Ratings & reviews

—
0 ratings
  • 5
    0
  • 4
    0
  • 3
    0
  • 2
    0
  • 1
    0

Write a review

Tap a star to rate this app