How to Push APKs to Android TV via ADB Without Overwriting the Stock

Updated 2026-10-28

Using ADB shell to push APKs to Android TV without overwriting the stock system

Android TV devices that come preloaded with a Google-approved OS image often restrict installing third-party applications outside the official Play Store. Developers who need to distribute custom dashboards, parental controls, or utility overlays face the standard Android requirement: unlock the bootloader, flash a custom image, or use the rarely‑documented broadcast sideload path that wipes the system partition.

CleanYourTV, the launcher built for the TV space, offers a safer middle ground. It lets you push an APK from a computer into /data/local/tmp and launch it without touching the stock system image. This avoids bricking the device, preserves OTA updates, and keeps the native launcher untouched.

What You Need Before You Start

Before running any commands, confirm you have the right tools and permissions:

If the device is branded by a consumer electronics company, the method works the same way regardless of vendor name; just remember that some brands lock the bootloader in firmware and may refuse to enter fastboot from the TV settings.

Enabling ADB on the Android TV Box

  1. Connect the TV to the computer with a USB cable. On most models you can see “ADB” in the Developer Options menu, but many Samsung, LG, and Sony Smart TVs support ADB through a special service mode. If the TV shows up as a device in adb devices, you are ready.
  2. Verify the connection with adb devices. A line like 01234abcd emulator means the link is working. If you see unauthorized, unplug the USB cable, go to the TV’s settings, enable “USB debugging” (or the equivalent), reconnect, and retry.
  3. For locked-down consumer brands, you may need to run fastboot from the TV’s recovery menu or use a temporary boot image that enables USB mass storage. This is beyond basic sideloading and is not required for the standard CleanYourTV workflow.

You now have adb shell access without root. All of CleanYourTV’s pushing operations use exactly this channel—so you can drive them from a script.

Pushing the APK: The Two Valid Paths

This is the method CleanYourTV advertises. It writes the APK into /data/local/tmp and launches it from the shell. No root, no system image change:

adb install --install-version /path/to/app.apk com.example.customsapp

The --install-version flag forces the app to load even when an identical version exists in the store cache. After installation, call:

adb shell am start -n com.example.customsapp/com.example.customsapp.MainActivity

The package loads as a regular foreground app. CleanYourTV’s scripts also support the am command to switch the launched activity to a different process if your launcher uses a dedicated overlay package.

What happens under the hood: the broadcast protocol writes the APK in write‑mode on the data partition, but the system image’s /system and /vendor partitions remain read‑only. The stock launcher continues to serve its own packages from /system/priv-app. Only /data/local/tmp is written to, so a reboot after a successful install leaves the device bootable and keeps the original firmware image intact.

Path B — Manual copy + launch via am launch

If you need to transfer a signed APK without triggering Play Store verification, use this manual route:

adb pull /path/to/app.apk /data/local/tmp/app.apk
chmod 644 /data/local/tmp/app.apk

Then launch it:

adb shell am start -n com.example.customsapp/com.example.customsapp.MainActivity

Because CleanYourTV intercepts the first launch of the pushed app and hides the stock shortcuts, the overlay appears as the launcher’s own menu. In practice we have found this more reliable when the TV’s OEM launcher rejects broadcasts due to a tampered package.xml.

Keeping the Stock Image Intact

The key trade‑off is simple: do not flash anything. Sideloading via adb install is a read/write operation on /data/local/tmp only. It does not overwrite /system or /vendor, and an OTA update from the manufacturer will either ignore the new package or replace it without trouble because it targets only the official store payload path.

The risk surface is small, but three things can break it:

If you follow the two recommended paths above and avoid any custom ROM workflow, CleanYourTV users rarely lose the stock system image, and they can still distribute their own launchers and utility apps.

Common Pitfalls and How to Avoid Them

Wrapping Up: Why Choose This Over a Full Unlock?

The practical benefit: you get a fully functional custom launcher, parental‑control overlay, or utility app deployed without the 20–30 minute process of unlocking the bootloader, flashing a custom ROM, and re‑flashing stock later. CleanYourTV pushes the APK into RAM‑mapped storage, cleans up the temporary files on shutdown, and restores the stock launcher to its default position unless you explicitly configure a replacement.

For IT departments managing a fleet of Android TV signage displays, this method is the difference between a one‑time 15‑minute push and a weekly maintenance cycle that would otherwise require a hardware technician.


Quick checklist

Following these steps keeps your Android TV’s stock system safe while letting you deliver custom functionality from a single USB connection.

Related reading: more Android TV notes

Read next