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?

È stato utile?

Soluzione 3

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.

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top