0

While publishing my android application on google play, it is showing 0 device compatible. Can anyone help me out why is that so? But while using on many other devices it is working

Piece of manifest is as shown below

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.myapp.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<permission
    android:name="com.myapp.gcm.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.myapp.gcm.permission.C2D_MESSAGE" />
<uses-permission
    android:name="android.permission.FLASHLIGHT"
    android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
    android:protectionLevel="normal" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

<permission
    android:name="com.myapp.app.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="false" />
<uses-feature android:name="android.hardware.camera"/>
<uses-feature
    android:name="android.hardware.camera.front" />
<uses-feature
    android:name="android.hardware.camera.flash"
    android:required="false" />
<uses-feature android:name="android.hardware.camera.setParameters"/>

And in gradle

    android {
    useLibrary 'org.apache.http.legacy'
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.myapp.app"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 2
        versionName "1.0.1"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

I have checked many other links and have changed configuration for camera, which was camera2 and now it is camera. I am dont know where is what going wrong and I am publishing app for the first time on google play.

Jimit Patel
  • 4,265
  • 2
  • 34
  • 58

2 Answers2

2

Your MAPS_RECEIVE permissions do not have the same package names --

<uses-permission android:name="com.stylabs.styfi.app.permission.MAPS_RECEIVE" />

vs

<permission
    android:name="com.myapp.app.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

For recent versions of google maps, I believe it safe to just remove those as they are no longer required, but if you keep them, the package names should match.

Per comment below, your GCM permissions also look wrong because they don't match either of the MAPS_RECEIVE package names. They do match each other, so might not be cauing filtering out of devices in the store, but will prevent GCM from working properly, so those packages should be updated with your package name, too.

iagreen
  • 31,470
  • 8
  • 76
  • 90
1

If you list a <uses-feature> string that doesn't actually exist, then you'll match no devices. To the best of my knowledge, there's no such feature as

<uses-feature android:name="android.hardware.camera.setParameters"/>

Remove that, or at least set android:required="false" for it.

Eddy Talvala
  • 17,243
  • 2
  • 42
  • 47