feat: Add Android TV support and fix local x86 emulator testing#3386
feat: Add Android TV support and fix local x86 emulator testing#3386TUSHAR91316 wants to merge 5 commits into
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.
validcube
left a comment
There was a problem hiding this comment.
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.
|
|
||
| plugins { | ||
| id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" | ||
| } |
There was a problem hiding this comment.
From our internal discussion, we have decided to not include foojay resolvers. Not related to the PR.
| credentials { | ||
| username = providers.gradleProperty("githubPackagesUsername").orNull ?: "" | ||
| password = providers.gradleProperty("githubPackagesPassword").orNull ?: "" | ||
| } |
There was a problem hiding this comment.
You are supposed to put your PAT in the Gradle user home properties. Not related to the PR.
There was a problem hiding this comment.
Makes perfect sense. I have reverted this file entirely to use the original PasswordCredentials block, keeping user configurations in global home properties.
There was a problem hiding this comment.
This file is not needed here as we already have a guide that encompasses the building process.
There was a problem hiding this comment.
Reverted and deleted! I have removed the TV-specific markdown file to keep the root directory clean and consistent with your existing guides.
|
You are absolutely right. A comfortable, polished TV Leanback UI/UX will require dedicated design collaboration, D-pad focus traversal, and layout adaptations. Since we declared both android.software.leanback and android.hardware.touchscreen to required="false", it doesn't force any strict touchscreen constraints but simply registers the entry point for Android TV. I completely agree with treating this PR as a minimal starting point to unlock the Android TV branch. Having the launcher entry point merged will allow the community and designers to start collaborating on remote navigation and layout adaptations on top of this baseline. To align with your guidelines, I have cleaned up the PR and reverted all unrelated changes. It now contains only the necessary manifest declarations to unlock Android TV support! |
Description
This PR introduces support for Android TV devices and fixes issues related to local testing on TV emulators, along with essential project build improvements.
Key Changes
leanbacksupport andLEANBACK_LAUNCHERintent filters toAndroidManifest.xmlto ensure the application properly appears in the Android TV home screen.app/build.gradle.ktsto conditionally excludex86native libraries only during Release builds. This resolvesINSTALL_FAILED_NO_MATCHING_ABISerrors when installing and testing the app on local x86 Android TV emulators, while keeping release build sizes optimized.README_TV.mdwith step-by-step instructions on how to set up, build, and test ReVanced Manager on an Android TV emulator.foojay-resolver-conventionplugin insettings.gradle.ktsto version1.0.0to resolve JVM toolchain crashes on newer versions of Gradle.settings.gradle.ktsto read GitHub Packages credentials viaproviders.gradlePropertyto prevent accidental credential leaks.Testing Performed
Related Issues
Resolves #3385