Dropping support for Android 4.x

The F-Droid Android client, aka fdroidclient, has been around for over 10 years. The code base needs modernization to make it a lot easier to maintain and to be more inline with what contributors are used to working on. This is made a lot more difficult if we have to support very old Android versions. Right now, I think we need to set the minSdkVersion to 22 (Android 5.1).

We like supporting all working devices, but we also have to be realistic about what we can accomplish given the level of contributions we currently have. The best outcome might be that someone contributes the work to support Java8 in SDK Versions older than 22, then we can keep minSdkVersion at 14 (4.0). Another possibility is someone contributes work to make only the F-Droid Basic “build flavor” support back to 14, and the main flavor is bumped to 22. Or someone could make a fork to support older versions.

So there are a lot of things blocked until this happens:

  • Java8
  • using libraries written in Kotlin
  • using signatures better than SHA-1 on the F-Droid.apk

F-Droid v1.11 would stay working for a long time, so old devices can stay on v1.11 and have a working F-Droid. Someone could even maintain a stable branch off of 1.11 for old devices.

I would love to hear thoughts and feedback.

@n8fr8 @proletarius101 @contributors

More info here:

6 Likes

Hi! An ancient 4.4 user here…

I’m grateful that F-Droid has kept working for so long. I knew this would happen eventually and I completely understand. The reason I stick to an old device (an Xperia U) is the size (merely 11x5cm with a 3.5" screen). I’m using it as a dedicated podcast player (running cyanogenmod with only F-Droid and AntennaPod installed and no SIM card). Sadly new phones are just not made in this portable size, otherwise I would have replaced it long ago.

I completely see the problem with supporting old versions indefinitely, and I have already had to make several contributions to antennapod to keep it working on old android systems (including an unfortunate increase of the apk size a lot by bundling conscrypt). But knowing that the old version of F-Droid will continue working for some time is great to hear.

But it would be interesting to know how many F-Droid users this would affect. This (the number of user of old android devices) was previously discussed regarding bundling Conscrypt with AntennaPod (the trade-of between increasing the apk size for everyone vs. how many would benefit from it) and according to google statistics it seemed to be a very small number of users.

But I suspect the F-Droid users in general are more inclined to keep their “old” devices: more technically oriented and reflashing the stock rom to both remove the google services and bundleware (leaving more hardware performance) and makes the device more personal (and more valuable to keep as long as it works).

Is there any statistics about android versions of F-Droid users? I suspect not, since you have a policy to not log users. But maybe there’s something that can give a hint on it? It would be unfortunate if a large number of users would be affected by this, and maybe only find out when the new version releases.

2 Likes

Thank you for your feedback @Slinger.

We are also discussing on our issue for that: https://gitlab.com/fdroid/fdroidclient/-/issues/2145. There we have some “small” stats.

I started a wiki page to document which F-Droid releases work on old Androids: https://gitlab.com/fdroid/wiki/-/wikis/Running-on-old-Androids

@hans that seems like very good information, maybe even worth linking to from the homepage (for those about to click on the download link).

@fossdd thank you, there seem to be more conversation in the issue. I don’t have much to add (and I don’t bother creating a gitlab account right now, since “Slinger” is already taken there), but I got one remark: the statistics there seem based on google information (Android Studio/Play Store), which might not represent F-Droid users.

The idea that is brought up, of using HTTP requests/agents to get some statistics, sounds interesting at first. But speaking for myself, I NEVER use a browser on this (podcast-dedicated) device. It’s too old (performance, feature and security issues). I even installed F-Droid using the OTA privilege extension zip through rescue mode, not using the browser.

You got me charge up batteries and fire up a couple old devices with Android 2.2.3. One even had an old version of F-Droid from 2016.

Android 2+x and the required hardware “upgrades” are ‘‘much’’ better, right? As if. :smiley:

Unfortunately,

E/UpdateService( 3979): org.fdroid.fdroid.RepoUpdater$UpdateException: Error getting index file

E/UpdateService( 3979): Caused by: javax.net.ssl.SSLException: Not trusted server certificate

Tried the apk at the linked gitlab page. Same result. Could be worse. Play Store app force closed.

This seems to be a known issue with lots of previous discussion, but TL;DR enough to find the solution, yet.

that’s not F-Droid’s fault, looks like that device doesn’t support modern
Certificate Authorities. You could add them to let things work.

A pointer on how would be appreciated. at.bitfire.cadroid_8.apk install didn’t work (too old sdk), and my import attempt of a mozilla pem/crt file also failed…

FYI, Unihertz makes a couple models that are as small or smaller, although they use Mediatek.

Maybe this post is useful? But you will need to check which certificate(s) you are missing. Based on a quick check of f-droid.org, they are using Let’s Encrypt. Which is still provided by IdenTrust, I think? But soon Let’s Encrypt will use their own root certificate (ISRG Root X1).

Of course, it’s possible to ship missing certificates within an app (like this for example), but it’s probably not relevant here - unless old versions of the f-droid client is still “maintained” on some level?

Also thanks for the suggestion of Unihertz. I really appreciate it. Seems a bit tricky to get hold of (and there seem to be limited support by LineageOS and similar roms). But it’s promising to see that smaller sized devices are still being developed. Thanks!

1 Like

Amazon :confused: has Jelly Pro for $115 in stock, for US delivery, with Android 8.1. You could disable most apps and install f-droid and AntennaPod. With the armband, if you can find or fit one, it can be a super smart watch.

I fully understand your decision. Personally I use a phone under Android 5.0.1 which still perfectly suits my needs, apart from the lack of space with only 8 GB of internal memory. What is most important to me is that a version, no matter which one (Frdoid classic or another branch of Fdroid for example) continues to work with my current phone. The best solution would of course be to get around the problem of the minSDKversion in order to offer only one version that works on all devices. But it’s not a big deal if it doesn’t work ^^