Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does the Google Play store say my Android app is incompatible with my own device?

I am hesitant to ask this question, because it appears as though many people have a similar problem and yet I have found no solution that solves my particular instance.

I have developed an Android app (link to the actual app) and have uploaded it to the Play store. The Play store says

"This app is incompatible with your XT Mobile Network HTC HTC Wildfire S A510b."

Of course that is the phone on which I developed the app, so it ought to be compatible. Some people with other devices say that it reports compatible, others say it reports incompatible, but I can find no trend. (Apparently I don't know very many people with Android devices.)

I have tried the following:

  • moving a large-ish file out of the res/raw directory as suggested by this answer. The only file in there was a ~700 kB text file, but I moved it to assets/ with no apparent change.

  • adding the following two feature assertions:

    <uses-feature android:name="android.hardware.faketouch" /> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> 

    thinking that maybe my phone doesn't claim to support the usual android.hardware.touchscreen feature, but again, with no apparent change.

When uploading the APK to the Play store, the only filter that it reports as active is the android.hardware.faketouch feature.

The following is the output of aapt dump badging bin/NZSLDict-release.apk:

package: name='com.hewgill.android.nzsldict' versionCode='3' versionName='1.0.2' sdkVersion:'4' targetSdkVersion:'4' uses-feature:'android.hardware.faketouch' uses-feature-not-required:'android.hardware.touchscreen' application-label:'NZSL Dictionary' application-icon-160:'res/drawable/icon.png' application: label='NZSL Dictionary' icon='res/drawable/icon.png' launchable-activity: name='com.hewgill.android.nzsldict.NZSLDictionary'  label='NZSL Dictionary' icon='' main other-activities supports-screens: 'small' 'normal' 'large' supports-any-density: 'true' locales: '--_--' densities: '160' 

and for completeness, my manifest file:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"       package="com.hewgill.android.nzsldict"       android:versionCode="3"       android:versionName="1.0.2">     <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="4" />     <uses-feature android:name="android.hardware.faketouch" />     <uses-feature android:name="android.hardware.touchscreen" android:required="false" />     <application android:label="@string/app_name"         android:icon="@drawable/icon">         <activity android:name="NZSLDictionary"                   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=".WordActivity" />         <activity android:name=".VideoActivity" />         <activity android:name=".AboutActivity" />     </application> </manifest>  

In the "Device Availability" section of the Play store, I can see that all the HTC devices, including the Wildfire S, are supported except for "G1 (trout)" and "Touch Viva (opal)", whatever those are. Actually I see that both "Wildfire S (marvel)" and "Wildfire S A515c (marvelc)" are listed as supported, but my "Wildfire S A510b" is not specifically mentioned. Can this sort of sub-model identifier matter that much? I have been able to download several other apps from Google Play to my phone with no problems.

The only thing I haven't done at this point is wait 4-6 hours after uploading the latest version (as in this comment) to see whether it still says it's incompatible with my phone. However, the Play store page currently shows 1.0.2 which is the latest I have uploaded.

like image 671
Greg Hewgill Avatar asked May 07 '12 02:05

Greg Hewgill


People also ask

Why are some Google Play apps not compatible with my device?

Why This Error Occurs on Android. The error appears when the Play Store thinks your device isn't compatible with the app you're trying to download. This doesn't mean that there's an issue with your device. The error means the app developer hasn't chosen your device for their app (for their own reasons).

How do I fix this app is not compatible with my Android device?

Uninstall and reinstall Play Store updates On your Android phone or tablet, open the Settings app. Tap Apps & notifications/Application Manager (depending on your android device). Tap Google Play Store. If you don't see it, tap See all apps or App info.


Video Answer


1 Answers

The answer appears to be solely related to application size. I created a simple "hello world" app with nothing special in the manifest file, uploaded it to the Play store, and it was reported as compatible with my device.

I changed nothing in this app except for adding more content into the res/drawable directory. When the .apk size reached about 32 MB, the Play store started reporting that my app was incompatible with my phone.

I will attempt to contact Google developer support and ask for clarification on the reason for this limit.

UPDATE: Here is Google developer support response to this:

Thank you for your note. Currently the maximum file size limit for an app upload to Google Play is approximately 50 MB.

However, some devices may have smaller than 50 MB cache partition making the app unavailable for users to download. For example, some of HTC Wildfire devices are known for having 35-40 MB cache partitions. If Google Play is able to identify such device that doesn't have cache large enough to store the app, it may filter it from appearing for the user.

I ended up solving my problem by converting all the PNG files to JPG, with a small loss of quality. The .apk file is now 28 MB, which is below whatever threshold Google Play is enforcing for my phone.

I also removed all the <uses-feature> stuff, and now have just this:

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> 
like image 112
Greg Hewgill Avatar answered Oct 23 '22 09:10

Greg Hewgill