I have an application live in Google Play for more than a year and recently a user reported that he has a Sony Tablet S and Google Play shows him that my app is not compatible with this device.
I read through many threads in stackoverflow regarding incompatible issues, and as far as I could understand it usually happens (based on my research on various stackoverflow threads) for one of the following 4 reasons
Size of the application is large (larger than some limit specified on the device).
Due to the supported screen sizes specified in the manifest
Google play filters out app based on some implied features for the permissions requested in the app.
Filtered based on min sdk specified in the manifest
As far as I know , none of the above should be applicable for my app because
Size of the app is less than 1mb
I have not specified any supported screen sizes in the manifest
I have only requested 3 permissions in the manifest (INTERNET, ACCESS_NETWORK_STATE, WRITE_EXTERNAL_STORAGE) and based on android documentation these permissions don't seem to have any implied user-features. (I could be wrong here). I wonder if there was a need to explicitly mention all of these permissions as optional, but couldn't find any way to do that since there are no implied user-features for these.
Min sdk is is 8, which is lower than the one supported by Sony Tablet S (API Level 15 I believe). I have not specified any max sdk version.
Here is the section from my manifest which has permissions etc.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-sdk android:minSdkVersion="8" />
I'm at a loss as to what might be prompting Google Play to show my app as incompatible on Sony Tablet S for the user. When I go to google developer console and look at the supported devices, Sony Tablet S is listed as supported, but apparently for the user it appears as incompatible.
Any leads to narrow down this issue is highly appreciated. FYI. App works fine on many other tablets - Kindle Fire, Galaxy Tab, Asus etc.
You may want to try explicitly declaring that you app supports xlarge screen sizes:
<supports-screens android:xlargeScreens="true">
By default this is not always set to true.
No, it doesn't mean that you don't support other sizes. By default your app will support small and normal screens but it's best to set it explicitly for large and xlarge screens since it can vary depending on device. See here for more info:
http://developer.android.com/guide/topics/manifest/supports-screens-element.html
Related
We have developed an application with very few device limitations. I fact, it should be only limited by Android version (requires Android 2.2.x, API level 8).
However, I just got my hands on a Samsung Galaxy Note 10.1 GT-N8020. I can't find our app on the Play Store on that device. When I look at the list of supported devices in the Play Store Developer Console, there is no such device GT-N8020.
There are, however, dozens of other Galaxy Notes 10.1. None of them shows a GT-N** model name.
Does anyone have an idea what's wrong with the GT-N8020?
On a side-note: Google states that, if a device is not listed, you should contact them. Following the link there is just a FAQ and absolutely no way to get in touch with a real person whatsoever:
https://support.google.com/googleplay/android-developer/answer/136601
I have the same problem.
The 'ironic' (or panic) thing is I have 2 very similar app on the store (basically one is the light version of the other).
The lighter is available and says 1582 compatible devices, the bigger is not visible with 1487 devices. BUT ALSO IN 1582 DEVICE LIST THERE IS NO GALAXY GT-N8020!!!!
The only difference in the manifest are the permissions for the GPS
<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" />
everithing else is identical (also 80% of the code).
Can't really understand!
Ok, in fact my previous "answer" was not a real one, rather the extention of the qustion.
Here are my answer at least to my probleblem with Note II:
My Project's targetSDKversion and maxSDKversion was set to API level 14, so of course it was not listed on Note II with API level 16.
It is a terrible mistake on my side, but maybe worth for checking, as it is not unpossible to change the values unintended....
The maxSDKversion alone limits the devices, so even if targetSDKversion is set to 17, but the maxSDKversion set to 14, the app is not listed on devices with API level 15 and higher.
Furthermore, using this value is not recommended regarding the developer documentation.
Of course this is not an explanation why the devices in question does not appear as a device in developer console...
Unfortunately the same with GT-N7105 Galaxy Note II...
It is not at all listed as a device ....
I just wondering, how it is possible to download any application (except our own....) if the device is not exist?
This is very strange and as Stefano said, panic.....
I uploaded my application on Google Play Store. I could search for it and install on almost every device. Except on Samsung Galaxy Y Duos s6102
After searching for a solution, few things i found out:
Problem with uses-features in the Manifest:
I am having only 2 features in the Manifest
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
But the device has a Camera, so this might not be the case.
Problem with support-screens in the Manifest:
I haven't added any such tag in my Manifest, assuming that by default all Screens are supported. And confirmed that from the developer's console
I found out that QVGA Screens are not supported by default, you have to explicitly declare them.
But QVGA screens come under Small Screen as stated here:
Then thought density might be the reason, but from the docs:
For applications that support Android 1.6 (API level 4) and higher, this is "true" by default and you should not set it "false"
So, are there any other reasons for this Issue? Or should i try adding them all to my Manifest file.
In the link provided to the device specifications, it states that the camera is 'fixed focus'.
When you add a uses-feature entry in your manifest, that feature is required and will block devices on Google Play which don't have it. As long as it doesn't break anything or make features non-functional like a barcode scanner in the case of 'autofocus', adding required=false should be fine.
My application is set to API level 8+ and supported screens Small to xlarge. Most people can download it from Google Play without issue, but I have had reports that some cannot, but I cannot figure out why. Apparently, a Nexus 7 running 4.1.1 is unsupported, as is T-Mobile Comet running 2.2.
I've read the developer checklist and don't see what else could be causing their devices to have issue. Could one of the required permissions cause them not to be able to download the app? Or am I missing something else?
Here's the details from my Google Play developer page:
versionCode: 2
versionName: 1.0.5
Size: 10.0M
Localized to: default
Permissions: com.google.android.c2dm.permission.RECEIVE, android.permission.INTERNET, android.permission.GET_ACCOUNTS, android.permission.WAKE_LOCK, android.permission.VIBRATE, android.permission.INTERNET, android.permission.READ_EXTERNAL_STORAGE, android.permission.WRITE_EXTERNAL_STORAGE, android.permission.CAMERA, com.android.vending.BILLING, android.permission.ACCESS_NETWORK_STATE, com.streamified.streamified.permission.C2D_MESSAGE
Features: android.hardware.camera, android.hardware.camera.autofocus, android.hardware.touchscreen
No main expansion file
No expansion patch file
« less
API level: 8-16+
Supported screens: small-xlarge
OpenGL textures: all
Your question states that you need the autofocus feature, as shown by this:
android.hardware.camera.autofocus
The GSMArena page for the camera doesn't list autufocus as one of the features, so that's probably why it's unsupported. Even the Nexus 7 doesn't seem to list autofocus as a feature on the Google, Asus and GSMArena pages, and I can't see it on mine either, so it should be the same reason.
If autofocus is not a complete requirement for you, use the following in your manifest to make it optional.
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
I've developed an android application whose GUI is designed for small screens. When run on a tablet it looks rubbish because I've assumed 320dp width to make my life easier - I don't have the resources to test on tablets.
People using android 3.2 were able to zoom into the app so it looks like it's running on a big phone. But after my last update that option is not available, and I don't understand why.
The change is related to the Manifest file. Here's what my orignal app had (there's nothing to do with screens in my Manifest):
<uses-sdk android:minSdkVersion="7" />
After updating my development environment, I got a warning saying I should specify a target sdk, so I did this:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="10" />
Using a painfully slow Android 3.2 emulator I have confirmed that this has caused the problem. I thought any target SDK below 11 wouldn't affect the zooming option?
Using the following also removed the zoom option:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="9" />
But this didn't:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="8" />
So setting my target SDK to 8 is a workaround, but it's also wrong because I use version 2.3.3 for testing.
Am I missing something here? Is there a better solution?
Thanks.
Try setting targetSdkVersion to 9 (or 10) and adding <supports-screens android:xlargeScreens="false" /> to your AndroidManifest.xml (docs for supports-screens). This tells the system that your application does not explicitly support xlarge screens and that it should offer the compatibility zoom/scale option for users that use the app on xlarge devices. Note that this will not cause the app to be hidden from xlarge devices on the Play Store (supports-screens only causes Play Store to filter apps from smaller screens if they are designed to run on larger screens, not the other way around).
The reason I think this is happening once you set targetSdkVersion to 9+ is because supports-screens xlargeScreens was added in API Level 9 and (I believe) defaults to true (for API Level 9+ at least). Once xlargeScreens is true the system will disable the compatibility zoom/scale mode.
Supporting docs (where it does say this but is fairly convoluted):
http://developer.android.com/guide/practices/screen-compat-mode.html
http://android-developers.blogspot.com/2011/07/new-mode-for-apps-on-large-screens.html
http://developer.android.com/guide/topics/manifest/supports-screens-element.html
The app is Flash Cards Max on the Android market. I recently updated my app with a 1.6 only feature. However, I still want the app to work with those that have Android 1.5. I built it using Android 1.6 in Eclipse and I have the correct strings in the Android manifest file.
<uses-sdk
android:minSdkVersion="3"
android:targetSdkVersion="4"
/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Everything works in the emulator fine on 1.5 just want to be sure it shows up on the Android Market for those with 1.5. It does not. This is a market filtering question.
Please see this thread for info on what I changed and how I went about it thanks to several of your suggestions.
tl;dr
Why doesn't my app show up for 1.5 users?
Answer by a helpful user on Reddit.
"I had the same problem, solution was <supports-screens/>
Why?
Because
android:anyDensity
Indicates whether the application can accommodate any screen density. Older applications (pre API Level 4) are assumed unable to accomodate all densities and this is "false" by default. Applications using API Level 4 or higher are assumed able to and this is "true" by default. You can explicitly supply your abilities here."