Yaron 53 Posted December 3, 2018 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
Markus Kinzler 174 Posted December 3, 2018 Google askes for a minimal android version SDK 26 to get into store. EMBT rised the requested version accordingly. Share this post Link to post
Yaron 53 Posted December 3, 2018 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
Markus Kinzler 174 Posted December 3, 2018 The minimal target sdk version as requested means that older version will refuse to run that app. Share this post Link to post
Dalija Prasnikar 1396 Posted December 3, 2018 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. 6 Share this post Link to post
Yaron 53 Posted December 3, 2018 @Dalija Prasnikar Thank you for the detailed information. Share this post Link to post
Cristian Peța 103 Posted December 3, 2018 @Dalija Prasnikar in the "Platform Status" says that it's Android 5 (API 21) http://docwiki.embarcadero.com/PlatformStatus/en/Main_Page 1 Share this post Link to post
Dalija Prasnikar 1396 Posted December 3, 2018 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
Dalija Prasnikar 1396 Posted December 3, 2018 If anyone is interested to know current API distribution Google maintains Distribution dashboard (updated weekly) at https://developer.android.com/about/dashboards/ Share this post Link to post
Dave Nottage 557 Posted December 3, 2018 (edited) 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 December 3, 2018 by Dave Nottage Share this post Link to post
stevehodges60 0 Posted December 13, 2019 How do you change the the minSdkVersion on RIO 3 3 with the file path?? Share this post Link to post
Dave Nottage 557 Posted December 13, 2019 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
Chester Wilson 5 Posted May 24, 2020 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
Dave Nottage 557 Posted May 24, 2020 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. 1 Share this post Link to post
Chester Wilson 5 Posted May 24, 2020 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
Dave Nottage 557 Posted May 24, 2020 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
Chester Wilson 5 Posted May 26, 2020 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. 2 Share this post Link to post