Does F-Droid support separate packages for different flavors?



I’m one of the developers of NewPipe. I’m working on adding an Android TV version of it, but since the minimum SDK version for Leanback is higher than we currently have and I didn’t want to increase the minimum SDK version, I’m doing it as a different product flavor. Does F-Droid support serving different product flavors for eg. Android TV devices?


I don’t think Fdroid can specifically differentiate Android TV devices. What you might be able to do is have two different versions with different minSDKs on F-Droid which are relased simultaniously.

Devices which have sufficiently high Android version will be shown both app versions and can always upgrade to the higher minSDK one. Older devices will be shown only one version.

That’s far from pretty but should work relatively well right now.

(btw, I love NewPipe!)

E: If I understood you correctly that the that includes support for Android TV would be a superset of the ‘normal’ version. Otherwise this would of course not work.


Android Wear SDK is proprietary, so that’s not possible in F-Droid (unless that changed). Is the Android TV SDK free software?


@Bubu: The TV version will indeed be a superset of the normal version for now, but I’d prefer it if it wasn’t in the future, so that TVs don’t have to download unneccessary non-TV code and non-TV no TV code. Btw how’d we set it up to build every version twice (once for every flavor)? Here I see that that you could specify a flavour for Gradle, but that’s specific for a build. Since builds are automatically added on a Git tag, how’d I let the F-Droid Bot add that (and remove the submodules=yes, since we’re using Gradle for NewPipeExtractor now)? And won’t it confuse users that F-Droid shows every version 2 times then (or does it only show every version once)? I’ve never packaged something for F-Droid, so I’m sorry for my stupid-ish questions.

@hans: Android TV support is provided as the open-source Leanback support library on Google’s Maven repo and the source code is available here.


What about just doing a separate repo, and treating it as its own app till the stability is there, and hopefully the ecosystem has moved to where it can be one version in the future?