Saying Goodbye to Android 4.0-4.4 | Patreon Weekly #314
Added 2025-06-09 16:21:55 +0000 UTCHey Patrons, in this weekly I’m sharing a little background info on why I’m dropping support for some older Android versions.
There’s also a new Patreon Poll this week! In this poll I’m asking for feedback on one final adjustment to the Warrior’s splash art.
Goodbye Android Ice Cream Sandwich, Jellybean, and KitKat
I’m quite proud that Shattered runs on some absolutely ancient Android phones. You can still play it on an OG Nexus S, a phone initially released back in 2010! I have, over the years, needed to increase the minimum OS version though, first dropping Android 2.2 in 2019, and then 2.3 in 2021. Now there’s unfortunate a pretty big bump, dropping all of Android 4.0 to 4.4 at once! Previously I wrote full blog posts on these changes, but Shattered has a much wider audience now and so I felt a weekly and maybe a mention in the next blog was more appropriate.

(default Android UI on 4.0 ICS, 4.1-4.3 Jellybean, and 4.4 Kitkat. Images courtesy of Wikipedia)
The reason for this big increase is an update to Android’s NDK, or ‘Native Development Kit’, which is used when creating code that runs directly on device hardware. By comparison, most Android app code (including all of Shattered’s game logic) is written in code which is then compiled into machine code by Android on the user’s device. With a change made in 2023, the NDK requires Android 5.0+. This change percolated to Google code libraries over 2023 and 2024, reached libGDX earlier in 2025, and in August Google will require those code library updates, effectively forcing the change on Shattered.
I am no expert in how the Android OS works, but to the best of my knowledge a lot of this comes down to how Android runs non-native code. Prior to Android 5.0, the standard for this was a system called Dalvik, which compiles code 'just-in-time' when an app is running. Android 5.0 standardized the newer ART (Android RunTime), which compiles code 'ahead-of-time' when an app is installed, and stored it on the device. ART requires a little more device storage, but compiling ahead of time is a lot more efficient when actually running an app.
I make no claims about being knowledgeable on how the Android OS actually works, but it's my understanding that the move from Dalvik to ART resulted in a lot of changes to OS behaviour. After over 10 years, the NDK engineers at Google are understandably quite sick of having to still support very old Android and its Dalvik code runtime. Also, Android versions prior to 4.4 haven't been officially supported by the NDK for a while now, but they've silently still worked in some cases. Now, however, the NDK assumes Android is using ART, and absolutely needs Android 5.0+ to function.
This is why I decided to make 3.2 a relatively small update that focuses just on thrown weapons, as I want to try and get one more release out to the ~1% of Android Shattered users that are still on 4.4-, before being forced to drop it afterward.
Comments
Thank you for the commitment to keeping older devices useful! I'm not in the 1% but I'm glad my old phone could run Shattered if it came to it
Artem Mateush
2025-06-11 11:13:26 +0000 UTC