Kill every system ad on your Android phone — no root: hands-on with android-ad-cleaner
Your Xiaomi, OPPO, or vivo phone ships with ads baked into the system apps — the browser, the app store, the weather widget, even the settings search. android-ad-cleaner, a Python tool that gained 6,745 GitHub stars in under two weeks, switches them off through the settings screens the manufacturers already expose: no root, no uninstalled packages, and a backup snapshot first so every change can be undone. This guide runs it end to end.
- Who: android-ad-cleaner by rddmwmddr — rddmwmddr/android-ad-cleaner on GitHub, MIT license.
- What: Version 0.3.2 (released November 5, 2026); a Python tool plus a Mac/Windows desktop client that turns off system ads, hot search, news recommendations, and marketing push notifications.
- Momentum: 6,745 stars and 603 forks on November 6, 2026; created October 24, 2026 — about 6,700 stars in under two weeks.
- Method: adb plus a uiautomator2 engine that opens the manufacturers’ own settings pages and flips the toggles; per-model recipes hold the exact taps. It never uses
pm uninstallorpm disable-userand never touches the system partition. A backup snapshot runs before any change. - Scope: Xiaomi HyperOS, OPPO/OnePlus/realme ColorOS, vivo/iQOO OriginOS, Honor MagicOS, Huawei HarmonyOS, Meizu Flyme; Samsung One UI only partly covered.
- Verified results: OPPO Find X9 Pro — 165 settings verified, 60 marketing channels all closed; OnePlus 13T — 76 ad-tracking items; Xiaomi 17 Ultra — nine sections, 176-second re-run. From the repo’s tested-models table.
Ask a Xiaomi, OPPO, or vivo owner what annoys them most about their phone and the answer is rarely the hardware. It is the ads: promo banners in the file manager, hot search terms in the browser, 'recommendations' in the app store, marketing pushes from the weather app. These are not third-party apps you can uninstall. They are toggles buried three menus deep in system apps — and the manufacturers keep moving them with every update.
android-ad-cleaner attacks exactly that gap. Released October 24, 2026 by rddmwmddr, it is a Python tool — plus a point-and-click desktop client — that drives your phone's own settings over adb and switches the ad toggles off for you, model by model. In under two weeks it has picked up 6,745 GitHub stars. No root, no deleted packages, no modified system partition: it only touches settings the phone already exposes, and it takes a backup snapshot before changing anything. This guide runs it end to end.
What you'll need
- A computer — macOS, Windows, or Linux — and a USB cable that transfers data, not a charge-only cable.
- Python 3.9 or later on the computer.
- adb — Google's platform-tools.
- An Android phone from Xiaomi (HyperOS), OPPO / OnePlus / realme (ColorOS), vivo / iQOO (OriginOS), Honor (MagicOS), Huawei (HarmonyOS), or Meizu (Flyme). Samsung One UI is only partly covered so far. The tool works over adb only — phones on HarmonyOS NEXT, which uses Huawei's HDC instead of adb, are not supported.
- A few minutes per phone. The repo's own test runs take roughly three to nine minutes depending on the model.
Step 1: Install adb and clone the tool
Install adb first. On macOS:
brew install android-platform-tools
On Windows, download platform-tools from Google, extract it to C:\platform-tools, and add that folder to PATH. On Linux:
sudo apt install adb
Check it works:
adb version
Then clone the tool and install its Python dependencies:
git clone https://github.com/rddmwmddr/android-ad-cleaner
cd android-ad-cleaner
pip3 install -r requirements.txt
Step 2: Turn on developer mode and USB debugging, and connect
On the phone, open Settings, go to About phone, and tap Build number seven times — the exact path varies by brand, and the repo's docs walk through five brands with screenshots. Then, in Developer options, switch USB debugging on.
Plug the phone in and tap Allow on the authorisation prompt. Then list the connected devices:
python3 tool/run.py devices
Each line shows the serial number, the model name and code, the system version, and whether a per-model script exists for that phone. The serial number is the handle every later command uses. If you would rather not plug in, the same page covers wireless debugging: same Wi-Fi, Developer options → Wireless debugging → pair with a six-digit code (adb pair), then adb connect. If you want to see what else adb reveals about your phone, our hands-on NOIR audit walks an Android phone over adb looking for data leaks.
Step 3: Run the read-only check, then take a backup snapshot
First, a read-only pass — nothing changes:
python3 tool/run.py -s <serial> check
Then the snapshot, before a single toggle moves:
python3 tool/run.py -s <serial> backup
The snapshot lands in backups/<model>-<time>/: the phone's settings, its app lists, its notification channels, and the stay-on value. This is what makes the whole process reversible, so do not skip it.
Step 4: Run your model's recipe
One command does the work:
python3 tool/run.py -s <serial> recipe
Behind it, the engine opens each system app's settings page and flips the ad toggles, following a per-model script in recipes/<brand>-<model>/recipe.py — which app to open, which words to tap, which switches to turn off. If a settings page has moved in your system version, that step is skipped rather than tapped blindly. The repo's tested-models table gives a sense of the scale: an OPPO Find X9 Pro run verified 165 settings and closed 60 marketing channels, a OnePlus 13T run closed 76 ad-tracking items, and a Xiaomi 17 Ultra run finished nine sections in 176 seconds on a re-run.

