为什么App在更新后与平板电脑不兼容

时间:2013-03-31 18:41:27

标签: android google-play

我有一个已经推出超过2年的应用程序,并且只要有平板电脑就可以支持平板电脑。我有一台用于平板电脑测试的华硕Transformer平板电脑。在我进行更新之前,该应用与平板电脑设备兼容。对于我最近的一组更改,我在Android Manifest文件中只更改了应用版本号和应用版本字符串。其他一切与以前完全一样。但是,在更新后,当我在Google Play中搜索该应用时,该应用不会显示。当我在平板电脑上的浏览器中查看应用程序时,它显示“您的设备与此版本不兼容。”

如果没有修改权限,这个新版本究竟与平板电脑不兼容?当我查看我的应用程序时,在Android Developer Console内部,它表示支持2,673个设备,它表示排除了0个设备(这是正确的,零设备)。好吧,如果这是真的,我怎么可能得到不兼容的消息?此外,当我查看支持的设备列表时,我的华硕平板电脑就在那里。

请注意,应用程序大小仅为1.19 MB,而且我实际上有2个可执行文件用于同一个应用程序,但另一个可执行文件专门用于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" />

1 个答案:

答案 0 :(得分:5)

我与谷歌联系,他们调查了这个问题。有一系列问题。首先,他们说切换到新的开发者控制台起了作用,因为旧的开发者控制台更宽松。他们说我的旧清单文件在旧的Devloper控制台中工作,但从技术上讲,旧的清单文件实际上没有为平板电脑指定信息。

因此,我将清单文件更新为此,现在使用平板电脑的用户可以在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>

此外,他们说使用支持屏幕而不是兼容屏幕来扩展兼容性。