How to Push APKs to Android TV via ADB Without Overwriting the Stock
Updated 2026-10-28
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:
- A computer running Windows, macOS, or Linux with ADB installed (
adbandfastbootin the same directory). - The Android TV box set to developer mode and developer options enabled (tiny icon at the bottom of the Settings screen, or toggled via
Settings > System > Developer optionsif present). The TV will ask for permission to enable developer mode. - The TV’s current firmware version number (e.g., 5.0.3) written down, because some firmware branches do not expose the 23‑byte APK signature check used by broadcast sideload.
- One USB‑C or HDMI‑to‑HDMI adapter and a reliable cable.
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
- 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. - Verify the connection with
adb devices. A line like01234abcd emulatormeans the link is working. If you seeunauthorized, unplug the USB cable, go to the TV’s settings, enable “USB debugging” (or the equivalent), reconnect, and retry. - For locked-down consumer brands, you may need to run
fastbootfrom 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
Path A — Broadcast sideload via adb install (recommended for CleanYourTV)
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:
- Running a custom ROM via
fastboot flash. - Installing a signed system image with a mismatched keystore.
- Disabling verified boot on devices that support 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
- APK signature mismatch. A TV using the newer Android TV 13+ signing scheme rejects installations from untrusted sources. Workaround: create a signed copy with the same key ID as the OEM’s own apps, or use a signed Broadcast package from the official factory image. CleanYourTV provides a test APK on its support site for this purpose.
- Screen timeout during push. Pausing midway leaves a partial APK in
/data/local/tmp. Remove the power source (keep the USB connected) and wait until the install finishes before unplugging. - Launch failure after install. Some firmware versions require the
launch()call to include a-p android.app.receiverflag to register the custom broadcast receiver that CleanYourTV expects. Test the sequence on a single unit before rolling it out to a room.
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
- TV developer options enabled, ADB visible in
adb devices. - One APK copied to the computer, signed with the correct key.
- Broadcast install:
adb install --install-version … - Launch via
am start -n ... - Confirm the app runs and CleanYourTV’s menu reflects the overlay.
- Reboot once, confirm the stock launcher is intact on next power‑on.
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
How to Automate Weekly Sideloading Updates on Android TV Media Panels
Learn how to set up automated sideloading of media panel apps on Android TV. Keep your panel extensions fresh without manual effort.
Best Practices for Securely Sideloading Corporate Android TV Apps
Learn how to safely sideload Android TV apps on corporate firmware to reduce attack surface without compromising performance or compliance.