web-dev-qa-db-fra.com

Rapports du Play Store "Votre appareil n'est pas compatible avec cette version" mais il s'installe très bien via adb sur Nexus7

J'ai une application que j'ai publiée sur une version bêta privée de Google Play. Je peux installer exactement ce même APK sur mon Nexus 7 avec 

adb pm install 

mais à travers le Google Play Store, il est marqué pour ce même Nexus7 exactement

Your device isn't compatible with this version.

C'est le même apk. Je n'arrive pas à comprendre comment obtenir des informations sur les raisons pour lesquelles le Play Store considère qu'il n'est pas compatible.

Mon manifeste ressemble à ceci:

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

Aucune aide pour déterminer pourquoi Google Play pense qu'il n'est pas compatible?

11
spartygw

C’est tout à fait correct ce comportement: veuillez vous reporter à la documentation officielle ici http://developer.Android.com/guide/topics/manifest/uses-feature-element.html .

C'est la partie pertinente:

Les éléments <uses-feature> déclarés sont uniquement informatifs, ce qui signifie que le système Android lui-même ne vérifie pas la prise en charge de la fonctionnalité correspondante sur le périphérique avant d'installer une application. Cependant, d'autres services (tels que Google Play) ou des applications peuvent vérifier les déclarations <uses-feature> de votre application dans le cadre du traitement ou de l'interaction avec votre application. Pour cette raison, il est très important que vous déclariez toutes les fonctionnalités (de la liste ci-dessous) utilisées par votre application.

Donc, le fait que vous puissiez installer l'apk via adb n'est pas une preuve pour qu'un périphérique particulier soit filtré ou non.

Aussi, vérifiez ici: http://developer.Android.com/guide/topics/manifest/uses-permission-element.html

Dans certains cas, les autorisations demandées peuvent affecter le filtrage de votre application par Google Play.

Si vous demandez une autorisation liée au matériel, par exemple CAMERA, Google Play suppose que votre application nécessite la fonctionnalité matérielle sous-jacente et la filtre des appareils qui ne l'offrent pas.

Mise à jour: vous confirmez que vous utilisez le Nexus 7 2012, merci de vous référer à cet article officiel du blog: http://Android-developers.blogspot.ch/2012/07/getting- votre-application-prêt-pour-jelly-bean.html .

Google indique que "les applications nécessitant la fonctionnalité Android.hardware.camera ne seront pas disponibles sur Nexus 7".

Si vous avez besoin de cette autorisation parce que vous utilisez l'appareil photo dans votre application, vous pouvez le faire par programme, comme expliqué dans http://developer.Android.com/guide/topics/media/camera.html#detect-camera .

6
fasteque

Cela est arrivé à mon application à quelques reprises. Il s'est avéré que la configuration requise pour l'appareil photo était à l'origine de cette erreur, alors que l'utilisateur du périphérique n'avait jamais utilisé l'appareil photo depuis son achat.

Je change l'exigence de la caméra pour ne pas être requis par ce qui suit:

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

Cela peut se produire lorsque vous accordez des autorisations inutiles.

dans mon cas, j'utilise la permission 

use-feature Android: name = "com.sec.feature.spen_usp" Android: required = "true"

Quand je supprime cette permission alors ça marche bien

0
Areeba Qurashi

Vous devriez lire/suivre ce lien de Reto Meier .

Comme indiqué dans le lien à partir de maintenant, vous devez spécifier les fonctionnalités de votre application.

Fondamentalement, une solution rapide consiste à exécuter aapt dump badging {votre apk} et à vérifier les fonctionnalités utilisées par votre application. Ajoutez ensuite ceux qui n’affectent pas la convivialité de votre application à votre manifeste avec le champ obligatoire défini sur false. e.g. <uses-feature Android:name="Android.hardware.camera" Android:required="false" />

Cela devrait suffire.

0
manuelvsc