The Problem

Android TVs often run slow, display intrusive ads, and collect telemetry. Users also dislike the cluttered Google‑TV home screen. A lightweight, reversible solution that removes ads, stops telemetry, and replaces the home screen with a clean Apple‑TV‑style launcher is lacking.

What This Does

unbloat-android-tv installs a minimal home screen (Zen Home) and disables unwanted services on a target TV.

  • ecran-accueil/ZenHome.apk is the launcher that replaces Google‑TV.
  • scripts/listes/pubs_telemetrie.txt lists ad‑related packages; scripts/listes/optionnel.txt lists optional services.
  • kit.sh/kit.ps1 present a menu that performs diagnostics, backups, unbloat, Zen Home installation, photo replacement, screenshot capture, and full restore.
  • LANCER.* scripts bootstrap the menu by asking for the TV’s IP and invoking the appropriate shell/PowerShell script.

How It Is Wired

ENTRY POINT – LANCER.bat (Windows) or LANCER.sh (Linux/macOS) → calls kit.ps1/kit.sh. CONTROL FLOW –

  1. kit.sh reads the IP, verifies ADB connectivity, then enters a while loop displaying a numbered menu.
  2. Each menu number maps to a function defined in the same script: diag → adb shell dumpsys → outputs Android version, RAM, CPU, Wi‑Fi, and a package list. backup → adb backup of user data and adb pull /data/data to a local folder; also screenshots the home screen. unbloat → iterates over lists in scripts/listes/*, executing adb shell pm disable-user --user 0 <pkg> for each. install_zenhome → adb push ecran-accueil/ZenHome.apk /data/local/tmp/ followed by adb shell pm install -r /data/local/tmp/ZenHome.apk. * restore → re‑enables every package disabled by unbloat and removes Zen Home via adb shell pm uninstall com.zenthome.
  3. Side effects – all ADB commands touch the device’s package manager, the /data/data directory, and optionally /data/local/tmp. No external network calls are made; the script only communicates over the local ADB tunnel.

WIDE‑BLAST‑RADIUS FILES –

  • kit.sh / kit.ps1 (control logic)
  • scripts/listes/*.txt (data source for disabling packages)
  • ecran-accueil/ZenHome.apk (payload installed on the TV)

These files are the single points of change if the unbloat logic or package lists need updating.

How To Use It

# 1. Clone the repo
git clone https://github.com/moses-y/unbloat-android-tv

# 2. Enable Developer mode and ADB on the TV

# 3. Run the launcher
# Windows
./LANCER.bat
# macOS
open LANCER.command
# Linux
chmod +x LANCER.sh
./LANCER.sh

The script prompts for the TV’s IP, then presents the numbered menu. Choose 2 to unbloat, 3 to install Zen Home, 6 to restore, etc.

Real‑World Use

A home‑owner with a TCL 2019 (Android 9) runs the kit during a weekend.

  • After selecting options 1, 2, 3, the TV’s RAM usage rises from 451 MB to 720 MB, the home screen shrinks from 187 MB to 25 MB, and the foreground CPU drops from 61 % to 12 %.
  • The user can revert in one step by selecting 6, returning the TV to its original state.

Code Health & Issues

  • Medium/SDLC – No tests – 0 test files detected; all code paths unverified.
  • Medium/SDLC – No CI/CD – No .github/ or other CI configuration; builds are manual.
  • Low – No license file – LICENSE present but not checked for completeness.
  • Low – Documentation – Only Markdown files; no API docs or code comments.

The Bottom Line

unbloat-android-tv delivers a quick, reversible way to clean an Android TV and install a minimalist launcher. Its shell‑based menu is straightforward but lacks automated testing or CI, making maintenance harder for larger teams. It suits hobbyists and power users who can tolerate manual debugging and are comfortable with ADB.