Fixing Android TV Install Failures from ADB Sideloading
Updated 2026-10-28
The problem: install failures when you sideload APKs via ADB on Android TV
When you push an APK to an Android TV using adb install, the TV often rejects it with messages like “install denied” or “package not found”. This is especially common when you sideload custom packages—like decks, parental-control apps, or utility tools—from a phone, a developer build, or an internal build server. On stock Android TV this happens because of strict sandboxing, missing permissions, and path-handling quirks that don’t exist on regular phones. The fix is usually straightforward: verify the APK is well-formed, grant the right ADB scope, and confirm the destination path is correct.
Which steps reliably fix the most common sideload errors
The biggest cause of install rejection isn’t the APK itself—it’s the context around it. A few of the most common failure modes and what works:
- Wrong app ID on the command line.
adb install myapp-v2.apkfails if the internal name doesn’t match theapplicationentry in the firmware. Always pull the actual package name withadb shell pm list packages -3before installing. - Missing
android.permission.REQUEST_INSTALLwhen sideloading for rootless use. Some custom overlays or sideloaded utilities require install permissions at runtime, which ADB won’t inject automatically. Grant it via the vendor settings or a small wrapper script. - APK built for x86 or a generic “universal” APK on a TV that expects arm64. The install silently breaks on launch or during unpacking. Check
unpackagingoutput and ensure the architecture matchesandroidos.arch.x86oraarch64depending on your box.
A practical sequence that solves roughly 80% of sideload install failures on Android TV is: re-flash the firmware to official firmware first, then use a known-good ADB channel, copy the APK via USB, and run adb install -g --user 360 --nofingerprint <file>. The -g flag grants install permission without rooting, and --user 360 isolates the package to avoid interfering with Google Play packages.
Concrete trade-offs when you choose a sideload path versus official store installs
Sideloading gives you access to beta firmware, modded apps, and tools impossible to get otherwise. But the cost is real. You lose automatic security updates from the Play Store, and sideloaded packages compete with system apps for storage space and CPU cycles.
If you need to keep sideloading but want less friction, consider these compromises:
- Use the TV’s own network share (SMB) to transfer APKs instead of adb push. It avoids ADB’s occasional handling bugs with large files.
- Keep a separate user profile (
--user 360) for sideloaded content. It quarantines the sideloaded package from the system partition and makes uninstall cleaner. - Avoid mixing sideloaded sideloads. Each package you drop into
/data/appcan conflict with others. One or two trusted packages at a time is safer than a dozen.
Step-by-step: how to identify the real cause of a failed sideload install
Before retrying, check the log output immediately after the failure. Run:
adb logcat | grep -E "Security|Install|app"
If you see Security: Install permission not granted or PackageName: ... not found, the package ID is wrong. Search it with adb shell pm list packages -3 | grep <partial-id> to confirm the exact string.
If the APK size looks fine but the install still fails, try a different source. A corrupted download from a non-optimized mirror will fail mid-install with no error. Another symptom is installation succeeding but the app crashing on first launch—the APK was accepted but unpacking broke.
When the failure says “package not found,” the typical workaround is:
- Transfer the APK to the TV’s internal storage via USB (not wireless).
- Uninstall any previous version of the same app.
- Run
adb install --user 360 <file> /sdcard/MyApp.apk. - Launch the app; if it crashes, reinstall the current version and delete the older one first.
- Use
adb shell pm disable-developer-overrideonly on devices without Google services—not recommended for production setups.
Preventing repeated install failures on Android TV
The best defense is reproducibility. Build or obtain APKs from a single consistent source, and always test them on a stock-firmware reference unit before deploying to your TV lineup. Custom ROM-style builds of Android TV (often shipped for OEM smart TVs running “AOSP + TV modifications”) break ADB’s assumptions about the system partition layout.
For teams that regularly sideload firmware images: ship your own build scripts that include adb install checks and post-install health probes that verify the installed APK’s signature matches expectations. Pairing install automation with a staging box that tests each APK before rollout eliminates the bulk of human error in the process.
Bottom line
Sideloading on Android TV is reliable once you stop guessing. Pinpoint the failure mode—wrong package ID, architecture mismatch, missing permission—and address that exact cause. Stick to official firmware for base installs, reserve sideloading for approved apps, and keep your ADB channels clean. With the right logging, permissions, and validation steps, you can avoid the install failures that used to make TV developers go in circles.
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.
Automating Nightly Sideloading of Open-Source Android TV Packages
Learn how to script nightly sideloads of open-source Android TV packages on Google TV using ADB and a companion script to save time and keep builds fresh.