Android"支持屏幕"不起作用?

don*_*nea 5 android android-screen-support

我构建了一个应用程序,我试图用小屏幕排除设备.为此,我利用了清单中的支持屏幕元素.

<supports-screens
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="false"
    android:xlargeScreens="true"
    android:requiresSmallestWidthDp="320" />
Run Code Online (Sandbox Code Playgroud)

正如开发者页面的链接所示:例如,典型的手机屏幕最小宽度为320dp.

前一天我注意到有小设备的人仍然提供差评,因为他们仍然可以下载应用程序,并且一些布局元素不会出现在屏幕上.当然,一种解决方案是调整布局,但此刻我的问题是另一个.

似乎android:requiresSmallestWidthDp属性不起作用.事实上,我试图将其设置为700或更高,只是为了进行实验,并将其加载到商店,支持的设备数量不会改变!

我还将SDK的次要版本更改为13以防止与该属性的兼容性问题:

<uses-sdk
    android:minSdkVersion="13"
    android:targetSdkVersion="19" />
Run Code Online (Sandbox Code Playgroud)

其他属性运行良好,例如,如果我删除普通屏幕,支持的设备数量会下降.

我想删除dpi低于320的设备,但我不能.我无法理解我做错了什么.

更新

有这样一句话:Google Play目前不支持此属性进行过滤(在Android 3.2上),因此如果您的应用程序不支持小屏幕,则应继续使用其他大小属性. 但:

  • 我不清楚Android 3.2+版本会发生什么.如果我将Android版本13+放在我的清单上,那么android:requiresSmallestWidthDp人们仍可以安装该应用程序,然后呢?
  • 其他大小属性是:android:compatibleWidthLimitDp,和android:largestWidthLimitDp.但他们都认为最大的"最小宽度"而不是我需要的最小宽度.

所以我的问题是,如何防止屏幕小于500像素或360 dpi的人安装我的应用程序?我可以吗?

gio*_*gio 6

来自官方消息来源

注意:Android系统不关注此属性,因此它不会影响应用程序在运行时的行为方式.相反,它用于为您的应用程序启用Google Play等服务的过滤功能.但是,Google Play目前不支持此属性进行过滤(在Android 3.2上),因此如果您的应用程序不支持小屏幕,则应继续使用其他大小属性.

更新:

看起来android:requiresSmallestWidthDp根本不用于在Google Play上过滤.只有android:smallScreens,android:normalScreens,android:largeScreensandroid:xlargeScreens申请就可以了.

我做了下一个测试:


<supports-screens
    android:smallScreens="false"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"/>
Run Code Online (Sandbox Code Playgroud)

要么

<supports-screens
    android:smallScreens="false"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"
    android:requiresSmallestWidthDp="360"/>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"/>
Run Code Online (Sandbox Code Playgroud)

要么

<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"
    android:requiresSmallestWidthDp="360"/>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

仅添加了65个设备


您可以尝试使用<compatible-screens>

描述:

指定与应用程序兼容的每个屏幕配置.清单中只允许一个元素实例,但它可以包含多个元素.每个元素指定应用程序兼容的特定屏幕大小 - 密度组合.

Android系统不会读取清单元素(既不在安装时也不在运行时).此元素仅供参考,可供外部服务(如Google Play)使用,以更好地了解应用程序与特定屏幕配置的兼容性,并为用户启用过滤.未在此元素中声明的任何屏幕配置都是与应用程序不兼容的屏幕.因此,外部服务(例如Google Play)不应将应用程序提供给具有此类屏幕的设备.

警告:通常,您不应使用此清单元素.使用此元素可以显着减少应用程序的潜在用户群,如果用户的设备具有未列出的屏幕配置,则不允许用户安装应用程序.当应用程序绝对不适用于特定的屏幕配置时,您应该仅将其用作最后的手段.您应该遵循支持多个屏幕的指南,而不是使用此元素,以使用不同的屏幕尺寸和密度的替代布局和位图为多个屏幕提供可扩展的支持.