Jump to content
Yaron

Delphi 10.3 and supported version of Android

Recommended Posts

After previously uploading a Delphi 10.2.3 to the google play store, I uploaded an APK compiled in Delphi 10.3.

This triggered a warning message by the play store that some devices will no longer be supported by this build.

 

My code hasn't changed... Does anyone know if this can be worked around so I can keep supporting these older devices?

 

Share this post


Link to post

I'm not sure you're correct.

 

From this:

https://developer.android.com/distribute/best-practices/develop/target-sdk

Quote

Configuring your app to target a recent API level ensures that users can benefit from these improvements, while still allowing it to run on older Android versions.

 

I think by that they mean that the app is aware of API 26 and may have to specifically support API 26 functionality (like the new method to request user permissions), but that doesn't mean it can't support earlier versions of Android... am I missing something?

Share this post


Link to post

There are two API levels in manifest (actually, there is another one, but not important) - minSdkVersion and targetSdkVesrion

 

minSdkVersion marks minimum API required by application and it will not run on Android devices with API lower than specified

 

targetSdkVersion marks highest supported API level by application - that means Android will not use any compatibility mode when running on devices with specified or lower API. If you run application on device with higher API level, OS will use compatibility mode for newly introduced API features.

 

Tokyo 10.2.3 (and previous versions) by default had both API levels set to 14. Rio 10.3 changed that and minimum API level is now 19 and target is 26.  That means devices with Android version lover that 19 will no longer be able to run applications built with Rio. 

 

Conclusion: Delphi application compiled with Rio can by default run on any device with API 19 or higher.

  • Like 6

Share this post


Link to post
2 minutes ago, Cristian Peța said:

@Dalija Prasnikar in the "Platform Status" says that it's Android 5 (API 21)

http://docwiki.embarcadero.com/PlatformStatus/en/Main_Page

Documentation is wrong. Actually, it is not... long story...

 

Default value in Rio manifest is 19, but minimal supported version as in "tested with" is 21.  This is form of API level deprecation on Embarcadero side. Applications should run on API 19 (and lower, you have to manually edit manifest to support those), but if there are issues (and those issues are caused by API level lower than 21) Embarcadero can decide not to fix those issues. 

Share this post


Link to post
8 hours ago, Markus Kinzler said:

Google askes for a minimal android version SDK 26 to get into store. EMBT rised the requested version accordingly.

That's the *target* version, not *mininum*. They are quite different things. Delphi 10.3 Rio also raised the minimum (i.e. minSdkVersion value) to 19, which excludes devices that have lower than Android 4.4 (Kitkat), hence the warning from Google Play. Having said that, Google claim that less than 2.5% of devices are on lower than 4.4 anyway.

 

EDIT: weird - for some reason I could not see other replies before I sent this. Worse: I can't seem to delete this reply?

Edited by Dave Nottage

Share this post


Link to post
32 minutes ago, stevehodges60 said:

How do you change the the minSdkVersion on RIO 3 3 with the file path??

You can change it in AndroidManifest.Template.xml, i.e. replace %minSdkVersion% with whatever value you think should be the minimum. As per the previous replies, making this value higher will exclude as many users that have a lower version.

Share this post


Link to post

Thanks, Dave.  You are the first person to give me some kind of helpful advice for this problem, and I appreciate that greatly!

 

I modified AndroidManifest.Template.xml minSdkVersion to 12, and minTargetVersion to 21.

At least I get a different error message now: "Install Parse Failed No Certificates".  I don't know what that means.  (Previous instals failed with Install Failed Older SDK).

 

Is this going to happen to all devices with future releases of Delphi, so we have to keep an old version of Delphi around so we can still service clients with older machines?

And about how often will we have to do this?  Every 3 years?  Or every so often do we have to tell people to go out and buy new machines?  Is there any way of getting

some warning of this happening (instead of finding out a week before the Department goes chasing Bilbies in Western Queensland, and the latest version of their

tracking software suddenly refuses to load onto their tablets!  Ouch!)

Share this post


Link to post
4 minutes ago, Chester Wilson said:

You are the first person to give me some kind of helpful advice for this problem, and I appreciate that greatly!

You're welcome!

4 minutes ago, Chester Wilson said:

At least I get a different error message now: "Install Parse Failed No Certificates".  I don't know what that means

I'm pretty sure that means that there's an existing app on the device where the certificate does not match the one of the app replacing it. This can be caused by using a new version of Delphi (or one from a different machine) to deploy the app, because the debug.keystore file in the %APPDATA%\Embarcadero\BDS\xx.x folder (where xx.x is 20.0, for Delphi 10.3) is different. One trick to fixing this is to use the debug.keystore file from the previous version, or just delete the app from the device before redeploying.

9 minutes ago, Chester Wilson said:

Is this going to happen to all devices with future releases of Delphi, so we have to keep an old version of Delphi around so we can still service clients with older machines?

Are you referring to the minSdkVersion issue? It'll happen whenever they decide to change the minimum supported version. The Android OS does not help in this regard when the device spits out a cryptic error message instead of saying "the minSdkVersion value is too high for this device"

13 minutes ago, Chester Wilson said:

Or every so often do we have to tell people to go out and buy new machines?

Google themselves already encourage people to upgrade their devices, because supporting a growing number of older versions is time consuming and costly.

  • Thanks 1

Share this post


Link to post

That was very helpful, thank you Dave.  I will now have to get a few earlier versions of Delphi and set them up on a spare machine

to work out which version I need so I can continue to service a small number of ancient (like me!) devices.

All the best!

Chester.

Share this post


Link to post
24 minutes ago, Chester Wilson said:

which version I need so I can continue to service a small number of ancient (like me!) devices

For what it's worth, I am involved in projects where we're supporting Android 4.4.4 on relatively "ancient" devices. 

 

I've been given permission to talk about the 10.4 beta (Disclaimer: As always, things may or may not change), so I can tell you that so far everything works on those devices using 10.4. The changes we needed to make were the minSdkVersion (set to 19) and NDK (note: not SDK) settings to target Android-21 (for version 5, but seems to work for 4.4.4).

 

 

Share this post


Link to post

Dave, you are F@#$%^ wonderful!

I have spend the last couple of days finding out which things no longer work in later Delphis, and which things in modern Delphis no longer work in ancient androids.

It has been a humbling experience, giving me incredible insight into the marketing behind android!

From a severe lesson in understanding of why you would never dream of supporting old versions of android,

you give me hope that in the future (10.4 style) things may still be possible!  Many thanks!

If I ever meet you, I owe you a beer!

Chester.

  • Like 2

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×