Экраны поддержки Android не работают?

Я создал одно приложение и пытаюсь исключить устройства с маленьким экраном. Для этого я воспользовался элементом экрана поддержки в манифест.

<supports-screens
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="false"
    android:xlargeScreens="true"
    android:requiresSmallestWidthDp="320" />

Как сказано в ссылке на страницу разработчика: Например, типичный экран мобильного телефона имеет наименьшую ширину 320dp.

Несколько дней назад я заметил, что люди с небольшими устройствами все еще оставляют плохие отзывы, потому что они все еще могут загрузить приложение, а некоторые элементы макета не отображаются на экране. Конечно, одним из решений было бы адаптировать макет, но, пожалуйста, на данный момент мой вопрос в другом.

Кажется, атрибут android:requiresSmallestWidthDp не работает. На самом деле я пытался установить его на 700 или выше, просто чтобы провести эксперимент, и загрузив его в магазин, количество поддерживаемых устройств не меняется!

Я также изменил дополнительную версию SDK на 13, чтобы предотвратить проблемы совместимости с этим атрибутом:

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

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

Я хотел бы удалить устройства с dpi ниже 320, но не могу. И я не могу понять, что я делаю не так.

Обновлять

Вот такое предложение: В настоящее время Google Play не поддерживает этот атрибут для фильтрации (на Android 3.2), поэтому вам следует продолжать использовать другие атрибуты размера, если ваше приложение не поддерживает маленькие экраны. Но:

  • Мне непонятно, что происходит с версиями Android 3.2+. Если я укажу версию Android 13+ в своем манифесте и атрибут android:requiresSmallestWidthDp, люди все равно смогут установить приложение, а что дальше?
  • Другие атрибуты размера: android:compatibleWidthLimitDp и android:largestWidthLimitDp. но оба они считают максимальную «наименьшую ширину» вместо минимальной ширины, которая мне нужна.

Итак, мой вопрос: как запретить людям с экраном меньше 500 пикселей или 360 dpi устанавливать мое приложение? Могу я?


person donnadulcinea    schedule 28.12.2014    source источник
comment
Вы используете Android Studio?   -  person gio    schedule 28.12.2014
comment
Да, знаю, уже пару месяцев.   -  person donnadulcinea    schedule 29.12.2014


Ответы (1)


Из официального источника.

Внимание. Система Android не обращает внимания на этот атрибут, поэтому он не влияет на поведение вашего приложения во время выполнения. Вместо этого он используется для включения фильтрации вашего приложения в таких сервисах, как Google Play. Однако Google Play в настоящее время не поддерживает этот атрибут для фильтрации (на Android 3.2), поэтому вам следует продолжать использовать другие атрибуты размера, если ваше приложение не поддерживает маленькие экраны.

Обновление:

Похоже, android:requiresSmallestWidthDp вообще не используется при фильтрации в Google Play. К нему применяются только android:smallScreens, android:normalScreens, android:largeScreens и android:xlargeScreens.

Я сделал следующие тесты:


<supports-screens
    android:smallScreens="false"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"/>

or

<supports-screens
    android:smallScreens="false"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"
    android:requiresSmallestWidthDp="360"/>

введите здесь описание изображения

<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"/>

or

<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"
    android:requiresSmallestWidthDp="360"/>

введите здесь описание изображения

добавлено всего 65 устройств


Вы можете попробовать поиграть с ‹совместимыми-экранами›

ОПИСАНИЕ:

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

Система Android не читает элемент манифеста (ни во время установки, ни во время выполнения). Этот элемент носит исключительно информационный характер и может использоваться внешними службами (такими как Google Play), чтобы лучше понять совместимость приложения с определенными конфигурациями экрана и включить фильтрацию для пользователей. Любая конфигурация экрана, не объявленная в этом элементе, является экраном, с которым приложение несовместимо. Таким образом, внешние сервисы (например, Google Play) не должны предоставлять приложение на устройства с такими экранами.

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

person gio    schedule 28.12.2014
comment
Джио, спасибо за ответ, но я пытался, но все равно не понимаю. Пожалуйста, посмотрите обновление, если вы можете мне помочь. - person donnadulcinea; 28.12.2014
comment
@donnadulcinea похоже, что вы не сможете сделать это с ‹supports-screens›, смотрите обновление - person gio; 28.12.2014
comment
Мне кажется полная лажа, в compatible screens говорят: если вы хотите установить только минимальный размер экрана для своего приложения, то вам следует использовать элемент ‹supports-screens›. Что.. не работает. - person donnadulcinea; 29.12.2014