更新后,APK支持的设备比以前少

时间:2012-11-30 11:54:25

标签: android android-manifest android-2.3-gingerbread android-2.2-froyo zbar

我有一个相对简单的应用程序,已经在谷歌的Play商店中。

现在我已经更新了这个应用程序。 此更新的一点是我包含了ZBar-Scanner。其余的变化很小,不应该对我的问题产生任何影响。

我只是将我应用程序的最新版本放在Play-Store中,我收到以下警告: “警告:有效的APK支持的设备少于之前有效的APK。有些用户不会收到更新。”

我从sourceforge.net(http://sourceforge.net/projects/zbar/files/AndroidSDK/)下载了ZBarAndroidSDK-0.2.zip,并将其导入我的项目,如README-File中所述。

我在我的HTC Wildfire S( - >版本2.3.5),三星Galaxy 3(GT-I5800 - >版本2.2)和我的Galaxy Nexus( - >版本4.2)上测试了我的应用本地。从来没有一个问题。一切正常。 我还测试了导出的APK并且没有问题。

现在我将此APK添加到Play-Store并更新了我的应用程序,我收到了测试设备的警告。我的HTC Wildfire和三星Galaxy 3都无法更新新版本。

有人可以帮我解释一下这个问题吗?

非常感谢!!!

修改

我的宣言:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.myproject"
android:versionCode="5"
android:versionName="2.0" 
android:installLocation="preferExternal"
>

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

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>

<application
    android:uiOptions="splitActionBarWhenNarrow"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    >

    <!-- enable the search dialog to send searches to SearchableActivity throughout the application -->
    <meta-data
        android:name="android.app.default_searchable"
        android:value=".SearchableActivity" />

    <activity
        android:label="@string/app_name"
        android:name=".MainActivity" 
        android:screenOrientation="portrait"
        android:theme="@style/Theme.NoBackground">                                  

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

    <activity
        android:label="@string/app_name"
        android:screenOrientation="landscape"
        android:name=".zbar.ZBarScannerActivity">                            
    </activity>

</application>

ZBar的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="net.sourceforge.zbar.android.CameraTest"
  android:versionCode="1"
  android:versionName="1.0">

<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

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

2 个答案:

答案 0 :(得分:3)

首先,所使用设备的任何更改都必须是清单的结果。这是Android市场(Google Play)用来确定应用可以使用的设备的唯一内容。如您所示,一个区别是您需要自动对焦。如果将此行更改为以下内容,则应该可以正常工作。

<uses-feature android:name="android.hardware.camera.autofocus" android:required="false">

基本上,这将允许您使用该功能,但不能使其成为必需。这应该允许与以前的所有设备完全兼容。有关详细信息,请参阅this answer

我还应该注意,我看到主应用程序不需要相机,但是zbar需要。这也可能有所不同。

答案 1 :(得分:1)

我的应用程序(使用Zbar扫描仪)在平板电脑上遇到了这个问题 Zenithink C93 http://www.zenithink.com/Eproducts_C93.php)。我需要创建与Zenithink设备兼容的应用程序。

我在Google的Play-Store中发布了应用程序。当我尝试在Zenithink C93上安装应用程序时出现错误:“此项与您的设备不兼容

我的清单有这一行:

<uses-feature android:name="android.hardware.camera.autofocus" android:required="false">

但它对我没有帮助。

我也有这个支持屏幕标签:

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

奇怪的是,经过长时间的搜索解决方案后,我完全删除了support-screens标签并将<uses-feature android:name="android.hardware.camera"/>应用程序的android:required =“false”变为与Zenithink设备兼容。

现在我的Manifest看起来像这样:

...
<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="15"/>  

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>

<application...

这个不是一个好的解决方案,因为应用程序几乎可以与所有设备兼容,但也许它可以帮助某人。