祝您有美好的一天,我正在尝试将屏幕尺寸限制为仅在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和其中的图片:
我的第一个问题-是否可以通过特定的英寸值来限制屏幕尺寸,或者我只能使用诸如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
高;例如xxhdpi
或xxxhdpi
。这些密度已从文档中省略(因为文档已过时或不完整),但仍然有意义。它们记录在 <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>