androidandroid-manifestgoogle-nexusdevice-compatibility

What is the right screen size and density configuration of Nexus 6?


My app doesn't list Nexus 6 as a supported device in Google Play Console.

I read the blog post Getting Your Apps Ready for Nexus 6 and Nexus 9 which says:

Nexus 6 has a quantized density of 560 dpi, which falls in between the xxhdpi and xxxhdpi primary density buckets.

There is a paragraph exactly about my problem:

Make sure you are not filtered on Google Play

If you are using the element in the AndroidManifest.xml file, you should stop using it because it’s not scalable to re-compile and publish your app each time new devices come out. However, if you must use it, make sure to update the manifest to add the configuration for these devices (by screen size and density). Otherwise your app may be excluded from Google Play search results on these devices.

Well, I have to use <compatible-screens> because I'm trying to exclude my app from tablets.

My current <compatible-screens> element in Manifest looks like:

<compatible-screens>
    <!-- small size screens -->
    <screen
        android:screenDensity="ldpi"
        android:screenSize="small" />
    <screen
        android:screenDensity="mdpi"
        android:screenSize="small" />
    <screen
        android:screenDensity="hdpi"
        android:screenSize="small" />
    <screen
        android:screenDensity="xhdpi"
        android:screenSize="small" />
    <screen
        android:screenDensity="480"
        android:screenSize="small" />

    <!-- normal size screens -->
    <screen
        android:screenDensity="ldpi"
        android:screenSize="normal" />
    <screen
        android:screenDensity="mdpi"
        android:screenSize="normal" />
    <screen
        android:screenDensity="hdpi"
        android:screenSize="normal" />
    <screen
        android:screenDensity="xhdpi"
        android:screenSize="normal" />
    <screen
        android:screenDensity="480"
        android:screenSize="normal" />
    <screen
        android:screenDensity="640"
        android:screenSize="normal" />
</compatible-screens>

What is the right configuration for Nexus 6?

I have tried:

    <screen
        android:screenDensity="560"
        android:screenSize="normal" />
    <screen
        android:screenDensity="480"
        android:screenSize="large" />
    <screen
        android:screenDensity="560"
        android:screenSize="large" />
    <screen
        android:screenDensity="640"
        android:screenSize="large" />

But none of it seems to do the trick.


Solution

  • I asked Google Play support and got an answer which helped me solve the issue.

    Still not 100% sure about the right screen configuration, but it seems like

    <screen
        android:screenDensity="560"
        android:screenSize="normal" />
    

    is the correct option.


    My app was not compatible with the Nexus 6, though, due to a conflict in my app’s Manifest. I used following feature requirements:

    <uses-feature android:name="android.hardware.LOCATION" />
    <uses-feature android:name="android.hardware.TELEPHONY" />
    <uses-feature android:name="android.hardware.TOUCHSCREEN" />
    <uses-feature android:name="android.hardware.WIFI" />
    <uses-feature android:name="android.hardware.location.GPS" />
    <uses-feature android:name="android.hardware.location.NETWORK" />
    <uses-feature android:name="android.hardware.screen.PORTRAIT" />
    

    But the correct version is with the features listed in all lowercase letters:

    <uses-feature android:name="android.hardware.location" />
    <uses-feature android:name="android.hardware.telephony" />
    <uses-feature android:name="android.hardware.touchscreen" />
    <uses-feature android:name="android.hardware.wifi" />
    <uses-feature android:name="android.hardware.location.gps" />
    <uses-feature android:name="android.hardware.location.network" />
    <uses-feature android:name="android.hardware.screen.portrait" />
    

    It's a bit tricky one, because permissions (in <uses-permission>) like

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    

    should be listed in capital letters, but feature (in <uses-feature>) should be lowercase.

    I haven't come across the same issue on any other device, but if Nexus 6 requires this, it's probably the right way of doing it.