"your device isn't compatible with this version"
I put an app in the play store and my friend, who is running 4.0.3 on two devices, got the following message when trying to install my app : "your device isn't compatible with this version".
One device allows it to install and the other doesn't. I allow for API 3-15 and both devices are 4.0.3. What's the problem?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.snotyak.basicfuelcalcpro"
android:versionCode="2"
android:versionName="1.2.3" >
<uses-sdk
android:minSdkVersion="4" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name=".CalcApp"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MainTheme" >
<activity android:name=".CalcActivity" >
</activity>
<activity
android:name=".PrefsActivity"
android:label="@string/prefs_name" />
<activity
android:name=".CalcTabView"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".AboutActivity"></activity>
<activity android:name=".HistoryActivity" />
<activity android:name=".AnalysisActivity" />
</application>
</manifest>
Solution 1:
Being that the 2 devices are on the same version the logical explanation that is causing the incompatibility message is that the devices are different and the app is using a feature that one of them doesn't support. Look at your AndroidManifest.xml and pay close attention to uses-feature
and uses-permission
tags. The Google Play store will use these to filter out devices that are not compatible.
For example if you have <uses-permission android:name="android.hardware.camera">
and one of the phone doesn't have a camera then it will be filtered out. Because the request for the permission implies that your app needs a camera to function properly. You can fix this by adding <uses-feature android:name="android.hardware.camera" android:required="false" />
into your AndroidManifest.xml. Of course, you'll also need code to safeguard your app from attempting to access the camera when it's not available.
Look at this page for more information, Google Play Filters.
Google Play has a way to indicate what's causing the device to be filtered out. It's very terse but go to the bottom of the page under devices and select Show Devices and then filter for Galaxy to verify that it's excluding based on manifest.
Solution 2:
Double check the <uses-feature>
tag in your AndroidManifest.xml
file. It sounds like your application requires a feature that one of the devices doesn't support.
You should also check to see if you have the following declared in your AndroidManifest.xml
,
<uses-sdk
android:minSdkVersion="3" />
You want your application to work for devices running API 3 and above (not APIs 3 through 15). The code above will ensure that your application works with all devices above API 3. Note that you generally don't want to use the android:maxSdkVersion
attribute (if you are currently using it).
Solution 3:
I got rid of
<uses-sdk android:targetSdkVersion="15" />
and it works now.