播放商店报告“您的设备与此版本不兼容”,但它通过adb安装在Nexus7上很好

我有一个应用程序,我发布到一个私人的Google Playtesting版。 我可以安装这完全相同的APK到我的Nexus 7就好了

adb pm install

但是通过Google Play商店,它与Nexus7完全相同

Your device isn't compatible with this version.

这是相同的 apk。 我无法弄清楚如何得到关于Play商店为什么认为它不兼容的任何信息。

我的清单看起来像这样:

 <uses-sdk android:minSdkVersion="10" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.CAMERA"></uses-permission> <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".foobar" 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> <service android:name=".fooservice" android:exported="false" android:enabled="true" android:label="@string/app_name" android:icon="@drawable/icon"> </service> </application> 

有什么帮助确定为什么Google Play认为它不兼容?

Solutions Collecting From Web of "播放商店报告“您的设备与此版本不兼容”,但它通过adb安装在Nexus7上很好"

这是完全正确的行为:请参阅这里的官方文档http://developer.android.com/guide/topics/manifest/uses-feature-element.html

这是相关的部分:

宣称的<uses-feature>元素仅仅是信息性的,这意味着Android系统本身在安装应用程序之前不检查设备上的匹配特征支持。 但是,其他服务(如Google Play)或应用程序可能会检查您的应用程序的<uses-feature>声明,作为处理或与您的应用程序交互的一部分。 出于这个原因,声明应用程序使用的所有function(从下面的列表)是非常重要的。

所以你能够通过adb安装apk的事实并不是一个特定的设备被滤除的证据。

另外,请点击此处: http : //developer.android.com/guide/topics/manifest/uses-permission-element.html

在某些情况下,您通过请求的权限可能会影响您的应用程序被Google Play过滤的方式。

如果您请求与硬件相关的权限(例如CAMERA),则Google Play会假定您的应用程序需要基础硬件function,并从不提供该应用程序的设备过滤该应用程序。

更新:您已经确认您使用的是Nexus 7 2012,所以请参阅以下官方博客文章: http : //android-developers.blogspot.ch/2012/07/getting-your-app-ready-for-果冻豆 。

Google声明:“需要android.hardware.camerafunction的应用程序在Nexus 7上将无法使用”。

如果因为在应用程序中使用相机而需要该权限,则可以按照http://developer.android.com/guide/topics/media/camera.html#detect-camera中的说明以编程方式执行此操作&#x3002;

这发生在我的应用程序几次。 事实certificate,相机的要求是造成这个错误,当设备用户从来没有使用相机,因为购买。

我改变了相机的要求不被以下要求:

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

您应该阅读/关注Reto Meier的链接 。

正如在从现在起的链接中说,你需要指定你的应用程序function。

基本上,一个快速的解决scheme是运行aapt dump badging {你的apk},并validation你的应用程序正在使用哪些function。 然后将不影响应用程序可用性的那些添加到您的清单中,必填字段设置为false。 eg <uses-feature android:name="android.hardware.camera" android:required="false" />

这应该够了。