I trying to find the answer for 2 days on StackOverflow and other services without any luck. I have published an app to Google Play. It's there but it's incompatible with most of the devices. I ran tests on Nexus 7 both using Eclipse and TestFlight to install it and there was no problem. So I'm almost sure it is related to the AndroidManifest.
Here is aapt dump badging result:
Application.apk
package: name='com.test.application'
versionCode='1'
versionName='1.0'
sdkVersion:'11'
targetSdkVersion:'19'
uses-permission:'android.permission.WRITE_EXTERNAL_STORAGE'
uses-permission:'android.permission.ACCESS_NETWORK_STATE'
uses-permission:'android.permission.INTERNET'
application-label:'Application'
application-label-da:'Application'
application-label-el:'Application'
application-icon-160:'res/drawable-mdpi/ic_launcher.png'
application-icon-240:'res/drawable-hdpi/ic_launcher.png'
application-icon-320:'res/drawable-xhdpi/ic_launcher.png'
application-icon-480:'res/drawable-xxhdpi/ic_launcher.png'
application: label='Application' icon='res/drawable-mdpi/ic_launcher.png'
application-debuggable
launchable-activity: name='com.test.application.activity.Launcher'
label='Application' icon=''
uses-permission:'android.permission.READ_EXTERNAL_STORAGE'
uses-implied-permission:'android.permission.READ_EXTERNAL_STORAGE','requested
WRITE_EXTERNAL_STORAGE'
uses-feature:'android.hardware.touchscreen'
uses-implied-feature:'android.hardware.touchscreen','assumed you require a touch screen
unless explicitly made optional'
uses-feature:'android.hardware.screen.landscape'
uses-implied-feature:'android.hardware.screen.landscape','one or more activities have
specified a landscape orientation'
main
other-activities
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'
locales: '--_--' 'da' 'el'
densities: '160' '240' '320' '480'
and here is Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.application"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:debuggable="false"
android:name=".ApplicationApplication">
<activity
android:name="com.test.application.activity.Launcher"
android:label="@string/app_name"
android:screenOrientation="sensorLandscape"
android:configChanges="orientation|screenSize|keyboardHidden|locale">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.test.application.activity.SomeActivity"
android:label="@string/app_name"
android:screenOrientation="sensorLandscape"
android:windowSoftInputMode="adjustPan"
android:configChanges="orientation|screenSize|keyboardHidden|locale">
</activity>
<activity
android:name="com.test.application.activity.AnotherActivity"
android:label="@string/app_name"
android:screenOrientation="sensorLandscape"
android:windowSoftInputMode="adjustPan"
android:configChanges="orientation|screenSize|keyboardHidden|locale">
</activity>
</application>
</manifest>
The signed apk was built using Android Studio. What seems suspicious is this "application-debuggable". Do You guys have any clue why on Earth it is incompatible with, let's say Nexus 7?
Is it saying, app is not compatible.
It is showing error on device not only because minSDKversion but also google play concern about your given permission on the manifest file as well.
Like if you entered something like:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Your tab will not support it.
So instead of using uses-permission use <uses-feature>. And in java file check for it that your needed hardware is available or not.
For <uses-feature> see the below link:
http://developer.android.com/guide/topics/manifest/uses-feature-element.html#features-reference
In case If you use this you have to update your manifest like this:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-feature android:name="android.hardware.screen.portrait" android:required="false"/>
You have to put <uses-permission> along with its required <uses-feature>.
And a small tips if it will help you:
android:minSdkVersion as well to make it compatible
with lower version device. As you have to set it like: android:minSdkVersion="11".If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With