Play商店报告“您的设备与此版本不兼容”,但它可以通过adb在Nexus7上正常安装

问题描述 投票:12回答:4

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

adb pm install

但是通过Google Play商店,它标记为与此完全相同的Nexus7

Your device isn't compatible with this version.

这是相同的apk。我无法弄清楚如何获得有关游戏商店认为它不兼容的原因的任何信息。

我的清单看起来像这样:

<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认为不兼容的原因的任何帮助吗?

android adb nexus-7 google-play
4个回答
7
投票

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

这是相关部分:

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

因此,您可以通过adb安装apk的事实并不能证明特定设备是否被过滤掉。

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

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

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

更新:您已确认使用的是Nexus 7 2012,请参阅此官方博客文章:http://android-developers.blogspot.ch/2012/07/getting-your-app-ready-for-jelly-bean.html

谷歌声称“需要android.hardware.camera功能的应用程序将无法在Nexus 7上使用”。

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


4
投票

这发生在我的应用程序中几次。事实证明,当设备用户从购买后从未使用过相机时,相机要求会导致此错误。

我将相机要求改为以下要求:

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

0
投票

你应该阅读/关注这个link from Reto Meier

如前所述链接中所述,您需要指定您的应用功能。

基本上,快速解决方案是运行aapt dump badging {your apk}并验证您的应用正在使用哪些功能。然后将必需字段设置为false的不会影响应用程序可用性的那些添加到清单中。 e.g. <uses-feature android:name="android.hardware.camera" android:required="false" />

那应该够了。


0
投票

当您提供不必要的权限时,这可能会发生。

在我的情况下,我使用权限

uses-feature android:name =“com.sec.feature.spen_usp”android:required =“true”

当我删除此权限,然后它工作正常

© www.soinside.com 2019 - 2024. All rights reserved.