【问题标题】:Supporting Multiple Screens - usage of <compatible-screens>支持多个屏幕 - <compatible-screens> 的使用
【发布时间】:2017-09-25 02:58:16
【问题描述】:

我很难理解如何让我的应用在某些设备上可用,但不包括其他设备。我有 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 支持比第 1 版更少的设备,尽管我添加了更多兼容的屏幕!!! 请帮助我理解我做错了什么?基本上,无论密度如何,我都需要支持所有可能的正常屏幕尺寸;大 MDPI 和 HDPI 以及超大 MDPI。

【问题讨论】:

    标签: android google-play android-manifest screen-density


    【解决方案1】:

    您排除电视的代码是我猜的罪魁祸首,电视应用只能通过使用 Leanback Intent 库(默认情况下禁用)来支持。

    通过强制触摸屏,您只消除了少数设备(包括那些运行手机版安卓的廉价安卓电视盒)

    【讨论】:

      【解决方案2】:

      听起来你根本不应该使用&lt;compatible-screens&gt;

      来自文档:

      警告:通常,您不应使用此清单元素。使用此元素可以显着减少应用程序的潜在用户群,因为如果用户的设备具有您未列出的屏幕配置,则不允许他们安装您的应用程序。当应用程序绝对不能使用特定的屏幕配置时,您应该仅将其用作最后的手段。

      您说“无论密度如何,我都需要支持所有可能的正常屏幕尺寸”。如果这意味着您必须排除 small 屏幕尺寸,您可以改用&lt;supports-screens&gt; 元素。类似的东西

      <supports-screens
          android:smallScreens="false"/>
      

      【讨论】:

      • 我考虑过这一点,但我还必须排除大型 XHD​​PI + XXHDPI 并且还必须排除 X-large HDPI、XHDPI 和 XXHDPI...我确实阅读了有关 的文档但是当涉及到某些特定密度的屏幕尺寸必须包含但其他屏幕尺寸被排除的特殊情况时,没有其他选择。
      • 为什么要排除这些?我之所以这么问,是因为我发现,刚接触 Android 的开发人员通常会以非常严格的术语来考虑屏幕……而正确的“答案”通常就是不要再担心如果有人用大手机获取您的应用程序会发生什么。
      • 我正在使用带有很多图形的 SurfaceView,这些图形在非常大的手机/平板电脑中看起来很小。我提供了几乎足够的可绘制对象来覆盖普通屏幕,它们在大屏幕上看起来还不错,但不是全部。
      【解决方案3】:

      在研究了两天后(为我花了这么长时间感到羞耻),我查看了 Android Studio 中的 AVD 管理器,发现 Nexus 7 与我的 Acer Iconia 具有相同的规格,被认为是大型的, 不正常。 一旦我改变了

      <screen   android:screenSize="normal"  android:screenDensity="213"/>
      

      到:

      <screen   android:screenSize="large"  android:screenDensity="213"/>
      

      并将新的 APK 上传到 Play 商店,我的平板电脑终于可以兼容该应用了。我希望有一天,当他们无法弄清楚为什么他们的 tvdpi 平板电脑被认为与他们的应用程序不兼容时,这对他们有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-26
        • 1970-01-01
        相关资源
        最近更新 更多