android:maxSDKVersion - couldn't upload apk to alpha - android

I've faced the problem uploading app to Play Store. The old "19" version was available for API versions 10 and above. New "20" version specified maxSDKVersion=22 (not higher Android 5.1).
An error message, when trying to upload "20", says:
"it is forbidden that a device upgrading from API levels in the range
10-22 to API levels in the range of 23+ should downgrade from version
20 to version 19, which could happen if...".
This situation clearly specified in documentation:
...future versions of Android (beyond Android 2.0.1) will no longer
check or enforce the maxSdkVersion attribute during installation or
re-validation. Google play will continue to use the attribute as a
filter, however, presenting users with applications available for
download.
Our application not working properly on Android 6, so we should somehow to prevent installs on those devices.

So, there is an answer from Google support:
...
The error message is stating that if a user updates the Android
version on their device, the configuration of your APKs would cause
them to become ineligible for the version they currently have.
To resolve this issue, always make sure the APK that supports the
higher API level always has a higher version code. For example, if an
APK with API levels 14 - 17 was version 3 then an APK with API level
18 would have to have version 4.
In other cases, you can simply remove the max SDK declaration from
your app’s manifest.
...
And there is no way to add maxSDKVersion limitation in existing app.

Related

Is there is any chance to upload without change targetsdk in Play console

I'm facing an issue while uploading to the play store.
This issue
Your app currently targets API level 30 and must target at least API level 31 to ensure it is built on the latest APIs optimized for security and performance. Change your app's target API level to at least 31".
If Change the target SDK version some of the features are not working.
Is there any solution to upload to the play console without changing the version of the target SDK.

Target API level requirement from late 2018

