0

My app can't be found when someone looks for it from their google play app on their Android phone. (shows find when searched from browser). This is because Google Play says my app supports "0 devices".

The support chat person at Google play says this is the reason:

"Your app is not compatible with certain devices due to a conflict in your app’s manifest with the following: no supported native platform: armeabi, armeabi-v7a, and missing device features: android.hardware.faketouch, android.hardware.screen.portrait"

I can't figure out what the heck that means.

My manifest file is as follows:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.deanblakely.SafeTalk"
    android:installLocation="preferExternal"
    android:versionCode="30"
    android:versionName="1.06      " >


    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="25" />


    <uses-feature
        android:glEsVersion="0x00020000"
           android:required="false" />


    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.android.vending.BILLING" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <permission android:name="${applicationId}.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />

       <supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="false"
        android:xlargeScreens="true" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <!--android:theme="@android:style/Theme.NoTitleBar" -->

        <activity android:name="SplashActivity"
            android:label="@string/app_name"
            android:theme="@style/SplashTheme">
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>


        <activity
            android:name="MainActivity"
            android:label="@string/app_name"
            android:icon="@mipmap/ic_launcher"
            android:configChanges="orientation|keyboardHidden"
            android:screenOrientation="portrait" 
            android:launchMode="singleTask"
            android:theme="@style/AppTheme.NoActionBar"
            >


         </activity>

        <receiver
            android:name="com.deanblakely.SafeTalk.GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <category android:name="com.deanblakely.SafeTalk" />
            </intent-filter>
        </receiver>
        <service android:name="com.deanblakely.SafeTalk.GcmIntentService" />

    </application>

</manifest>

My gradle file is as follows:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '26.0.2'
    useLibrary 'org.apache.http.legacy'  //httpClient not supported in 23.
    lintOptions { disable 'MissingTranslation' }
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
    }

    signingConfigs {
        releaseConfig {
            storeFile file("XXXXXXXXXXXXXXXXX");
            storePassword ("XXXXXXXXXX");
            keyPassword ("XXXXXXXXXX");
            keyAlias "XXXXX
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            debuggable false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.releaseConfig
        }
        debug {
            debuggable true
            applicationIdSuffix ".debug"
        }

    }
    flavorDimensions "stupidDimensionone"
    productFlavors {
        scFlavor
                {
                    applicationId 'com.deanblakely.SafeTalk.sc'
                    dimension "stupidDimensionone"
                }
        safetalkFlavor
                {
                    applicationId "com.deanblakely.SafeTalk"
                    dimension "stupidDimensionone"
                }
    }
}

dependencies {
    compile project(':dropboxChooserSDK')
    compile files('libs/gson-2.2.4.jar')
    compile files('libs/microsoft-translator-java-api-0.6.2-jar-with-dependencies.jar')
    compile 'com.android.support:appcompat-v7:25+'
    compile 'com.android.support:design:25+'
    compile 'com.google.android.gms:play-services-gcm:9.4.0'
    compile 'org.apache.directory.studio:org.apache.commons.io:2.4'

}

This didn't used to be this way. I suppose it is another breaking change. Anyone know what is causing this?

Dean Blakely
  • 3,535
  • 11
  • 51
  • 83
  • That chat message isn't particularly coherent. :-( Do you have any NDK binaries in your app? I checked Dropbox's official `dropboxChooserSDK`, and it doesn't have any NDK binaries (though that code is 5 years old and bakes in an ancient `android-support-v4.jar`, so it is scary in its own right). – CommonsWare Jan 10 '18 at 20:44
  • No NDK binaries that I have directly included. – Dean Blakely Jan 10 '18 at 21:08
  • and indirectly? Have you inspected your final APK file (it's just .zip archive renamed)? – Marcin Orlowski Jan 11 '18 at 03:14
  • I don't know much about NDK but there are no .a or .so files inside my APK. – Dean Blakely Jan 11 '18 at 16:03

2 Answers2

2

As usual I am answering my own question . . .

I made the following replacement in my gradle . . .

//compile 'org.apache.directory.studio:org.apache.commons.io:2.4'

compile 'commons-io:commons-io:2.6'

I found a post from somebody else that had the same problem. I don't know why it works and neither did the original person with the problem. I think this is either caused by buggy Google Play software and/or a complete lack of documentation.

Dean Blakely
  • 3,535
  • 11
  • 51
  • 83
0

Usually this problem are about configuration permision or uses feature

In this case looks the problem is like this:

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

Check the users feature you need to change in the DOCUMENTATION

josedlujan
  • 5,357
  • 2
  • 27
  • 49