I have a relative simple App that was already in the Play-Store of Google.
Now I've made an Update of this App.
One Point of this Update was that I include the ZBar-Scanner. The Rest of the changes were minimal and shouldn't have any influence on my problem.
I just put the newest verison of my App in the Play-Store and I get following warning:
"Warning: Active APKs support fewer devices than previously active APKs. Some users will not receive updates."
I've downloaded ZBarAndroidSDK-0.2.zip from sourceforge.net (http://sourceforge.net/projects/zbar/files/AndroidSDK/) and import it to my project as it is explained in the README-File.
I tested my App local on my HTC Wildfire S (->Version 2.3.5), on Samsung Galaxy 3 (GT-I5800 -> Version 2.2) and on my Galaxy Nexus (-> Version 4.2). There was never a Problem. Everything worked.
I also tested the exported APK and had no Problems.
Now I add this APK to the Play-Store and updated my App and I get the warning for the tested devices. Neither my HTC Wildfire, nor my Samsung Galaxy 3 can update the new version.
Can anybody help me and explain me whats the Problem?
Thanks a lot!!!
EDIT:
My Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.myproject"
android:versionCode="5"
android:versionName="2.0"
android:installLocation="preferExternal"
>
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<application
android:uiOptions="splitActionBarWhenNarrow"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
>
<!-- enable the search dialog to send searches to SearchableActivity throughout the application -->
<meta-data
android:name="android.app.default_searchable"
android:value=".SearchableActivity" />
<activity
android:label="#string/app_name"
android:name=".MainActivity"
android:screenOrientation="portrait"
android:theme="#style/Theme.NoBackground">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="#string/app_name"
android:screenOrientation="landscape"
android:name=".zbar.ZBarScannerActivity">
</activity>
</application>
And the Manifest of ZBar:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.sourceforge.zbar.android.CameraTest"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application android:label="#string/app_name" >
<activity android:name="CameraTestActivity"
android:label="#string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
First of all, any change in the devices used must be a result of the manifest. That is the only thing that the Android market (Google Play) uses to determine what devices an app can go on. As you showed, the one difference was that you had a requirement to autofocus. If you change this line to the following, it should work.
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false">
Essentially, this will allow you to use that feature, but not make it required. This should allow full compatibility with all previous devices. For more information, see this answer.
I should also note that I saw the camera wasn't required by your main app, but is required by zbar. This could also make a difference.
I had this problem with my application (with Zbar scanner) on tablet Zenithink C93 (http://www.zenithink.com/Eproducts_C93.php). I needed create application compatible with Zenithink devices.
I published app in Play-Store of Google. When I tried install application on Zenithink C93 I got error: "This item is not compatible with your device"
My manifest had this line:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false">
But it didn't help me.
Also I had this support-screens tag:
<supports-screens
android:smallScreens="false" android:normalScreens="false"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
Strangely, but after a long search solution I completely removed support-screens tag and put android:required="false" for <uses-feature android:name="android.hardware.camera"/> application became compatible with Zenithink device.
Now my Manifest looks like this:
...
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<application...
This is not a good solution, because application will be compatible with almost all devices, but maybe it will help someone.
Related
I've just publish my app to the Google Play store for beta testing, but I can't install it on my Android tablet. The app will not install on my Samsung Galaxy Tab 10 tablet Model number GT-P5113 Android version 4.2.2, but it installs on my Samsung S5 mobile phone with no problem.
When I try to install the app from the Google Play Store it says that its designed for phones and the message is "Your device isn't compatible with this version'. I've checked the 'DEVICE COMPATIBILITY' section and my tablet version is checked.
I have this in my AndroidManifest.xml file:
<supports-screens android:anyDensity="true" android:largeScreens="true"
android:normalScreens="true" android:resizeable="true"
android:smallScreens="true" android:xlargeScreens="true" />
Can someone tell me how to make my app compatible with Android and iOS tablets? Thanks in advance
UPDATE
Here's the complete AndroidManifest.xml.
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="6" android:versionName="0.0.0.0" package="com.myapp.app" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<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="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application android:hardwareAccelerated="true" android:icon="#drawable/icon" android:label="#string/app_name">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="#string/activity_name" android:launchMode="singleTop" android:name="RsgApp" android:screenOrientation="portrait" android:theme="#android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="#string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version" />
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:name="com.google.android.gms.ads.AdActivity" android:theme="#android:style/Theme.Translucent" />
</application>
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
It is probably your min-sdk attribute. If it is set to 21 (android 5.0), then it will only work on devices with Android v5.0. Your min-sdk needs to be set to API level 17. It could also be an issue with compatibility libraries (if you used widgets only available in later versions of android) and/or themes. This page has more information about the tag, and a little bit about Google Play Filtering.
It's the camera auto focus feature:
uses-feature android:name="android.hardware.camera.autofocus"
I have the same issue with Samsung SM-T110 (Tab 3 Lite);
it does not have camera autofocus so gets excluded from compatible devices.
Still trying to figure out how to remove this from the auto-generated manifest file tho, but hope this sets you in the right direction...
When viewing my app in Google Play on my ASUS Transformer tablet I see the following message
Your device isn't compatible with this version
Here is my manifest file.
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true"
android:versionCode="3"
android:versionName="1.0.2"
android:windowSoftInputMode="adjustPan"
package="com.sheffieldlentinepc.sentenceestimator"
xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- Required permission to check licensing. -->
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="18" />
<application
android:hardwareAccelerated="true"
android:icon="#drawable/icon"
android:label="#string/app_name">
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:label="#string/app_name"
android:name="SentenceEstimator"
android:theme="#android:style/Theme.Black.NoTitleBar"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Is there anything in my manifest that would cause this device to be incompatible?
OK I got it! My situation:
Originally a phone only app
re-designed for tablet optimization
I thought marking this permission to required="false" was all I needed since tablets don't have phones. <uses-permission android:name="android.permission.CALL_PHONE"
**android:required="false"** />
My confusion was the <uses-permission/> and <uses-feature/> after reading this over for the 10th time I finally caught it. http://developer.android.com/distribute/googleplay/quality/tablet.html#hardware-requirements
I needed to explicitly add <uses-feature android:name="android.hardware.telephony" android:required="false" /> to my manifest.
upload to to developer console and you should see the number of "supported devices" jump, 541 devices in my case.
Of course if you have features that require phone use you need to handle it appropriately at run-time for devices that don't have phone.
Adding <uses-feature android:name="android.hardware.telephony" android:required="false" /> to the manifest added support for your AsusTransformer TF101G too!
I hope this helps someone else!
I built an app using sencha touch and Cordova 2.7.0. It runs on phones but some tablets (e.g. 10.1" Samsung Galaxy Tab 2 - GT-P5110) are marked as not supported in the play store. The tablet I mentioned runs android 4.0.3 (so api level is ok) but it's even not listed in play store's list of ALL devices.
If I put the app to alpha state, the tablet is able to download and install it, but not at production state.
Screenshots for all resolutions are included, start screen for normal, hdpi, ldpi, mdpi and xhdpi as well. The manifest looks like this:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan"
package="a.b.c" android:versionName="1.1" android:versionCode="15" android:hardwareAccelerated="true">
<supports-screens
android:anyDensity="true"
android:resizeable="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" android:largestWidthLimitDp="2560" android:compatibleWidthLimitDp="2560" android:requiresSmallestWidthDp="240"/>
<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.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<application android:icon="#drawable/icon" android:label="#string/app_name"
android:hardwareAccelerated="true"
android:debuggable="false">
<activity android:name="MyApp" android:label="#string/app_name"
android:theme="#android:style/Theme.Black.NoTitleBar"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="17"/>
Do you have any idea, why the app is not supported for (some) tablets? Thanks a lot, guys.
My first guess would be the minSdkVersion=9. Some tablets were released with androids 2.2 and lower too.
It's not hard to find tablets running android 1.5 like this one.
I am not able to find my app from google play store for HTC explorer and sansung galaxy ace devices, I am supporting small screens as well for the app, still not able to find it on play store
My manifest looks like this:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.demo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
</uses-permission>
<uses-permission
android:name="android.permission.INTERNET"
android:protectionLevel="normal" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.GET_ACCOUNTS" >
</uses-permission>
<uses-permission android:name="android.permission.USE_CREDENTIALS" >
</uses-permission>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" >
</uses-permission>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" >
</uses-permission>
<uses-permission android:name="android.permission.CAMERA">
</uses-permission>
<supports-screens android:largeScreens="false" android:smallScreens="true" android:anyDensity="true" android:normalScreens="true" />
<application
android:icon="#drawable/appicon"
android:label="#string/app_name"
android:debuggable="true">
<service
android:exported="true"
android:name=".account.AuthenticationService" >
<intent-filter >
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="#xml/authenticator" />
</service>
<activity
android:name="abc.com.Screen"
android:screenOrientation="portrait"
android:theme="#android:style/Theme.NoTitleBar" >
<intent-filter >
<action android:name="android.intent.action.MAIN" >
</action>
<category android:name="android.intent.category.LAUNCHER" >
</category>
</intent-filter>
</activity>
</application>
</manifest>
Please tell me if I am doing something wrong here.
I had the same problem. botteaap fix worked.
Add this to manifest
<uses-feature android:name="android.hardware.camera" android:required="false" />
and all worked fine.
it means that the application prefers to use the feature if present on the device, but that it is designed to function without the specified feature,
You likely need to declare camera autofocus as an optional feature (since you are requiring the camera based on the CAMERA permission). I haven't checked but it could be that those cheaper phones do not support auto focus.
For reference: http://developer.android.com/reference/android/hardware/Camera.html and
http://developer.android.com/guide/topics/manifest/uses-feature-element.html (set android:required to false)
There are several steps(pretty long steps) that can help you to verify which devices exactly can download and run your application:
Change or remove any permission in your manifest.
Build application with your release key.
Upload new .apk file to google play dev. console and activate it.
DO NOT PUBLISH it and switch to product details tab.
Check supported devices list via show devices link in Supported Devices section right under countries list. Here you can find list of all "google-known" android devices that can run your application with current permissions.
This way is pretty long, but this could help you.
we already searched a lot of similar topics on StackOverflow and in other forums but haven't managed to solve this issue so far.
We developed an Android application that is missing from the market for some devices. It uses geo-data and the camera extensively. The "Copy Protection" is already off, and we can't figure why it isn't showing on some devices that appear to be completely compatible.
The manifesto is as follows:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.syncmobile.riogastronomia"
android:versionCode="5"
android:versionName="1.2.1" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />
<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-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.SET_ORIENTATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.camera" android:required="true"/>
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<supports-screens
android:xlargeScreens="false"
/>
<application
android:icon="#drawable/icon"
android:label="#string/app_name" >
<activity
android:name=".Splash" android:label="#string/app_name"
android:theme="#android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</manifest>
Devices that we're having problem with so far:
Model: Xperia x10 | Model Number: X10i | Android Version: 2.3.3
If you would like to see if it shows up in your device the app name is: "Rio Gastronomia"
Thank you all beforehand for your precious time. =D
Update:
I opened the app direct URL in the browser and I got this message from the market:
Your content filtering level doesn't allow you to download this item.
The app maturity level is set to low.
So... after getting this error from the market I tried switching my filtering configuration. It was set to "Everyone", when I set it to "All Apps" I could finally see the app in the market. But I can't change the settings in my users devices, so what should I do to get people that have "Everyone" set to see our app?
(The app is set to "Low Maturity" cause the option "Everyone" was disabled by Google Play)