web-dev-qa-db-de.com

Laden Sie Berichte ab "Ihr Gerät ist mit dieser Version nicht kompatibel", aber es wird über adb auf Nexus7 installiert

Ich habe eine App, die ich für eine private Google Play-Beta veröffentlicht habe. Ich kann genau das gleiche APK auf meinem Nexus 7 installieren 

adb pm install 

aber durch den Google Play Store wird es für genau das gleiche Nexus7 als markiert

Your device isn't compatible with this version.

Dies ist das gleich apk. Ich kann nicht herausfinden, wie man Informationen darüber erhält, warum der Play Store der Meinung ist, dass er nicht kompatibel ist.

Mein Manifest sieht so aus:

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

Wie können Sie feststellen, warum Google Play der Ansicht ist, dass es nicht kompatibel ist?

11
spartygw

Das ist völlig korrekt. Siehe hierzu die offizielle Dokumentation hier http://developer.Android.com/guide/topics/manifest/uses-feature-element.html .

Das ist der relevante Teil:

Deklarierte <uses-feature>-Elemente dienen nur zu Informationszwecken. Dies bedeutet, dass das Android-System vor dem Installieren einer Anwendung nicht nach Unterstützung für übereinstimmende Funktionen auf dem Gerät sucht. Andere Dienste (z. B. Google Play) oder Anwendungen können jedoch die <uses-feature>-Deklarationen Ihrer Anwendung im Rahmen der Handhabung oder Interaktion mit Ihrer Anwendung prüfen. Aus diesem Grund ist es sehr wichtig, dass Sie alle Funktionen (aus der Liste unten) deklarieren, die Ihre Anwendung verwendet.

Die Tatsache, dass Sie den apk über adb installieren können, ist also kein Beweis dafür, dass ein bestimmtes Gerät ausgefiltert wird oder nicht.

Überprüfen Sie auch hier: http://developer.Android.com/guide/topics/manifest/uses-permission-element.html

In einigen Fällen können die von Ihnen angeforderten Berechtigungen beeinflussen, wie Ihre Anwendung von Google Play gefiltert wird.

Wenn Sie eine hardwarebezogene Erlaubnis anfordern, z. B. CAMERA, geht Google Play davon aus, dass Ihre Anwendung die zugrunde liegende Hardwarefunktion benötigt, und filtert die Anwendung nach Geräten, die diese nicht bieten.

Update: Sie haben bestätigt, dass Sie den Nexus 7 2012 verwenden. Weitere Informationen finden Sie in diesem offiziellen Blogpost: http://Android-developers.blogspot.ch/2012/07/getting- your-app-ready-for-jelly-bean.html .

Google gibt an, dass "Apps, die die Android.hardware.camera-Funktion benötigen, auf Nexus 7 nicht verfügbar sind".

Wenn Sie diese Berechtigung benötigen, weil Sie die Kamera in Ihrer App verwenden, können Sie dies programmgesteuert tun, wie unter http://developer.Android.com/guide/topics/media/camera.html#detect-camera erläutert.

6
fasteque

Dies ist ein paar Mal mit meiner App passiert. Es stellte sich heraus, dass die Kamera diesen Fehler verursacht hat, als der Benutzer des Geräts die Kamera seit dem Kauf nie benutzt hatte.

Ich ändere die Kameraanforderung, um von den folgenden Bedingungen nicht verlangt zu werden:

<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

Dies kann passieren, wenn Sie unnötige Berechtigungen vergeben.

in meinem Fall verwende ich die Erlaubnis 

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

Wenn ich diese Erlaubnis entferne, funktioniert es gut

0
Areeba Qurashi

Sie sollten diesen Link von Reto Meier lesen/folgen.

Wie in dem Link von nun an gesagt, müssen Sie Ihre App-Funktionen angeben.

Im Grunde ist es eine schnelle Lösung, aapt dump badging {your apk} auszuführen und zu überprüfen, welche Funktionen Ihre App verwendet. Fügen Sie dann diejenigen hinzu, die die Verwendbarkeit der App nicht beeinträchtigen, zu Ihrem Manifest, wobei das erforderliche Feld auf "false" gesetzt ist. e.g. <uses-feature Android:name="Android.hardware.camera" Android:required="false" />

Das sollte genug sein.

0
manuelvsc