为什么更新后的应用程序不兼容平板电脑

8
我有一个应用程序已经发布了2年,同时也支持平板电脑。我有一个Asus Transformer平板电脑,用于进行平板电脑测试。在我进行更新之前,该应用程序是与平板设备兼容的。最近一次更改中,我在Android清单文件中仅更改了应用程序版本号和应用程序版本字符串。其他所有内容都与以前完全相同。然而,在更新后,当我在Google Play中搜索应用程序时,应用程序不会出现。在平板电脑上通过浏览器查看应用程序时,它会显示“您的设备与此版本不兼容”。
既然没有修改权限,这个新版本怎么可能与平板电脑不兼容呢?在Android开发者控制台中查看我的应用程序时,它显示支持2,673个设备,并且排除0个设备(没错,是零个设备)。那么,如果是这样,我怎么可能收到不兼容信息呢?此外,在受支持设备列表中,我的Asus平板电脑也被列在其中。
请注意,应用程序大小仅为1.19 MB,实际上我有两个可执行文件,但另一个可执行文件专门针对Android 1.5及以下版本,其版本代码为0300800,因此低于支持Android 1.6及以上版本的可执行文件(使用兼容包)。
此外,当我使用ADB连接电脑时,可以将应用程序直接加载到平板电脑上。我之所以现在才意识到这个问题,是因为我收到了一些平板电脑用户的电子邮件,他们说他们收到与我相同的消息,只是他们的平板电脑不同于我的。
以下是我的清单文件(再次说明,除版本号外未作更改)。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="my_package"
  android:versionCode="0400921"
  android:versionName="9.2.1"
  android:installLocation="auto">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<supports-screens android:anyDensity="true"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".App"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

<activity android:name=".Activity1" android:label="Activity1"></activity>
<more activities>

</application>
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="8" />


只是猜测,但是尝试移除“supports-screens”然后再试一次。 - j.holetzeck
感谢J。我删除了<supports-screen>标签,并将<uses-sdk>标签移动到<application>标签上方(他人的建议),但在发布应用程序更新后仍然收到相同的消息。而且,在没有任何问题的情况下,我直接将应用程序加载到了我的平板电脑上。 - Michael
同样的问题,没有支持屏幕和用户特性。 - Kirill Kulakov
我遇到了同样的问题,我的两个应用在Google Play上声称不支持Nexus 10。根据开发者控制台,Nexus 10是受支持的 :/ - Freddroid
尝试在新的开发者控制台中添加平板电脑(7英寸和10英寸是一个相当新的选项)的屏幕截图可能会有所帮助。 - Athul Harikumar
你知道 uses-sdk 默认值是否有问题吗?也许尝试设置一个非常低的最小值和非常高的最大值? - ToBe
1个回答

5
我联系了谷歌并让他们研究这个问题。他们发现有一系列的问题。首先,他们说是新的开发者控制台变得更加严格,老的控制台则相对宽松。他们说我的旧清单文件在旧的开发者控制台中可以工作,但从技术上讲,旧清单文件实际上没有为平板电脑指定信息。
因此,我更新了我的清单文件,并且现在使用平板电脑的用户可以在 Google Play 中访问该应用程序:
<?xml version="1.0" encoding="utf-8"?>

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="10" />

<compatible-screens>
     <screen android:screenSize="large" android:screenDensity="480" />
     <screen android:screenSize="xlarge" android:screenDensity="480" />

    <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" />

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

    <!-- Special case for Nexus 7 -->
    <screen android:screenSize="large" android:screenDensity="213" />

</compatible-screens>

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".App"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    <activity android:name=".Activity1" android:label="Activity1"></activity>
        </application>

</manifest>

此外,他们建议使用supports-screens而不是compatible-screens以扩展兼容性。

1
我也遇到了同样的问题。你尝试使用 supports-screen 标签了吗? - Snake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接