If your exact model has no script, the tool says so and still runs the generic parts — and the repo ships manual per-brand checklists for doing the same toggles by hand, plus a guide to writing a recipe for a new model.
Step 5: Switch off the marketing notification channels
The recipe handles the in-app toggles. The push spam needs a second pass — notification channels:
python3 tool/run.py -s <serial> chan-scan
That lists the marketing channels. Then switch them off from the list:
python3 tool/run.py -s <serial> chan-off backups/<model>-<time>/channels.tsv
Channels go off one by one, not the whole app: the weather app's 'content and marketing' channel closes while its weather alerts stay on. The list of what was closed is saved to channels.tsv — that file is also the restore list.
Step 6: Quick apps, finish, and switch developer mode off
Some brands preload quick apps — mini-apps that run without installing. Detect them, then close them:
python3 tool/run.py -s <serial> quickapp # detect quick apps
python3 tool/run.py -s <serial> quickapp off # close them
Then wrap up:
python3 tool/run.py -s <serial> finish
python3 tool/run.py -s <serial> dev-off --yes # switch developer mode off from the computer; the phone disconnects after this step
Done. If you ever want anything back, the restore is one command per change type: unsuspend brings back suspended ad packages, chan-on backups/<model>-<time>/channels.tsv reopens the marketing channels, and quickapp on restores quick apps. Only the in-app toggles need switching back by hand, following the same checklist paths.
The no-terminal route
If the command line is not your thing, the same project ships a desktop client — version 0.3.2, released November 5, 2026 — for Mac (Apple silicon and Intel, signed and notarised) and Windows 10/11 (installer or portable zip), downloadable from the repo's Releases page. Plug the phone in and click through: connect, detect, choose what to switch off. Old versions do not auto-update, so re-download for a new release; existing backups are kept.
There is also an AI-agent route. The README ships a prompt to hand to a coding agent such as Claude Code, Codex, Cursor, Trae, or WorkBuddy:
Please clone https://github.com/rddmwmddr/android-ad-cleaner, read AGENTS.md in the repo,
then help me remove ads from this phone connected to the computer.
Tell me what you are going to change before each step.
The agent reads the repo's own operating notes and drives the same commands, asking before each change. And with only the phone in hand, any chat AI can walk you through the manual checklist instead. If you like the idea of an AI agent driving your phone, our hands-on guide to Mika — an on-device Android AI agent is the same instinct applied to everything else on the device.
What you built
A phone whose system apps stop advertising at you: no more promo banners in the file manager and app store, no hot search, no marketing pushes — with weather alerts and other useful notifications intact, and a backup snapshot plus restore commands if anything needs to go back.

Honest limitations
First, scope. The recipes target the Chinese builds of these phones — HyperOS, ColorOS, OriginOS, MagicOS — where the ads live. Global ROMs have fewer ads to begin with and fewer tested recipes, so check the tested-models table for your exact model and system version before starting. Samsung is barely covered: one 'ads' section on a Galaxy Note10+ so far.
Second, moving targets. Manufacturers rename and move settings pages with every update; a step whose entry point moved is skipped, not forced. Re-running after an update is the fix, and the repo's table marks which models are fully re-verified and which are partial.
Third, it is toggles, not uninstalls. Suspended ad packages stay on the phone, greyed out; without a computer the only way back is a factory reset — or borrowing a computer for one adb command (adb -s <serial> shell pm unsuspend --user 0 <package>).
Fourth, language. The tool's own docs are in Chinese — README, guides, per-model checklists. The commands are the same in any language, but reading the per-model notes needs translation; the desktop client is the friendlier route if that is a barrier.
Finally, foldables must stay folded during a run — the engine misreads the split-screen layout when the phone is open. The same strip-the-manufacturer-extras instinct applies to the TV: our CleanYourTV guide does the equivalent job for Android TV.
Frequently asked questions
Do I need to root my phone to remove system ads?
No. android-ad-cleaner works entirely through adb and the settings screens the manufacturer already exposes. It never uses pm uninstall or pm disable-user, never modifies the system partition, and never installs a module. Root is not required and not used.
Can I undo everything if something breaks?
Yes. The backup command snapshots the settings, app lists, and notification channels first; unsuspend restores suspended packages, chan-on restores the marketing channels from channels.tsv, and quickapp on restores quick apps. Only the in-app toggles need switching back by hand, following the same checklist paths.
My exact model isn’t in the tested table — will it still work?
Partly. The devices command shows whether a per-model script exists; without one, the tool still runs the generic check, backup, and channel scan, and the repo ships manual checklists per brand. If a settings page moved in your system version, that step is skipped rather than tapped blindly — and the repo’s guide explains how to write a recipe for a new model.