Search code examples
androidcompatibilitytablet

APK not available for tablet


I have published an apk in beta and it's not available for tablet showing "You device is not compatible with this version" but I have not done any restriction for the tablet devices. I have already gone through compatibility doc and follows all guidelines. All the activities in portrait mode only. your help will be greatly appreciated. Thanks

Manifest:

minSdkVersion 18
targetSdkVersion 23
<uses-feature
    android:name="android.hardware.touchscreen.multitouch"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.autofocus"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.flash"
    android:required="false" />
<uses-feature
    android:name="android.hardware.bluetooth"
    android:required="false" />
<uses-feature
    android:name="android.hardware.microphone"
    android:required="false" />
<uses-feature
    android:name="android.hardware.telephony"
    android:required="false" />
<uses-feature
    android:name="android.hardware.screen.portrait"
    android:required="false" />

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

<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="com.iod.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA" />

aapt dumb badging Log:

  uses-feature-not-required: name='android.hardware.bluetooth'
  uses-feature: name='android.hardware.camera'
  uses-feature: name='android.hardware.camera.autofocus'
  uses-feature: name='android.hardware.camera.flash'
  uses-feature-not-required: name='android.hardware.microphone'
  uses-feature-not-required: name='android.hardware.screen.portrait'
  uses-feature-not-required: name='android.hardware.telephony'
  uses-feature-not-required: name='android.hardware.touchscreen.multitouch'
  uses-feature: name='android.hardware.touchscreen'
  uses-implied-feature: name='android.hardware.touchscreen' reason='default feature for all apps'
main
other-activities
other-receivers
other-services
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'

Solution

  • After a long time spend I find the exact problem, It was library issue as library has camera feature required so it overrides. To find it out, I read the build log manifest-merger file properly. To solve this problem, used tools:replace="required" with uses-feature.

    <uses-feature
            android:name="android.hardware.camera"
            android:required="false"
            tools:replace="required" />
    

    Hope this should help others to find out this kind of issues.