UPDATE
So to solve the problem I took the approach of starting a new project and little by little try to bring it to the final project. The following snippet seems to be at least partly responsible
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera2.autofocus"/>
before I added that snippet, the list had 9202 devices, after I add the snippet the list dropped to 0.
ORIGINAL QUESTION
I have published many apps in the past using eclipse. This is the first time I am publishing an app that is developed using android studio. Since my app is not visible in the mobile play store (i.e. through android) and says This app is incompatible with all of your devices.
in the web store, I started investigating to find out why. To my great suprize I find this as my Supported devices list
This is crazy as I have never accounted this before. Any ideas what I may be doing wrong? I have no problem uploading my release apk to my device using the adb
tool. And my gradle does say
defaultConfig {
applicationId "com.company.android"
minSdkVersion 14
targetSdkVersion 23
versionCode 6
versionName "0.0.06"
multiDexEnabled true
}
after much troubleshooting, I have now even added to my manifest
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23"/>
Here is my full gradle file:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.google.gms.google-services'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.mycompany.android"
minSdkVersion 14
targetSdkVersion 23
versionCode 6
versionName "0.0.06"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
zipAlignEnabled true
}
}
dexOptions {
incremental true
javaMaxHeapSize "4g"
preDexLibraries = false
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(path: ':cloud', configuration: 'android-endpoints')
compile('com.twitter.sdk.android:twitter:1.9.0@aar') {
transitive = true;
}
compile 'com.android.support:multidex:1.0.0'
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'
compile 'com.android.support:cardview-v7:23.0.1'
compile 'com.google.android.gms:play-services-analytics:8.1.0'
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.path:android-priority-jobqueue:1.1.2'
compile 'com.google.android.gms:play-services-gcm:8.1.0'
compile 'com.google.android.gms:play-services-appindexing:8.1.0'
compile 'com.google.android.gms:play-services-location:8.1.0'
compile 'com.google.android.gms:play-services-ads:8.1.0'
compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
transitive = true;
}
}
And I already checked that the apk is activated.
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest
package="com.company.android"
xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"/>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
<!-- for notifications -->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="com.company.android.permission.C2D_MESSAGE"/>
<!-- Additional permission for camera -->
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera2.autofocus"/>
<application
android:name=".Application"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<!-- ACTIVITIES -->
<activity
android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|uiMode|screenSize|smallestScreenSize"
android:label="@string/app_name"
android:launchMode="singleTop"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH"/>
</intent-filter>
<!-- deep linking for search engine -->
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<!-- Accepts URIs that begin with "http://www.company.com” -->
<data
android:host="www.company.com"
android:scheme="http"/>
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<!-- Accepts URIs that begin with "http://www.company.com/” -->
<data
android:host="www.company.com"
android:pathPrefix="/"
android:scheme="http"/>
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<!-- Accepts URIs that begin with "https://www.company.com” -->
<data
android:host="www.company.com"
android:scheme="https"/>
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<!-- Accepts URIs that begin with "http://www.company.com/” -->
<data
android:host="www.company.com"
android:pathPrefix="/"
android:scheme="https"/>
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
<activity
android:name=".CameraActivity"
android:configChanges="orientation|screenSize"
android:label="@string/title_activity_camera"/>
<activity
android:name=".SettingsActivity"
android:label="@string/title_activity_settings"/>
<activity
android:name=".DogsWebPageActivity"
android:label="@string/title_activity_Dogs_web_page"
android:theme="@style/AppTheme">
<!--<meta-data-->
<!--android:name="android.support.PARENT_ACTIVITY"-->
<!--android:value=".MainActivity"/>-->
</activity>
<!-- RECEIVERS -->
<!-- for cloud messages -->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="com.company.android"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="com.company.android"/>
</intent-filter>
</receiver>
<!-- fragments for their adapters -->
<!-- SERVICES -->
<!-- for cloud messages -->
<service
android:name="com.company.android.data.service.companyGcmListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
</intent-filter>
</service>
<service
android:name=".data.service.companyInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
<service
android:name=".data.service.RegistrationIntentService"
android:exported="false">
</service>
<!-- The DuckSyncAdapter service -->
<service
android:name=".data.contentprovider.sync.DuckSyncService"
android:exported="true">
<intent-filter>
<action android:name="android.content.SyncAdapter"/>
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter"/>
</service>
<!-- syncadapter's dummy authenticator service -->
<service android:name=".data.contentprovider.sync.DuckAuthenticatorService">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator"/>
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator"/>
</service>
<!-- for adapters: data cache/providers -->
<service
android:name=".data.service.DogsService"
android:exported="false"/>
<service
android:name=".data.service.RemoteDataService"
android:exported="false"/>
<service
android:name=".data.service.VideoSearchService"
android:exported="false"/>
<!-- PROVIDERS -->
<!-- Duck tab content provider -->
<provider
android:name=".data.contentprovider.VideoProvider"
android:authorities="@string/content_authority"
android:exported="false"
android:syncable="true"/>
<provider
android:name=".data.contentprovider.companySearchRecentSuggestionsProvider"
android:authorities="com.company.android.data.contentprovider.companySearchRecentSuggestionsProvider"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<meta-data
android:name="io.fabric.ApiKey"
android:value="somestring"/>
</application>
</manifest>