1

我已经在 google play 中发布了一个应用程序,并且某些设备显示为不受支持,例如 Nexus 5、Galaxy S5 等等。

我在我的 AndroidManifest.xml 中提到了仅适用于小尺寸和普通尺寸屏幕的过滤器,如下面的链接所示

http://developer.android.com/guide/practices/screens-distribution.html#FilteringHandsetApps

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

有人可以建议还需要添加什么来获得支持列表中的设备,我怀疑这些设备的密度更高。

4

2 回答 2

1

我只是有一个类似的问题。我想发布一个只能在智能手机上下载的应用程序。稍后我将介绍平板电脑支持。所以我需要一个过滤器,让我的应用程序仅适用于智能手机。该应用程序无法安装在 Nexus 5 或 Galaxy S5 上。

为了解决这个问题,我按照开发文档(屏幕分发)中的建议进行了操作(另请参阅 stackoverflow 上的答案):

<manifest ... >
    <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>
    ...
    <application ... >
        ...
    <application>
</manifest>

但这还不够。不支持某些 xxhdpi 设备。您可能想复制/粘贴最后一行并添加“xxhdpi”,但 tt 不起作用(我刚刚测试过,APK 签名失败并出现以下错误:“错误 APT0000:不允许字符串类型(在 'screenDensity'值为'xxhdpi')") ;)

要支持 xxhdpi,请查看开发文档(兼容屏幕元素)

注意:此属性当前不接受 xxhdpi 作为有效值,但您可以指定 480 作为值,这是 xhdpi 屏幕的近似阈值。

因此,您需要添加480,而不是 xxhdpi,如下所示:

<screen android:screenSize="small" android:screenDensity="480" />
<screen android:screenSize="normal" android:screenDensity="480" />

现在,回到不支持的Nexus 5Galaxy S5 。让我们检查一些规格:

LG Nexus 5http ://www.gsmarena.com/lg_nexus_5-5705.php

  • 屏幕尺寸为 4.95 英寸。
  • 密度:445 ppi

三星 Galaxy S5http ://www.gsmarena.com/samsung_galaxy_s5-6033.php

  • 屏幕尺寸:5.1英寸
  • 密度:432 ppi

所以根据开发文档(屏幕支持)

Android 如何将实际尺寸和密度大致映射到广义尺寸和密度(数字不准确)

图 1. Android 如何将实际尺寸和密度粗略映射到通用尺寸和密度的图示(数字不准确)。

正如您在上图中所见,4 到 5 英寸之间有点“棘手”(如果我错了请评论),因为屏幕可以是“正常”或“大”。所以基本上为了安全起见,我不得不添加对大的支持:

<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" />
<screen android:screenSize="large" android:screenDensity="480" />

我刚刚在 Play 商店进行了测试,我的同事拥有 Nexus 5 能够下载该应用程序。像这样,无论如何,一些小型平板电脑或平板电脑(屏幕尺寸在 4 到 7 英寸之间)仍然可以下载我的应用程序,但至少最新的 xlarge 屏幕(大于 7 英寸)平板电脑不会。就我而言,这是可以接受的……希望这会有所帮助……</p>

…如果我对 4 到 5 英寸之间的区域有误,请发表评论,这对我来说不是很清楚。哪个是正常的还是大的……</p>

于 2015-06-30T09:29:21.793 回答
0

尝试<supports-screens>在清单中包含元素,以<compatible-screens>定义您的应用支持的特定屏幕,但<supports-screens>定义您的应用支持的屏幕的较低阈值(即也支持更大的屏幕)。

于 2014-07-11T05:58:46.060 回答