KISS
KISS copied to clipboard
Drop support for Android 4 (Jelly Bean and KitKat)
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%.

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

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.
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.
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.
@mubashir-rehman they won't see any change, just won't be able to upgrade KISS anymore
@saveman71 here is a 4 year breakdown of all Android 4:

Android 4.4 is dropping, older versions remain fairly constant.
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.
@AlbahrawyAlalimi they'd still be able to install the existing version, but they won't get updates anymore.
Yes I know that, but is there no other option to turn off updates for Android less than 5?
The main goal is not to stop updates, it's more to be able to benefit from new features of Android :)
Are there already more specific plans on dropping Android 4?
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?
That could work, yeah
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!