I don't know if this is a correct place where ask the following:
I have read on the google play developer console that :
In the second half of 2018, Play will require that new apps and app
updates target a recent Android API level. This will be required for
new apps in August 2018, and for updates to existing apps in November
2018. This is to ensure apps are built on the latest APIs optimized for security and performance
and
Google Play will require that new apps target at least Android 8.0
(API level 26) from August 1, 2018, and that app updates target
Android 8.0 from November 1, 2018.
What does this mean? Does this mean that I will not be able to develop applications compatible with versions smaller than 8.0?
If so, how can bug fixings / new features be introduced within existing apps with versions other than 8.0?
This would result in a "death" of all devices with version other than 8.0 ... Or is Google thinking about releasing android oreo for all devices on the market?
*************** EDIT ***************
The doubt arises from this message on my account of google developer console:
The translation is :
Starting from August 2018, the new apps must minimum target Android 8.0.
Starting in November 2018, app updates must target version 8.0
The minumum target is :
An integer designating the minimum API Level required for the
application to run.The Android system will prevent the user from installing the application if the system's API Level is lower than the value specified in this attribute.
Bad interpretation of the message ?
What does this mean?
What it means is, you should ensure you have set targetSdkVersion to 26 in your build.gradle and your application is compatible with Android O behavior changes.
Does this mean that I will not be able to develop application compatible with versions smaller than 8.0?
You can set minSdkVersion lower than 8.0.
This would result in a "death" of all devices with version other than
8.0 ... Or is Google thinking about releasing android oreo for all devices on the market?
The distribution rate for Android O is still around 6%, which means older versions still constitute around 94%. They cannot implement drastic changes for this reason. Older OS version will be still supported until the adaptation for Android O changes drastically. It could be challenging because it involves adaptation from huge number of manufacturers.
If you are uploading your app as your first release, then you must ensure you are compatible with Android O.
For updates to existing app, the deadline is November.
onsole, Android Studio, and Firebase. Start survey
Meet Google Play's target API level requirement
Bad interpretation of the message ?
Actual statement in English from site is:
Google Play will require that new apps target at least Android 8.0
(API level 26) from August 1, 2018, and that app updates target
Android 8.0 from November 1, 2018.
You should first understand the difference between TARGET API and MINIMUM
API Levels.
As a reminder, target API level is different from minimum API level. As the name implies, minimum API level is used to declare the lowest version of Android an app supports. The target API level is technically defined as the version of the operating system an app was tested to work with; but in more practical terms, it's used to define a set of behaviors an app expects from the operating system.
Please follow this link to view the complete source of this information:
https://www.androidpolice.com/2017/12/19/play-store-require-new-updated-apps-target-recent-api-levels-distribute-native-apps-64-bit-support/
Just update your compileSdkVersion and targetSdkVersion to 26 (or better to 28).
And read about minimum api version and target api version. It`s important to understand.
https://developer.android.com/guide/topics/manifest/uses-sdk-element
What does this mean?
its means that you need to set target sdk Android 8.0 (26 API)
Does this mean that I will not be able to develop applications compatible with versions smaller than 8.0?
No it means that the end November your app must compatible with Android O (26 API)
This would result in a "death" of all devices with version other than 8.0
NO
how can bug fixings / new features be introduced within existing apps with versions other than 8.0?
it will support all features introduced within existing apps with versions other than 8.0
is Google thinking about releasing android oreo for all devices on the market?
Nobody knows the future

Warning : Deactivation of this APK will result in your app being available for new installs on fewer types of devices

I have one version of app uploaded on Playstore with different architecture and now I want to upload my app with new version but getting.
Error:
You can't rollout this release because it doesn't allow any existing users to upgrade to the newly added APKs.
And also getting some warning error like
Device support removed
Warning
Deactivation of this APK will result in your app being available for
new installs on fewer types of devices.
Tip
If this is an unintended change, then retain this APK in the new
release or ensure that your new APKs support all currently supported
devices.
Right now,
Minimum API level : 16
Maximum API level : 26
and Earlier, it was
Minimum API level : 11
Maximum API level : 21
Anyone have any idea how to resolve this error ?
It is because you increased minimum api level from 11 to 16, so some of your potential users with android 16- can not update their application.
Update
I cannot decrease the api level due to some library used Is there any solution to resolve this error
To answer your question, you can upload multiple apk in play store. One with old libraries that support minSdk 11 and one with new libraries and possibly new functionalities that supports minSdk 16. You can find the required guides here

Does a max need to be set in android manifest?

My ionic app is targeted 24, min 16, no max in android manifest.
When I run in firebase on devices set to 24 or 25 I get fatal crashes.
Does my app need a max to avoid crashes? Or does that limit it being supported on newer API devices?
Also in Android studio when you first try to set a project and pick a target it tells you that __% of people in the play store use that target so 24 is less than 1%. So if my target is 24 does that mean only 1% of the store will be able to use my app?
Here is my API 23 app crash on a 25 device:
API 24 app crash on a 24 device:
I see you are a little bit confused, let's first clear what each of them means to Android.
android:targetSdkVersion
With this you are telling Android which SDK you are targeting. What is important about this is that it tells the system that SDK level matchs this attribute, the system doesn't need to enable any behaviour to maintain compatibility.
Your app is still able to run on older versions (down to minSdkVersion).
android:minSdkVersion
As the attribute name suggests this is the minium SDK version required in order to run the app, if the device which is trying to install the app has a lower sdk version the system will block the process.
What is important to note is that if you raise the minSdkVersion in an update, all the user which have already installed the app and no loger match this attribute will be able no longer to use the app
android:maxSdkVersion
Again, the attribute name says it all. This is the maxium Sdk version a device can have in order to run the app.
Notice this from the docs:
An application declaring maxSdkVersion="5" in its manifest is
published on Google Play. A user whose device is running Android 1.6
(API Level 4) downloads and installs the app. After a few weeks, the
user receives an over-the-air system update to Android 2.0 (API Level
5). After the update is installed, the system checks the application's
maxSdkVersion and successfully re-validates it. The application
functions as normal. However, some time later, the device receives
another system update, this time to Android 2.0.1 (API Level 6). After
the update, the system can no longer re-validate the application
because the system's own API Level (6) is now higher than the maximum
supported by the application (5). The system prevents the application
from being visible to the user, in effect removing it from the device.
That's it. Check also the DOCS here
Also in Android studio when you first try to set a project and pick a
target it tells you that __% of people in the play store use that
target so 24 is less than 1%. So if my target is 24 does that mean
only 1% of the store will be able to use my app?
Actually not, you have to consider the minium and max in order to find how many % of market will be able to use your app. That's just saying how many people (in %) have that SDK Version.
About the crashes
I am quite sure that the problem is not related to the SDKVersion, maybe you should post some log in order to give a more detailed answer to that.
Hope it helped you :)

Android TV apk: It is forbidden to downgrade devices which previously used M permissions

I developed an app a while ago for phones and tablets. A few weeks ago i also create a different APK for Android TV's and uploaded it as beta. The TV app was rejected for some reasons (not relevant here).
A few days ago I created a single APK for both phone and TV, and got the following error while trying to upload it in google play:
- It is forbidden to downgrade devices which previously used M permissions (target SDK 23 and above) to APKs which use old style permissions (target SDK 22 and below). This occurs in the change from version 33 (target SDK 23) to version 35 (target SDK 22).
- A device with API levels in range 21+ is eligible to receive version 13, which is optimized for higher API levels, but actually receives version 15 because it has a higher version code. This would occur when
Release track containing any of [BETA] and Screen layouts containing any of [small, normal, large, xlarge] and Features containing all of [android.hardware.MICROPHONE, android.hardware.screen.LANDSCAPE, android.hardware.screen.PORTRAIT, android.software.LEANBACK].
- A device upgrading from API levels in range 9-20 to API levels in range 21+ would become eligible to receive version 33, which is optimized for higher API levels, but would actually receive version 35 because it has a higher version code. This would occur when
Release track containing any of [BETA] and Screen layouts containing any of [small, normal, large, xlarge] and
Features containing all of [android.hardware.MICROPHONE, android.hardware.screen.LANDSCAPE, android.hardware.screen.PORTRAIT, android.software.LEANBACK].
- Some devices are eligible to run multiple APKs. In such a scenario, the device will receive the APK with the higher version code.
I understood that it was a problem that my tv APK was using targetSDK = 23, while the new APK was using targetSDK = 22.
So now i deactivated the beta APK for TV's, but is still get the following errors:
It is forbidden to downgrade devices which previously used M permissions (target SDK 23 and above) to APKs which use old style permissions (target SDK 22 and below). This occurs in the change from version 33 (target SDK 23) to version 35 (target SDK 22).
Some devices are eligible to run multiple APKs. In such a scenario, the device will receive the APK with the higher version code.
With reference to Requesting Permissions at Run Time:
On all versions of Android, your app needs to declare both the normal and the dangerous permissions it needs in its app manifest. However, the effect of that declaration is different depending on the system version and your app's target SDK level:
You should update your new build if you'll use targetSdkVersion 23:
<uses-sdk android:targetSdkVersion="23" />

Categories

Resources