Поддержка нескольких экранов - использование <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"/>