Share2Storage icon indicating copy to clipboard operation
Share2Storage copied to clipboard

Drop Oreo support and make Pie the minimum supported Android

Open MateusRodCosta opened this issue 1 year ago • 7 comments

Just a heads up for whoever comes across this repo and this issue, I plan to move the minimum suported Android from API 26 (Android Oreo 8.0) to API 28 (Android Pie 9). Since I don't need to do this change immediately and I don't see much point in releasing a new version only for that without any other relevant changes, I plan to at least wait until I have Android 15 on my Galaxy phone (according to Samsung that should be at around beginning of next year) so I can also upgrade the target SDK and I plan a redesign and launching all that as a 2.0.0.

It should be noteworthy that I usually change the minimum Android version based on the idea that it means certain behaviors and characteristics are now guaranteed. For example, these are the benefits for setting the minSdk to any specific value from Android 5 Lollipop to Android 8 Oreo:

  • Android 5 Lollipop: Material Design, The ART runtime (improved performance, no need to manually enable multidex)
  • Android 6 Marshmallow: Runtime Permissions guaranteed
  • Android 7 Nougat: Java implementation is replaced (Harmony -> OpenJDK, more consistent Java behavior), APK signing v2
  • Android 8 Oreo: Notification improvements, Adaptive Icons (can be all vectors, shaving some kbs from pngs), Android Go (some Google apps to this day are Android 8.0+)

Upgrading the minimum to Android 9 Pie brings the following changes:

Those are very minor and somewhat technical, which is why I will wait a bit. In any case, while Android 8 would have been a decent experience for the past few years, we are slowly nearing a time where at least Android 10 or 11 is needed fr a decent Android experience, mainly due to GPSU.


To sum it up, I plan to drop Android O support and support Android P as the minimum due to some technical improvements added in Android P.

I plan on making a new release that not only drops support for Android O but also at least does a redesign and potentially adds new features. Such release is planned for at least when Android 15 becomes widely available to Galaxy devices (so I can also change the targetSdk to Android 15 and test on my personal phone).

I plan at least in a first moment to ask F-Droid to keep the last version supporting O available, and I will see about making the Play Store also keep shipping that version. At some point such users would be best served from getting the old version from F-droid and sideloading.

If you have any feedback about this, go ahead.

MateusRodCosta avatar Oct 04 '24 14:10 MateusRodCosta

I have forced uncompressed DEX for the app as part of 874fda682f8ee0596b7420aa92c8de0024b583b6, I don't know if this will cause issues on Android O. This increased the app size in 1MB and will make its way to the next release.

MateusRodCosta avatar Oct 12 '24 13:10 MateusRodCosta

I have forced uncompressed DEX for the app as part of 874fda6, I don't know if this will cause issues on Android O. This increased the app size in 1MB and will make its way to the next release.

Good news, I tested the uncompressed dex version on an old Android 8.1 device I have lying around and... It works without issues!

To be more precise these are the benefits according to docs:

AGP now packages DEX files uncompressed in APKs by default when minSdk = 28 or higher. This causes an increase in APK size, but it results in a smaller installation size on the device, and the download size is roughly the same.

From https://developer.android.com/build/releases/past-releases/agp-4-2-0-release-notes#dex-files-uncompressed-in-apks-when-minsdk-=-28-or-higher

APK signing v3-only can wait, and the dex format new version can also wait.

So, I should be able to wait a few more Android versions before dropping O support. I was initially planing for when Android 15 starts being available on many devices (using the Samsung Galaxy as a reference), but now I think I can wait for the same but for Android 16 or 17.


Of note there's also

We recommend packaging native libraries in uncompressed form, because this results in a smaller app install size, smaller app download size, and faster app loading time for your users. However, if you want the Android Gradle plugin to package compressed native libraries when building your app, set useLegacyPackaging to true in your app's build.gradle file

From https://developer.android.com/build/releases/past-releases/agp-4-2-0-release-notes#compress-native-libs-dsl But that's applied by default since we're on minSdk 26... So no need for changes!

MateusRodCosta avatar Oct 12 '24 16:10 MateusRodCosta

