feat: Add Android TV support#3389
Conversation
Add README_TV.md with instructions for building, installing, and testing ReVanced Manager on an Android TV (API 28) emulator, including SDK/NDK mapping and GitHub Packages guidance. Add gradle/gradle-daemon-jvm.properties (generated by updateDaemonJvm) to pin foojay toolchain URLs and version. Remove dummy githubPackagesUsername/githubPackagesPassword from gradle.properties to avoid committing credentials. Update settings.gradle.kts: bump fooyay resolver plugin to 1.0.0 and switch GitHub Packages repository credentials to read from gradle properties via providers.gradleProperty instead of PasswordCredentials.
Make x86 native libs available for Debug builds to support local Android TV x86 emulators: jniLibs now conditionally excludes /lib/x86/*.so only when the invoked Gradle tasks are not Debug, preventing INSTALL_FAILED_NO_MATCHING_ABIS during emulator testing while keeping release builds size-optimized. README_TV.md updated with an emulator ABI compatibility note and the githubPackagesUsername set to TUSHAR91316 to reflect local setup instructions.
…edentials modifications
| <uses-permission android:name="android.permission.WAKE_LOCK" /> | ||
| <uses-permission android:name="android.permission.ENFORCE_UPDATE_OWNERSHIP" /> | ||
|
|
||
| <!-- Declare Leanback TV support (touchscreen is optional) --> |
There was a problem hiding this comment.
by default android thing we require touch screen but android does not have touch screen and we need to use d-Pad.I will help Android TV OS from filtering out the app during installation. also while the comment clarifies that the app remains fully compatible with touchscreen-enabled phones/tablets.
There was a problem hiding this comment.
i have provided the explaination pls check
TUSHAR91316
left a comment
There was a problem hiding this comment.
Since TV devices do not have touchscreens, this declaration prevents Android TV OS from filtering out the app during installation
|
Does the app behave sensibly on Android TV? |
Screen_recording_20260605_080108.mp4here the video of the app launching in tv and controlled by d pad/remote |
Add TV_PR_NOTES.md documenting the Android TV support PR (ReVanced#3385) with maintainer feedback, QA steps for TV emulators, and ready-to-use reply text. Update gradle/wrapper/gradle-wrapper.properties to use Gradle 9.5 (update distributionUrl and remove obsolete wrapper entries). Add the Foojay toolchain resolver plugin declaration in settings.gradle.kts.
…-wrapper.properties
|
Next time please don't recreate your PR, this so to make it easier to keep track of the prior comments. Ref: old pr #3386 |
validcube
left a comment
There was a problem hiding this comment.
LGTM
FYI from prior comment in first attempt PR: My primary concern with this is the manager doesn't have a design for leanback devices which needs to be discussed with the designer in advance. The layout of the manager may be more suited towards a mouse pointer navigation instead of keyboard. The overall UI/UX is I'd imagined to be not that great for leanback. But this PR can be as a starting point for Android TV support branch.
Description
This PR introduces support for Android TV devices. It has been streamlined and cleaned up to act strictly as a minimal, non-disruptive starting point for an Android TV platform support branch.
Based on valuable maintainer feedback from
@oSumAtrIXand@validcube, all build-related, packaging, toolchain, credentials, and documentation files have been completely reverted. The PR now focuses solely on establishing the TV entry point.Key Changes
leanbacksupport andLEANBACK_LAUNCHERintent filters toapp/src/main/AndroidManifest.xmlso the application can appear natively in the Android TV home screen.android.software.leanbackandandroid.hardware.touchscreenare set torequired="false"to prevent imposing touchscreen constraints or breaking non-TV platforms.Reverted Changes (Based on maintainer feedback)
app/build.gradle.kts. The file matches upstream exactly. Contributors testing locally are advised to use anx86_64AVD as recommended.settings.gradle.ktsand deletedgradle/gradle-daemon-jvm.properties.settings.gradle.ktsback to using the standardPasswordCredentialsblock.README_TV.mdto keep the root repository clean.Testing Performed
x86_64Emulator.Related Issues
Resolves #3385