我有一个相对简单的应用程序,已经在谷歌的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>
答案 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...
这个不是一个好的解决方案,因为应用程序几乎可以与所有设备兼容,但也许它可以帮助某人。