Reputation: 648
I have an app that's been available for over 2 years, and supported on tablets for as long as tablets have been around. I have an Asus Transformer tablet that I use for tablet testing. Before I made the update, the app was compatible with tablet devices. For my recent set of changes, then only thing I changed in the Android Manifest file was the app version number and app version string. Everything else is exactly the same as before. However, after the update, when I search for the app in Google Play the app doesn't appear. When I view the app in a browser on my tablet, it says "Your device isn't compatible with this version."
How exactly can this new version be incompatible with tablets when no permissions were modified? Inside of the Android Developer Console when I view my app, it says that 2,673 devices are supported and it says 0 devices are excluded (that's right, zero devices). Well if that's true, how can I possibly get an incompatibility message? Also, when I view the list of supported devices, my Asus tablet is listed there.
Note that the app size is only 1.19 MB, and that I actually have 2 executables for the same app, but the other executable is specifically for Android 1.5 and lower and its version code is 0300800 so it is lower than the version code for the executable that supports Android 1.6 and higher (using the compatibility package).
Also, I am able to load the app directly onto the tablet when connected to my computer using ADB. The only reason I even realized this problem was occurring now is because I received emails from a couple of tablet users who said they were getting the same message as me, except they had different tablets that I do.
Here is my Manifest file (again, it is unchanged aside from the version number):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my_package"
android:versionCode="0400921"
android:versionName="9.2.1"
android:installLocation="auto">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<supports-screens android:anyDensity="true"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".App"
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=".Activity1" android:label="Activity1"></activity>
<more activities>
</application>
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="8" />
Upvotes: 8
Views: 6283
Reputation: 648
I contacted Google, and they looked into the issue. There were a combination of issues. First, they said that the switch to the new Developer Console played a part because the old developer console was more lenient. They said that my old manifest file worked in the old Devloper Console, but technically the old manifest file didn't actually specify information for tablets.
So, I updated my manifest file to this, and now users with tablets are able to access the app in Google Play:
<?xml version="1.0" encoding="utf-8"?>
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="10" />
<compatible-screens>
<screen android:screenSize="large" android:screenDensity="480" />
<screen android:screenSize="xlarge" android:screenDensity="480" />
<screen android:screenSize="small" android:screenDensity="ldpi" />
<screen android:screenSize="small" android:screenDensity="mdpi" />
<screen android:screenSize="small" android:screenDensity="hdpi" />
<screen android:screenSize="small" android:screenDensity="xhdpi"/>
<!--all normal size screens -->
<screen android:screenSize="normal" android:screenDensity="ldpi" />
<screen android:screenSize="normal" android:screenDensity="mdpi" />
<screen android:screenSize="normal" android:screenDensity="hdpi" />
<screen android:screenSize="normal" android:screenDensity="xhdpi" />
<!-- all large size screens -->
<screen android:screenSize="large" android:screenDensity="ldpi" />
<screen android:screenSize="large" android:screenDensity="mdpi" />
<screen android:screenSize="large" android:screenDensity="hdpi" />
<screen android:screenSize="large" android:screenDensity="xhdpi" />
<!-- all xlarge size screens -->
<screen android:screenSize="xlarge" android:screenDensity="ldpi" />
<screen android:screenSize="xlarge" android:screenDensity="mdpi" />
<screen android:screenSize="xlarge" android:screenDensity="hdpi" />
<screen android:screenSize="xlarge" android:screenDensity="xhdpi" />
<!-- Special case for Nexus 7 -->
<screen android:screenSize="large" android:screenDensity="213" />
</compatible-screens>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".App"
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=".Activity1" android:label="Activity1"></activity>
</application>
</manifest>
In addition, they said to use supports-screens instead of compatible-screens in order to expand compatibility.
Upvotes: 5