MateusRodCosta / Share2Storage

Save files locally via the share menu
https://play.google.com/store/apps/details?id=com.mateusrodcosta.apps.share2storage
GNU Affero General Public License v3.0
125 stars 4 forks source link

[PLANNED] Drop Oreo support and make Pie the minimum supported Android #38

Open MateusRodCosta opened 1 month ago

MateusRodCosta commented 1 month ago

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:

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 commented 1 month ago

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 commented 1 month ago

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!