jellystack

Android TV, Google TV, and Fire TV

Jellystack TV is a remote-first companion build in the same Kotlin Multiplatform repository. It shares server, authentication, metadata, settings, and playback code with Jellystack mobile while using a dedicated Compose for TV interface.

The current closed beta is 0.16.0-tv-beta.4 with versionCode 22 and package ID app.jellystack.mobile.

Supported devices

The first beta does not include downloads, Cast, App Lock, biometrics, the admin dashboard, picture-in-picture, touch navigation, or voice search.

Build

Run all commands from the repository root with JDK 17:

.\gradlew.bat :app-android:assembleDebug
.\gradlew.bat :app-tv:assembleDebug
.\gradlew.bat :app-tv:assembleRelease :app-tv:bundleRelease
.\gradlew.bat verifyUniqueAndroidVersionCodes :app-tv:verifyTvReleaseManifestPermissions

Outputs:

The TV AAB is a local store artifact. It must not be committed or attached to a GitHub release.

Emulator and Fire TV installation

List connected devices and install the debug build:

adb devices
adb -s <serial> install -r app-tv/build/outputs/apk/debug/app-tv-debug.apk
adb -s <serial> shell monkey -p app.jellystack.mobile -c android.intent.category.LEANBACK_LAUNCHER 1

For a physical Fire TV, enable Developer Options, ADB Debugging, and Apps from Unknown Sources. Connect with adb connect <fire-tv-ip>:5555, confirm the prompt on the TV, then use the same install command.

Test at minimum:

Remote controls

Permissions and platform services

The TV manifest is limited to INTERNET and ACCESS_NETWORK_STATE, plus the application-scoped receiver permission generated by Android. TV does not include Google Play Services, Cast, location, storage, notification, or biometric permissions. Active playback keeps the display awake through the Activity window lifecycle rather than a wake-lock permission.

Run :app-tv:verifyTvReleaseManifestPermissions before every store build. Also inspect the final release manifest because transitive dependencies can change.

Google Play closed TV test

  1. Enable the Android TV form factor for the existing Play Console app.
  2. Create a dedicated closed Android TV test track.
  3. Upload app-tv-release.aab with versionCode 22.
  4. Upload store-assets/tv/google-play-banner-320x180.png as the localized TV banner.
  5. Upload at least two real 1920x1080 TV screenshots captured from a current build.
  6. Provide reusable English reviewer credentials and Quick Connect instructions under App Access.
  7. Confirm the Data safety and permission declarations match the TV artifact.
  8. Promote only after the emulator and physical Fire TV checklist passes.

Google guidance: https://developer.android.com/training/tv/publishing/distribute

Amazon Live App Testing

  1. Create a Fire TV app in the Amazon Developer Console using package ID app.jellystack.mobile.
  2. Select Fire TV as the supported device class.
  3. Upload the same GMS-free TV APK or AAB used for Google TV testing.
  4. Upload:
    • store-assets/amazon/0.16.0-tv-beta.3/fire-tv/app-icon-1280x720.png
    • store-assets/amazon/0.16.0-tv-beta.3/fire-tv/background-1920x1080.png
    • the five real 1920x1080 screenshots in the same fire-tv directory
  5. Add the privacy URL, support URL, English reviewer credentials, and Quick Connect steps.
  6. Start Live App Testing, install Amazon’s re-signed build on a physical Fire TV, and rerun playback, audio focus, remote, network, and lifecycle checks.
  7. Submit for normal review only after Live App Testing passes.

Amazon guidance:

Store and binary validation

Before upload: