祝您有美好的一天,我正在尝试将屏幕尺寸限制为仅在Google Play中为听筒(即不是平板电脑)。找到此article后,将其添加到 list 文件中:

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

但看来现在使用5.5++英寸手机的用户无法安装我的应用程序。接下来,我还发现了这个article和其中的图片:

android - Android中的&lt;compatible-screens&gt;-LMLPHP

我的第一个问题-是否可以通过特定的英寸值来限制屏幕尺寸,或者我只能使用诸如small,normal,large和xlarge之类的标签?

在某个时候,我决定通过更新 list 将支持英寸的大小增加到7:
<compatible-screens>
    <!-- all small size screens -->
    <screen android:screenSize="small" android:screenDensity="ldpi" />
    <screen android:screenSize="small" android:screenDensity="mdpi" />
    <screen android:screenSize="small" android:screenDensity="hdpi" />
    <screen android:screenSize="small" android:screenDensity="xhdpi" />
    <!-- all normal size screens -->
    <screen android:screenSize="normal" android:screenDensity="ldpi" />
    <screen android:screenSize="normal" android:screenDensity="mdpi" />
    <screen android:screenSize="normal" android:screenDensity="hdpi" />
    <screen android:screenSize="normal" android:screenDensity="xhdpi" />
    <!-- all large size screens -->
    <screen android:screenSize="large" android:screenDensity="ldpi" />
    <screen android:screenSize="large" android:screenDensity="mdpi" />
    <screen android:screenSize="large" android:screenDensity="hdpi" />
    <screen android:screenSize="large" android:screenDensity="xhdpi" />
</compatible-screens>

但是使用5.5英寸手机甚至5.2英寸手机的用户仍无法安装应用程序。

因此,我的第二个问题-我做错了什么或不理解?

我诚实地阅读了关于stackoverflow的所有类似问题以及android文档中的文章,但没有找到正确的答案。谢谢。

最佳答案

您似乎试图将屏幕尺寸限制为仅手机,而不是平板电脑。很难分辨出您的问题,但是我认为无论哪种方式,我都可以消除困惑。

在 list 中声明<compatible-screens>时,必须声明希望与应用程序兼容的每个屏幕配置:



我怀疑您提到的5.5英寸以上的电话的密度比xhdpi高;例如xxhdpixxxhdpi。这些密度已从文档中省略(因为文档已过时或不完整),但仍然有意义。它们记录在 <compatible-screens> 页面上。

因此,如果您希望您的应用程序与更高密度的设备兼容,则必须在<compatible-screens>元素中包括这些密度。但是更简单的方法是改为使用<supports-screens>元素。根据文档,<supports-screens>元素未考虑密度:



这样,您就可以在 list 中指定以下内容:

<supports-screens android:smallScreens="true"
                  android:normalScreens="true"
                  android:largeScreens="false"
                  android:xlargeScreens="false"
                  android:largestWidthLimitDp="840"/>
largestWidthLimitDp属性不是必需的,但是根据density breakpoints的 Material 设计文档,对于手机来说840dp似乎是一个很好的限制。

否则,如果您想对应用程序兼容的设备进行更精细的控制,则仍然可以使用<compatible-screens>标记:
<compatible-screens>
    <!-- all small size screens -->
    <screen android:screenSize="small" android:screenDensity="ldpi" />
    <screen android:screenSize="small" android:screenDensity="mdpi" />
    <screen android:screenSize="small" android:screenDensity="hdpi" />
    <screen android:screenSize="small" android:screenDensity="xhdpi" />
    <screen android:screenSize="small" android:screenDensity="xxhdpi" />
    <screen android:screenSize="small" android:screenDensity="xxxhdpi" />
    <!-- all normal size screens -->
    <screen android:screenSize="normal" android:screenDensity="ldpi" />
    <screen android:screenSize="normal" android:screenDensity="mdpi" />
    <screen android:screenSize="normal" android:screenDensity="hdpi" />
    <screen android:screenSize="normal" android:screenDensity="xhdpi" />
    <screen android:screenSize="normal" android:screenDensity="xxhdpi" />
    <screen android:screenSize="normal" android:screenDensity="xxxhdpi" />
</compatible-screens>

10-08 16:40