Поддержка нескольких экранов - использование <compatibility-screen>

Мне трудно понять, как сделать мое приложение доступным на определенных устройствах, но исключить другие устройства. У меня Acer Iconia One 7 B1. Экран 7", 800x1280 пикселей и плотность 216 ppi. В первом выпуске моего приложения Google Play сказал, что оно не совместимо с моим планшетом. Это было моим манифестом в начале:

<compatible-screens>
        <!-- all normal size screens -->
        <screen android:screenDensity="mdpi" android:screenSize="normal" />
        <screen android:screenDensity="hdpi"  android:screenSize="normal" />
        <screen android:screenDensity="xhdpi"  android:screenSize="normal"/>
        <screen android:screenDensity="xxhdpi" android:screenSize="normal"/>
        <!-- mdpi and hdpi large size screens -->
        <screen android:screenDensity="mdpi"  android:screenSize="large" />
        <screen android:screenDensity="hdpi"  android:screenSize="large" />
        <!-- mdpi x-large size screens -->
        <screen android:screenDensity="mdpi"  android:screenSize="xlarge" />
    </compatible-screens>

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

После исследования я обнаружил, что у моего планшета плотность tvdpi, поэтому я добавил еще несколько строк в манифест, чтобы включить ВСЕ экраны нормального размера:

<screen   android:screenSize="normal"  android:screenDensity="213"/>
<screen   android:screenSize="normal"  android:screenDensity="420"/>
<screen   android:screenSize="normal"  android:screenDensity="560"/>
<screen   android:screenSize="normal"  android:screenDensity="xxxhdpi"/>
<!-- to exclude TVs -->
      <uses-feature android:name="android.hardware.touchscreen"   
                    android:required="true"/>

Когда я загружал версию 2 своего приложения, консоль Google показала мне предупреждение о том, что обновленный apk поддерживает устройства LESS, а не версию 1, несмотря на то, что я добавил больше совместимых экранов!!! Пожалуйста, помогите мне понять, что я делаю не так? По сути, мне нужно поддерживать все возможные нормальные размеры экрана независимо от плотности; большой MDPI и HDPI, а также очень большой MDPI.

3 ответа

Решение

Посмотрев на это два дня (позор, что я так долго), я заглянул в диспетчер AVD в Android Studio и выяснил, что Nexus 7, который имеет те же характеристики, что и моя Acer Iconia, считается большим, а не нормальным., Однажды я изменил

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

чтобы:

<screen   android:screenSize="large"  android:screenDensity="213"/>

и загрузил новый APK в Play Store, мой планшет, наконец, был совместим с приложением. Я надеюсь, что когда-нибудь это поможет кому-то, когда он не сможет понять, почему его планшет tvdpi считается несовместимым с их приложением.

Ваш код для исключения ТВ - это мое предположение для виновника, ТВ-приложения могут поддерживаться только с помощью библиотеки Leanback Intent (которая по умолчанию отключена).

С помощью сенсорного экрана вы убираете только несколько устройств (включая те дешевые ТВ-боксы для Android, на которых установлена ​​версия Android для телефона)

Похоже, вы не должны использовать <compatible-screens> совсем.

Из документации:

Внимание: как правило, вы не должны использовать этот элемент манифеста. Использование этого элемента может значительно сократить потенциальную базу пользователей для вашего приложения, не позволяя пользователям устанавливать ваше приложение, если у них есть устройство с конфигурацией экрана, которую вы не указали. Вы должны использовать его только в качестве крайней меры, когда приложение абсолютно не работает с конкретными конфигурациями экрана.

Вы говорите: "Мне нужно поддерживать все возможные нормальные размеры экрана независимо от плотности". Если это означает, что вы должны исключить small Размеры экрана, вы можете использовать <supports-screens> элемент вместо Что-то вроде

<supports-screens
    android:smallScreens="false"/>
Другие вопросы по тегам