KISS icon indicating copy to clipboard operation
KISS copied to clipboard

Drop support for Android 4 (Jelly Bean and KitKat)

Open Neamar opened this issue 5 years ago • 12 comments

Back in 2016, issue #493, we decided to drop support for Android 2.3.

I think it is now time to look at deprecating officially Android 4 (so Jelly Bean: 4.0.3, 4.1, 4.2 and 4.3; and also KitKat 4.4). Latest version, Android 4.4, was released in 2013.

Why deprecate?

  • Android L (Android 5) introduced a ton of new concepts that are now widely in use. The most important ones: material design, support for vector icons, and a new way to query for app list (through user profile).
  • We currently have around 20 code paths in the codebase explicitly checking for Android 4 and doing weird stuff to work around bugs or missing features.
  • We don't support Android 4. We received a couple of issues recently, and every time the answer was the same -- we can't support this version of Android.

How many users will be impacted?

On the Play Store, Jelly Bean is less than 3% of the user base for KISS. KitKat is 4%.

image

This is relatively consistent with Google Data about devices accessing the Play Store: image

Which means KISS isn't particularly used on old devices (we're actually even trailing ahead, with a device distribution more modern than what the play Store is seeing)

It's worth noting that those users won't lose KISS, they'll just stop getting updates.

What will we get?

  • Code will be simplified drastically in two distinct areas:
    • First, AppHandle. Each application is tied to a UserHandle, and we "mock" a fake system before Android L, with two different codebases. The old version is simpler, but it's better to maintain a single complex component than a complex and a simpler one.
    • Asset management. accent colors and primary color become available everywhere, which means most styling can be done at the asset level (faster and more performant). We can get rid of some parts of the customization logic, which we now get for free with the system (#1351 paves the way for very easy tweaking of colors for instance)
  • No bug report from older Android that I can't emulate anymore.
  • It becomes easier to work on new features since Android L is the "base ground" for pretty much all system APIs. (there hasn't been a single "big" release in terms of platform since, and it was 2014).
  • Features like gridview can be implemented
  • RecyclerView is more efficient than the ListView that we use for everything. See https://medium.com/@kish.imss/listview-vs-recyclerview-2965d50b363

Happy to get feedback, we can postpone without any issues, but I've been thinking about this for some time.

Neamar avatar Feb 14 '20 18:02 Neamar

I would suggest that you only make an update for users using the below 5.0 and let them know about the changes to be made.

mubashir-rehman avatar Feb 17 '20 15:02 mubashir-rehman

Do you have a graph with an axis and more history? How fast is the 4% dropping? Otherwise I'm OK for this, even my 2012 Nexus 4 would have received the Lollipop update.

saveman71 avatar Feb 17 '20 16:02 saveman71

@mubashir-rehman they won't see any change, just won't be able to upgrade KISS anymore

Neamar avatar Feb 18 '20 10:02 Neamar

@saveman71 here is a 4 year breakdown of all Android 4:

image

Android 4.4 is dropping, older versions remain fairly constant.

Neamar avatar Feb 18 '20 10:02 Neamar

Please do not stop support for devices running Android less than 5 because these devices are more in need of a kiss launcher due to the low RAM on these devices.

AlbahrawyTiger avatar Feb 25 '20 21:02 AlbahrawyTiger

@AlbahrawyAlalimi they'd still be able to install the existing version, but they won't get updates anymore.

Neamar avatar Feb 25 '20 21:02 Neamar

Yes I know that, but is there no other option to turn off updates for Android less than 5?

AlbahrawyTiger avatar Feb 25 '20 21:02 AlbahrawyTiger

The main goal is not to stop updates, it's more to be able to benefit from new features of Android :)

Neamar avatar Feb 25 '20 21:02 Neamar

Are there already more specific plans on dropping Android 4?

Dakkaron avatar May 09 '20 11:05 Dakkaron

I guess we can create a new branch specifically for <= Android 4, document it as "archived" and not officially maintained. Any bugfix on that branch would be welcomed via pull-requests, but no work would be done on it, and no backporting of new features. Sounds like a plan?

saveman71 avatar May 09 '20 14:05 saveman71

That could work, yeah

Neamar avatar May 10 '20 09:05 Neamar

I just checked numbers, and we're below 150 users running pre-Android L.

I'll do one final release (v3.16.0) for those users, with the importer / exporter bundled in so they can migrate at a later time, and with #1692 too as a final gift ;)

After that v3.17.0 onwards, Android 4 won't be supported at all anymore. Good bye KitKat, it's been fun while it lasted!

Neamar avatar Feb 23 '21 13:02 Neamar