Device compatibility problems in Google Play - android

I'm uploading an App to Google Play and there is about 2321 devices not compatibles with it. In order to test it I have setted all uses permissions to false (except openGl, for Maps V2). I'm using a lot of permissions but, for example, as far as I know Sony ST21 (http://www.gsmarena.com/sony_xperia_tipo-4718.php) has all my required features.
This are my required permissions (from Google Play):
android.hardware.CAMERA
android.hardware.camera.AUTOFOCUS
android.hardware.LOCATION
android.hardware.location.GPS
android.hardware.location.NETWORK
android.hardware.TOUCHSCREEN
And this are my permission inside Manifest:
<permission android:name="com.zonaapp.flamencomovil.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.zonaapp.flamencomovil.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Whats wrong with my Manifest Configuration?

Check your min and max SDK version, those 2321 devices not compatibles with it may goes out of of your min & max sdk version.
So, provide min SDK version as below as and instead of max SDK or target SDK version provide latest android version.
Then it will cover lots of devices.

This has nothing to do with your permissions, you need to check the value of minSdkVersion in your manifest file. If it is very high, then many devices running older versions of Android won't support your app.

Related

Doesn't support framework version: between 21 and 31 for Android app

Today I noticed on PlayStore console that some of Google Devices like Google Pixel 4 XL, Pixel 4a etc are not supported for my app. (My app is Cordova based)
The message for not supporting the device is Doesn't support framework version: between 21 and 31
I am not sure what this message mean. I am able to run my app app on same device emulator (Pixel 4 XL Android 12).
Here is the image for better understanding.
Here is my minSDK, targetSDK, maxSDK etc
minSdkVersion 21
targetSdkVersion 31
maxSdkVersion 31
compileSdkVersion 31
Manifest permission and features
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" android:required="false" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.hardware.location" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
How to fix this issue?
maxSDKVersion was the issue.
My build.gradle has the maxSDKVersion = 31. Because of that PlayStore was not pushing my app to users with Android 12 (SDK version 32). So I just removed the maxSdkVersion 31 from build.gradle and it worked.
What was the confusion?
I did not realize that Android 12 has two SDK version.
31 (Android 12)
32 (Android 12L)
Also in my opinion the error message on PlayStore Device Catalog was vague.
Google Play Support Team:
I contacted Google Play Store support team as well. They were able to locate the issue. They took 48 hours to respond (They usually take 24-72 hours). So it is another a good option for Android developers to reach out to Google Play Support team for PlayStore issues.
How PlayStore shows your app to users?
AFAIK: Google PlayStore filters application based on AndroidManifest.xml and build.gradle
So if your app is not compatible or visible to some devices. Then you should start looking into your AndroidManifest and build.gradle file.
For example if you defined android.hardware.camera.front as then will filter out your application for devices that do not have front camera.

How can I Fix incompatibility between device and application on Google Play?

I've andorid appplication that has minSdkVersion 15 and targetSdkVersion 28 but when publish on Google Play it gives message "Your Device isn't compatible with this version" on Android 4.4.2 which shall have API 19 – 20 according to Android version history. Now what I do need to know is how to analyze the reason and how to approach to fix this situation.
My application works fine on debug and release editions on that Android 4.4.2 device
Edit:
I've found the FEATURE_CONNECTION_SERVICE is available only on API 21, How do I find the exact feature that is not work, is it a package I use inside my app or a permission tag, my manifest has theses permissions
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PROFILE" />
READ_PHONE_NUMBERS is only available in API 26.
You can find all the API levels here: https://developer.android.com/reference/android/Manifest.permission

Why google play showing support for just 40 to 45 percent devices

I have searched through the google but could not find any reason why google play showing support for only 45% devices it support to 90 to 92 percent devices on the play store
here my manifest permissions
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission
android:name="android.permission.READ_PROFILE"
android:required="false" />
<uses-permission
android:name="android.permission.READ_CONTACTS"
android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.android.vending.BILLING" />
but google play showing some extra permissions am also wondering why play store showing this
Also i have a question that can google play filtering apps on camera flash or flash light availability?
any help will be appreciated thanks
You likely have a library that uses those other features. In particular, it looks as though you have a library that uses the camera and thus adds the camera, microphone, flash, and autofocus features.
You can easily identify the library that is adding these features by looking at the manifest merger report generated by Gradle. This is located at app/build/outputs/logs. The manifest merger report text file there will list out every manifest element pulled in from different manifest files and which file they came from.
If you truly do not require those features, you can declare your own <uses-feature> elements with the android:required attribute set to false.
Please try to add the following to your manifest, please change the required in order of your functionalities:
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.flash"
android:required="false" />
<uses-feature android:name="android.hardware.microphone"
android:required="false" />
<uses-feature android:name="android.hardware.screen.portrait"
android:required="false" />
Also, why is your api lvl 16+? If you switch to 15+ you will have a lot of more devices.

Android wear app, No eligible devices for app install

I developed a wearable app, worked fine on my devices (Nexus 5, Samsung Gear Live and Moto 360) and put on playstore. However, when I browse the app on PlayStore, it said "No eligible devices for app install".
These are the permissions:
Phone:
<uses-feature
android:name="android.hardware.type.watch"
android:required="false" />
<uses-permission android:name="android.permission.BODY_SENSORS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" />
Wear:
<uses-feature
android:name="android.hardware.type.watch"
android:required="false" />
<uses-permission android:name="android.permission.BODY_SENSORS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
I already tried this:
<uses-feature
android:name="android.hardware.type.watch"
android:required="true" />
For both apps, still no luck. How to solve this problem? Thanks.
Edit: if you want to try the app, here is the link
https://play.google.com/store/apps/details?id=com.sleepalert.heartrate
Edit 2:
For wear, I used this pair
minSdkVersion 20
targetSdkVersion 21
For mobile, I used this (those are defaults when I generated my project)
minSdkVersion 17
targetSdkVersion 21
Edit 3: after I remove the GET_TASKS permission as suggested, the app can be installed on my device running LolliPop 5, but not on my friend LolliPop 5.1, which is annoying since the newer one is supposed to be backwards compatible. Then if I change targetSdk to 22, it works on both. So in all, it's fine now. Hope helpful to somebody facing this crazy mess.
it seems that my phone is also not compatible. i would suggest you try to check if the app is avaliable in every country or has any restriction (being still in beta we should have acces to it ,thought), and check if all the permissions are necessary , could be that one of them , like GET_TASKS, wich is deprecated ( developer.android.com/reference/android/… ) could be blocking.

Permissions not supporting device

I have published an app to Google Play in alpha, during testing I discovered some devices required an additional permissions for ACCESS_WIFI_STATE so I added it and all was well.
Upon adding it to Google Play and attemping to download it on the device which required the permission (in this case it was a Galaxy Tab 2) I get the following error:
Previously active APKs supported more devices than those in the draft configuration. Some devices will not receive upgrades.
Devices currently running version 1 are no longer supported by the current configuration. Such devices will not receive upgrades.
API levels in range 14+ and
Release track containing any of [ALPHA] and
Screen layouts containing any of [small, normal, large, xlarge] and
Native platforms containing any of [armeabi, armeabi-v7a, mips, x86] and
Features containing all of [android.hardware.BLUETOOTH, android.hardware.CAMERA, android.hardware.camera.AUTOFOCUS, android.hardware.screen.PORTRAIT, android.hardware.TOUCHSCREEN] but excluding any of [android.hardware.WIFI]
My Manifest is like so:
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.android.vending.BILLING"/>
Could anyone explain why this error is appearing? The only device I see it on is the exact one I needed to add the given permission to.
Old Manifest was as so:
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.android.vending.BILLING"/>
From the uses-permission documentation:
In some cases, the permissions that you request through
can affect how your application is filtered by
Google Play.
If you request a hardware-related permission - CAMERA, for example -
Google Play assumes that your application requires the underlying
hardware feature and filters the application from devices that do not
offer it.
To control filtering, always explicitly declare hardware features in
<uses-feature> elements, rather than relying on Google Play to
"discover" the requirements in <uses-permission> elements. Then, if
you want to disable filtering for a particular feature, you can add a
android:required="false" attribute to the declaration.
For a list of permissions that imply hardware features, see the
documentation for the <uses-feature> element.
So you can add
<uses-feature android:name="android.hardware.wifi" android:required="false" />
like described here.

Categories

Resources