Ok, after all it turns out that there was no problem at all. Guy responsible for publication process set country restrictions. That's why app was not compatible with all devices in specific country.
Android application on Google Play - incompatible with all devices
-
11-10-2022 - |
Domanda
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?
Soluzione 3
Altri suggerimenti
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:
- You have to keep in mind about
android:minSdkVersion
as well to make it compatible with lower version device. As you have to set it like:android:minSdkVersion="11"
.
In manifest set android:minSdkVersion="11"
- this means that all the devices below Android 3.0 - will not support. Or misrepresented that the problem with the above version 3.0 devices still hit in the list is not supported?