Because Amazon Fire devices use Android 5, if/when those devices are not supported by newer versions it would be worh linking to the last compatible version in the readme

clach04 avatar Mar 16 '25 14:03 clach04

Because Amazon Fire devices use Android 5, if/when those devices are not supported by newer versions it would be worh linking to the last compatible version in the readme

Just to be clear, I plan on moving all my apps to have a minimum supported version of Android Pie 9 (potentially higher depending on the app)

Save Locally currently requires at least Android Oreo 8.0 or higher. Android Lollipop 5.x is not supported at all.

I do understand that Amazon Fire devices are not standard Android devices, but for me it's beneficial to set the minimum to Android 9 because not only I can drop support for a few devices that might have bad performance due to aging hardware as well as I become able to take advantage of newer Android features or system improvements.

MateusRodCosta avatar Mar 16 '25 15:03 MateusRodCosta

This might be delayed until April or May.

MateusRodCosta avatar Mar 25 '25 14:03 MateusRodCosta

This is now in progress and I should release a new version soon.

MateusRodCosta avatar May 16 '25 17:05 MateusRodCosta

Just a heads up for whoever comes across this repo and this issue, I plan to move the minimum suported Android from API 26 (Android Oreo 8.0) to API 28 (Android Pie 9). Since I don't need to do this change immediately and I don't see much point in releasing a new version only for that without any other relevant changes, I plan to at least wait until I have Android 15 on my Galaxy phone (according to Samsung that should be at around beginning of next year) so I can also upgrade the target SDK and I plan a redesign and launching all that as a 2.0.0.

It should be noteworthy that I usually change the minimum Android version based on the idea that it means certain behaviors and characteristics are now guaranteed. For example, these are the benefits for setting the minSdk to any specific value from Android 5 Lollipop to Android 8 Oreo:

* Android 5 Lollipop: Material Design, The ART runtime (improved performance, no need to manually enable multidex)

* Android 6 Marshmallow: Runtime Permissions guaranteed

* Android 7 Nougat: Java implementation is replaced (Harmony -> OpenJDK, more consistent Java behavior), [APK signing v2
  ](https://source.android.com/docs/security/features/apksigning/v2)

* Android 8 Oreo: Notification improvements, Adaptive Icons (can be all vectors, shaving some kbs from pngs), Android Go (some Google apps to this day are Android 8.0+)

Upgrading the minimum to Android 9 Pie brings the following changes:

* [APK Signing v3](https://source.android.com/docs/security/features/apksigning/v3) (I don't need to sign both v2 and v3 anymore, only v3)

* [DEX files are uncompressed when minSDK is >= 28](https://developer.android.com/reference/tools/gradle-api/8.7/com/android/build/api/variant/DexPackagingOptions#useLegacyPackaging()) (this will make the APK slightly bigger but, [according to Google devs, the device will not have to create a uncompressed copy anymore, potentially saving space](https://issuetracker.google.com/issues/259832799#comment2))

* [DEX version 39](https://www.pnfsoftware.com/blog/dex-version-39-new-dalvik-opcodes/) (very technical, not sure if brings actual noticeable improvements)

Those are very minor and somewhat technical, which is why I will wait a bit. In any case, while Android 8 would have been a decent experience for the past few years, we are slowly nearing a time where at least Android 10 or 11 is needed fr a decent Android experience, mainly due to GPSU.

To sum it up, I plan to drop Android O support and support Android P as the minimum due to some technical improvements added in Android P.

I plan on making a new release that not only drops support for Android O but also at least does a redesign and potentially adds new features. Such release is planned for at least when Android 15 becomes widely available to Galaxy devices (so I can also change the targetSdk to Android 15 and test on my personal phone).

I plan at least in a first moment to ask F-Droid to keep the last version supporting O available, and I will see about making the Play Store also keep shipping that version. At some point such users would be best served from getting the old version from F-droid and sideloading.

If you have any feedback about this, go ahead.

Asshole

thomassellars82-lang avatar Aug 13 '25 11:08 thomassellars82-lang