Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android application on Google Play - incompatible with all devices

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?

like image 636
narath Avatar asked Jan 24 '26 13:01

narath


1 Answers

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".
like image 98
Avijit Avatar answered Jan 26 '26 01:01

Avijit