How to set up a custom sideload repo channel on Android TV

Updated 2026-10-30

Guide to setting up a custom sideload repo channel for Android TV sideloading

Why Android TV’s official store won’t satisfy every need

Android TV receives updates from Google via the Play Store, but many users—especially those who build their own media hubs, home automation dashboards, or private streaming boxes—want an app that isn’t in the store, or they need a specific version pinned. Sideloading lets you push APKs directly to the device over ADB or via the “Unknown sources” side panel. Doing it through a custom repository channel instead of ad hoc installs gives you better organization, version pinning, and the ability to unsubscribe cleanly without leaving traces in the public store.

Preparing the TV for a custom sideload repo

Before you touch any files, confirm your firmware version and enable developer options. Plug the box into the wall, fire up the remote, and go to Settings → System → About. Note whether you’re on a 10, 11, or 12-style build; early builds had uneven ADB support on certain TV models. Enable ADB debugging: Settings → System → Developer options → turn on “ADB debugging,” then connect the set top box to a laptop running the latest SDK Platform-Tools package.

On the TV itself, create a dedicated user account for sideloads if you share the device. Create a second Google account (or a separate local profile), because some sideload installers refuse to run on the primary consumer-account identity.

Building a custom repository XML file

A sideload repo channel is just an XML manifest describing the URLs of the APKs, their SHA‑256 hashes, and the package names. The structure follows the same pattern as YouTube’s “manifest” channels, and you can write yours with any text editor. Example:

<manifest>
  <package name="com.example.sidelove" versionCode="5" versionName="2.1.0-sideload"/>
  <repositortype url="file:///sdcard/sideload/manifest.xml"/>
  <install URL="https://updates.example.com/sideload/">
    <signature algorithm="SHA-256">abcdef123456...</signature>
  </install>
  <allowUserToInstallPackage="true"/>
</manifest>

Important: include an explicit <signature> block for each APK you host, and provide the exact SHA‑256 hash. Android verifies the package before installation, and missing hashes trigger a warning that you’ll likely have to fix. Use a trusted mirror host (your own server, a Gitea instance, or a static bucket) rather than a disposable freefile host.

Adding the sideload channel via ADB sideload command

Once the XML is on the TV (e.g., /sdcard/sideload/manifest.xml), issue the install command:

adb shell am install -r --allow-incomplete --allow-unrelated-data

The -r flag replaces an existing app with the same version code, and --allow-incomplete helps when you’re pulling a partial download. After the install completes, check Settings → Apps → Manage All Apps → sideloaded, and verify the package appears with your custom label and hash.

If the install failed, run the diagnostic helper that ships with most repositories:

adb shell /sbin/com.google.android.samples.SideloadHelper

It reports missing signatures, mismatched hashes, or installed packages that violate the channel policy.

Managing permissions and security best practices

Treat a custom channel as a first‑party app you control. Keep the APKs signed with a key you personally control—not the store’s Keystore—and keep the signing certificate offline. Add a README on the download page listing every SHA‑256 hash alongside the app’s purpose. For family‑shared devices, hide the sideloaded apps behind a separate Google account that uses restricted Play Store policies, and don’t let the main account see the sideload manager screen.

Avoid common pitfalls: don’t install from HTTP sites that host untrusted APKs (no integrity check), and don’t leave unknown apps in the “All apps” list longer than necessary. Remove the channel file once the last app has been verified and removed.

Troubleshooting common sideloading failures

ProblemLikely causeFix
APK fails to install, “signature verification failed”Hash mismatch or wrong signatureRe-sign the APK with your channel’s certificate; re-upload the manifest
Install succeeds but app crashes on launchMissing runtime permissionsTest with a known-good version of the same app; add missing permissions manually
TV hangs during the sideload processCorrupted download or incomplete fileClear cache, redownload the APK, and retry the same install command
Channel doesn’t appear in SettingsFile path wrong or XML malformedValidate the XML with a validator; ensure the file is on the root of the sideload folder

If the TV freezes, reboot into recovery, wipe cache and data of the sideload helper, and retry the install from a fresh source. Most hangs come from an interrupted download, so use a wired connection and verify checksums against your manifest before each attempt.

Wrapping up

Setting up a custom sideload repo channel on Android TV gives you reliable, organized access to the software your private media ecosystem needs. With the proper manifest, a signed APK, and a few safety habits around signing and storage, you can maintain a clean, uncluttered TV environment while still keeping the tools you want. Start small: push one package, install it, and watch for permission issues before scaling the channel to cover the rest of your sideloaded apps.

Related reading: more Android TV notes

Read next