Android应用突然与设备不兼容

时间:2013-05-28 15:42:44

标签: android google-play

我的Android应用已经在Google Play商店中存在了大约两年(https://play.google.com/store/apps/details?id=dkh.idex),API级别为7+,并支持所有屏幕尺寸。它使用一些权限(ACCESS_NETWORK_STATE,INTERNET,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE)。

2013年4月22日,我上传了一个版本(版本代码44),该版本在我的所有用户设备上运行良好。一个月后,在2013年5月22日,我上传了一个新版本并进行了一些细微的更改(版本代码45),但是过去几天(从5月27日开始),很多用户向我抱怨他们的设备不再与我的应用程序的最新版本。这些用户使用该应用程序长达两年没有这样的问题。有些设备仍然能够升级到最新版本,但其他设备在尝试升级时会收到设备不兼容的消息(请注意,他们已经有了旧版本的应用程序)。我能够通过ADB(USB)直接在一台设备上安装该应用程序,该设备称其在Google Play商店中不兼容(三星Galaxy Tab 10.1,旧版本)。

我查看了我的文件的更改集,并且我在两个版本之间在AndroidManifest.xml中所做的唯一更改是更新版本代码和版本号。我没有更改任何使用权限,支持的屏幕大小,支持的API级别,甚至没有添加任何活动或更改了调试设置。

这是我的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="dkh.idex"
  android:versionName="3.2.11" android:versionCode="45">

<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true" />

<uses-sdk android:minSdkVersion="7"/>

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application android:name="dkh.classes.MyApp" android:label="@string/app_name"    android:debuggable="false" android:icon="@drawable/ic_launcher_idex_v3">
    <activity android:name=".idex"
              android:label="@string/app_name"
              android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Form2"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:configChanges="orientation">

    </activity>
    <activity android:name=".InfoForm"
        android:label="@string/app_name"
        android:screenOrientation="portrait">

    </activity>
    <activity android:name=".INSTAForm"
        android:label="@string/app_name"
        android:launchMode="standard"
        android:screenOrientation="portrait">
    </activity>
    <activity android:name=".HygieneForm"
        android:label="@string/app_name"
        android:screenOrientation="portrait">

    </activity>
    <activity android:name=".CommentForm"
        android:label="@string/app_name"
        android:screenOrientation="portrait">

    </activity>
    <activity android:name=".AddReqChooseForm"
        android:label="@string/app_name"
        android:screenOrientation="portrait">

    </activity>
    <activity android:name=".AddReqForm"
        android:label="@string/app_name"
        android:screenOrientation="portrait">

    </activity>
    <activity android:name=".FTPForm" android:label="@string/app_name" android:screenOrientation="portrait"></activity>
    <activity android:name=".SyncForm" android:label="@string/app_name" android:screenOrientation="portrait"></activity>
    <activity android:name=".DrawTestForm" android:label="@string/app_name"  android:configChanges="keyboardHidden|orientation"></activity>
    <activity android:name="StatisticsForm" android:screenOrientation="portrait" android:label="@string/app_name"></activity>
    <activity android:name="PhotoGallery" android:screenOrientation="portrait" android:label="@string/app_name"></activity>
    <activity android:name="PhotoView" android:label="@string/app_name"></activity>
    <activity android:name="ParametersForm" android:label="@string/app_name" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan"></activity>
    <activity android:name="PropertiesForm" android:label="@string/app_name" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan"></activity>
    <activity android:screenOrientation="portrait" android:name="InspectionChangeForm" android:label="@string/app_name"></activity>
    <activity android:name="AdvancedSyncWindow" android:label="@string/app_name" android:screenOrientation="portrait"></activity>
    <service android:process=":image_process" android:name=".ImageUploadService"></service>
    <activity android:name=".HelpWindow" android:label="@string/app_name"></activity>
    <activity android:name="RecoverView"></activity>
    <activity android:name="InspectionCommentForm" ></activity>

</application>
</manifest> `

在我的其余代码中,我已经在我的资源文件中添加了一些文本并进行了一些标准的微小更改,但是某些形式的应用程序中没有任何内容。

我对这个问题感到很困惑。有谁知道这可能是什么原因或知道谷歌是否改变了可能对此有影响的任何事情?请询问您是否需要更多信息。

1 个答案:

答案 0 :(得分:0)

我解决了。

问题是Google Play会根据设备屏幕大小过滤应用程序,并且由于API 7(版本2.1)不支持xlargeScreens,因此这些设备上的过滤器将设置为false。 直到5月底才实施。我的应用程序已使用完全相同的规格两年,但我怀疑Google Play已更新以强制执行此约束。

解决方案:如果你有一个为API 7开发的应用程序,但是你希望它在xlargeScreens设备上可用,你必须在清单中设置

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="9" />

如果minSdkVersion或targetSdkVersion为9或更大,Google Play将允许xlargeScreen设备查看您的应用。