Repository navigation
Releases: damienmiheev/rusttv
Release list
RustTV 0.3.2
Fixes the armeabi-v7a launcher, which crashed at startup on Android 11 and
12. If your TV runs 0.3.1's armeabi-v7a APK, update to this one. The
arm64-v8a and x86_64 APKs and the CLI behave as in 0.3.1.
Launcher
- The armeabi-v7a APK installed and the launcher then died at startup on an
Android 11 TV:dlopen failed: cannot locate symbol "_ZNSt6__ndk113__hash_memoryEPKvj". The armv7 Skia is built by
skia-armv7.yml with NDK 30, whose libc++ holds that function, but
android/build.sh took an inheritedANDROID_NDK_HOMEahead of its own pin
and GitHub's ubuntu runners export one for their older preinstalled NDK, so
the launcher was linked against a libc++ without the symbol. A shared
library may keep an undefined symbol, so the link, the build and
pm installall passed, and the reference fell to the platform's libc++:
Android 14 exports it, Android 11 does not. build.sh now refuses any NDK but
the pinned one, Android APK pointsANDROID_NDK_HOMEat it, and
android/check-so.sh fails the build when an APK leaves a C++ runtime symbol
undefined. The arm64-v8a and x86_64 APKs of 0.3.1 are unaffected. Found
and fixed by @Capka3i (#30).
Dependencies
- pulldown-cmark 0.13.6 (through Slint), for RUSTSEC-2026-0433.
Install
The full guide, including building from source: GETTING_STARTED.md.
- Download the CLI archive for your computer,
rusttv-0.3.2-<target>.tar.gz, and unpack it. On macOS the binaries are not notarized: runxattr -d com.apple.quarantine rusttv rusttv-mcponce. - On the TV, turn on network or wireless debugging, then
rusttv device connect <tv-ip>. - Download the APK for the TV's ABI (
rusttv device inspectshows it) andrusttv launcher install --apk rusttv-launcher-0.3.2-<abi>.apk. Optional:rusttv launcher takeovermakes RustTV the Home screen;rusttv launcher restoreundoes it.
Supported devices are the ones with a profile in compat/devices/. On other TVs RustTV refuses changes their profile doesn't record as tested unless you pass --allow-untested.
Check the files
SHA256SUMScovers every file and is signed with the update signing key:minisign -Vm SHA256SUMS -P RWSw/ASX3IHbwWo2E165vf8VLUVfDBY0Ptf2flvZ8Jna7dWbfYMmFMRX.rusttv updatechecks this itself.- Each file has a GitHub build provenance attestation:
gh attestation verify <file> --repo damienmiheev/rusttvshows the workflow run and commit that built it. *.cdx.jsonare CycloneDX SBOMs (every crate in the binary); each CLI archive has its own two.- APKs are signed with RustTV's release key. Certificate SHA-256:
ec16f7040c826d218cfd147c1fa49c4b376253c7b89b3d5e97ac707c8fd54473(apksigner verify --print-certs).
Safety
RustTV never roots, flashes or uninstalls system apps, and runs no free-form shell commands. Every change is planned, shown as a dry run, approved by a person, recorded and checked, and most can be undone with one command. See SECURITY.md.
RustTV is an independent project, not affiliated with or endorsed by the Rust Foundation, the Rust Project or Google.
RustTV 0.3.1
The 0.3.0 release was published without its files, and its tag can't take
another release, so this is 0.3.0 again under a new version. No code changes
since 0.3.0; what's new is in the 0.3.0 section of
CHANGELOG.md.
Install
The full guide, including building from source: GETTING_STARTED.md.
- Download the CLI archive for your computer,
rusttv-0.3.1-<target>.tar.gz, and unpack it. On macOS the binaries are not notarized: runxattr -d com.apple.quarantine rusttv rusttv-mcponce. - On the TV, turn on network or wireless debugging, then
rusttv device connect <tv-ip>. - Download the APK for the TV's ABI (
rusttv device inspectshows it) andrusttv launcher install --apk rusttv-launcher-0.3.1-<abi>.apk. Optional:rusttv launcher takeovermakes RustTV the Home screen;rusttv launcher restoreundoes it.
Supported devices are the ones with a profile in compat/devices/. On other TVs RustTV refuses changes their profile doesn't record as tested unless you pass --allow-untested.
Check the files
SHA256SUMScovers every file and is signed with the update signing key:minisign -Vm SHA256SUMS -P RWSw/ASX3IHbwWo2E165vf8VLUVfDBY0Ptf2flvZ8Jna7dWbfYMmFMRX.rusttv updatechecks this itself.- Each file has a GitHub build provenance attestation:
gh attestation verify <file> --repo damienmiheev/rusttvshows the workflow run and commit that built it. *.cdx.jsonare CycloneDX SBOMs (every crate in the binary); each CLI archive has its own two.- APKs are signed with RustTV's release key. Certificate SHA-256:
ec16f7040c826d218cfd147c1fa49c4b376253c7b89b3d5e97ac707c8fd54473(apksigner verify --print-certs).
Safety
RustTV never roots, flashes or uninstalls system apps, and runs no free-form shell commands. Every change is planned, shown as a dry run, approved by a person, recorded and checked, and most can be undone with one command. See SECURITY.md.
RustTV is an independent project, not affiliated with or endorsed by the Rust Foundation, the Rust Project or Google.
Skia 0.153.3 for armv7 Android (build input)
Build input, not a RustTV release.
Skia (skia-bindings 0.153.3) compiled for armv7-linux-androideabi, because rust-skia publishes no armv7 Android prebuilt. Built by the Skia armv7 workflow: https://github.com/damienmiheev/rusttv/actions/runs/39956273511
android/build.sh downloads this archive and checks it against the pinned SHA-256:
4a83dbd6b479c561fd358b59810b33598255e70010f731aa284306f33de5d136
Skia is BSD-3-Clause (LICENSE_SKIA inside the archive).