Warum sagt der Google Play Store, dass meine Android-App nicht mit meinem eigenen Gerät kompatibel ist?

91

Ich zögere, diese Frage zu stellen, da es so aussieht, als hätten viele Menschen ein ähnliches Problem, und dennoch habe ich keine Lösung gefunden, die meine spezielle Instanz löst.

Ich habe eine Android-App ( Link zur eigentlichen App ) entwickelt und in den Play Store hochgeladen. Der Play Store sagt

"This app is incompatible with your XT Mobile Network HTC HTC Wildfire S A510b."

Das ist natürlich das Telefon, auf dem ich die App entwickelt habe, also sollte sie kompatibel sein. Einige Leute mit anderen Geräten sagen, dass es kompatibel meldet, andere sagen, dass es inkompatibel meldet, aber ich kann keinen Trend finden. (Anscheinend kenne ich nicht sehr viele Leute mit Android-Geräten.)

Ich habe folgendes versucht:

  • Verschieben einer großen Datei aus dem res/rawVerzeichnis, wie in dieser Antwort vorgeschlagen . Die einzige Datei dort war eine ~ 700-kB-Textdatei, aber ich habe sie assets/ohne erkennbare Änderung verschoben .

  • Hinzufügen der folgenden zwei Funktionszusicherungen:

    <uses-feature android:name="android.hardware.faketouch" />
    <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
    

    Ich denke, dass mein Telefon möglicherweise nicht behauptet, die übliche android.hardware.touchscreenFunktion zu unterstützen, aber ohne erkennbare Änderung.

Beim Hochladen der APK in den Play Store ist der einzige Filter, der als aktiv gemeldet wird, die android.hardware.faketouchFunktion.

Das Folgende ist die Ausgabe von aapt dump badging bin/NZSLDict-release.apk:

package: name='com.hewgill.android.nzsldict' versionCode='3' versionName='1.0.2'
sdkVersion:'4'
targetSdkVersion:'4'
uses-feature:'android.hardware.faketouch'
uses-feature-not-required:'android.hardware.touchscreen'
application-label:'NZSL Dictionary'
application-icon-160:'res/drawable/icon.png'
application: label='NZSL Dictionary' icon='res/drawable/icon.png'
launchable-activity: name='com.hewgill.android.nzsldict.NZSLDictionary'  label='NZSL Dictionary' icon=''
main
other-activities
supports-screens: 'small' 'normal' 'large'
supports-any-density: 'true'
locales: '--_--'
densities: '160'

und der Vollständigkeit halber meine Manifestdatei:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.hewgill.android.nzsldict"
      android:versionCode="3"
      android:versionName="1.0.2">
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="4" />
    <uses-feature android:name="android.hardware.faketouch" />
    <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
    <application android:label="@string/app_name"
        android:icon="@drawable/icon">
        <activity android:name="NZSLDictionary"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".WordActivity" />
        <activity android:name=".VideoActivity" />
        <activity android:name=".AboutActivity" />
    </application>
</manifest> 

Im Abschnitt "Geräteverfügbarkeit" des Play Store kann ich sehen, dass alle HTC-Geräte, einschließlich des Wildfire S, mit Ausnahme von "G1 (Forelle)" und "Touch Viva (Opal)" unterstützt werden. Eigentlich sehe ich, dass sowohl "Wildfire S (Marvel)" als auch "Wildfire S A515c (Marvelc)" als unterstützt aufgeführt sind, aber mein "Wildfire S A510b" wird nicht speziell erwähnt. Kann diese Art von Untermodellkennung so wichtig sein? Ich konnte problemlos mehrere andere Apps von Google Play auf mein Handy herunterladen.

Das einzige, was ich zu diesem Zeitpunkt noch nicht getan habe, ist, 4-6 Stunden nach dem Hochladen der neuesten Version (wie in diesem Kommentar ) zu warten , um festzustellen, ob immer noch angegeben ist, dass sie mit meinem Telefon nicht kompatibel ist. Auf der Play Store-Seite wird derzeit jedoch 1.0.2 angezeigt. Dies ist die neueste Version, die ich hochgeladen habe.

Greg Hewgill
quelle
Etwas, das mir bei Problemen mit dem Telefon sehr geholfen hat, war das Einrichten von ACRA: code.google.com/p/acra Ich habe es beim ersten Start der Anwendung ausgeführt, um die vollständigen Spezifikationen eines Telefons abzurufen und die handleSilentExceptionMethode zu verwenden, um stillschweigend zu berichten. Zumindest erfahren Sie, auf welcher Hardware die App arbeitet.
Gavin Miller
2
@ GavinMiller: Danke, aber ich bin mir nicht sicher, ob das helfen wird, wenn der Play Store sich weigert, die App überhaupt zu liefern.
Greg Hewgill
Vielleicht habe ich Ihren Kommentar falsch verstanden: "Einige Leute mit anderen Geräten sagen, dass es kompatibel ist, andere sagen, dass es inkompatibel ist, aber ich kann keinen Trend finden." Wenn viele Personen, die Sie nicht kennen, die App herunterladen und installieren können, können Sie einen größeren Pool an Hardwaredaten sammeln, um einen Trend zu bilden. So wird das "Ich kenne nicht sehr viele Leute mit Android-Geräten." Problem.
Gavin Miller
@GavinMiller: Aber das wird mir nur sagen , welche Geräte bei Google Play glaubt , es kann installiert werden, und gibt keine Auskunft darüber , welche Geräte bei Google Play glaubt , es kann nicht auf installiert werden. Außerdem würde es mir nicht wirklich helfen, dieses Problem zu lösen, wenn ich mit Sicherheit wüsste, welche Geräte in Ordnung sind und welche nicht.
Greg Hewgill
Überprüfen Sie, ob diese Lösung für mich funktioniert stackoverflow.com/a/14020303/3392323
SAndroidD

Antworten:

84

Die Antwort scheint sich ausschließlich auf die Anwendungsgröße zu beziehen. Ich habe eine einfache "Hallo Welt" -App mit nichts Besonderem in der Manifestdatei erstellt, sie in den Play Store hochgeladen und sie wurde als mit meinem Gerät kompatibel gemeldet.

Ich habe in dieser App nichts geändert, außer mehr Inhalt in das res/drawableVerzeichnis aufzunehmen. Als die .apkGröße ungefähr 32 MB erreichte, meldete der Play Store, dass meine App nicht mit meinem Telefon kompatibel war.

Ich werde versuchen, den Google-Entwickler-Support zu kontaktieren und um Klärung des Grundes für dieses Limit zu bitten.

UPDATE : Hier ist die Antwort des Google-Entwickler-Supports darauf:

Vielen Dank für Ihre Nachricht. Derzeit beträgt die maximale Dateigrößenbeschränkung für einen App-Upload auf Google Play ca. 50 MB.

Einige Geräte haben jedoch möglicherweise eine Cache-Partition von weniger als 50 MB, sodass die App für Benutzer zum Herunterladen nicht verfügbar ist. Beispielsweise ist bekannt, dass einige HTC Wildfire-Geräte über Cache-Partitionen mit 35 bis 40 MB verfügen. Wenn Google Play ein solches Gerät identifizieren kann, dessen Cache nicht groß genug ist, um die App zu speichern, wird es möglicherweise nicht für den Nutzer angezeigt.

Am Ende löste ich mein Problem, indem ich alle PNG-Dateien mit einem kleinen Qualitätsverlust in JPG konvertierte. Die .apkDatei ist jetzt 28 MB groß und liegt damit unter dem Schwellenwert, den Google Play für mein Telefon erzwingt.

Ich habe auch alles entfernt <uses-feature>und habe jetzt genau das:

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
Greg Hewgill
quelle
Sehr interessante und wertvolle Informationen. Und so ärgerlich, dass dies nirgendwo dokumentiert ist.
Michael A.
2
In der Tat hätte ich nie von dem Problem gewusst, wenn ich nicht zufällig ein Wildfire-Telefon gehabt hätte.
Greg Hewgill
Ich habe 3 Spiele: 32 MB, 35 MB und 44 MB groß. Mein eigenes HTC Bravo sieht die ersten beiden Spiele und das dritte nicht im Laden. Das HTC-Verlangen S meines Freundes sieht nur das erste Spiel. Anscheinend sollte die Größe der Spiele unter 33 MB liegen, um für die meisten (?) Geräte sichtbar zu sein. Leider habe ich diese Antwort zu spät gesehen und wusste monatelang nichts über das Problem ... Ich war mir sicher, dass dies vom Prozessortyp des Geräts, der unterstützten OpenGL-Version, den im Manifest festgelegten Einschränkungen oder Ähnlichem abhängt.
Seufz
7
Es ist verrückt, dass Google den Grund für die Inkompatibilität im Play Store nicht auflistet. Ich bin immer davon ausgegangen, dass zumindest die App-Entwickler diese Informationen erhalten und sich bewusst dafür entschieden hätten, mein Gerät nicht zu unterstützen. Wie ist die Situation so lange geblieben?
Gerry
1
@ GregHewgill Hallo Greg. Ich habe den Google-Support wegen eines ähnlichen Problems kontaktiert. Da meine App nur 5 MB groß war, habe ich verschiedene Optionen untersucht, warum Google Play meine Anwendung auf einem bestimmten Gerät gefiltert hat. Es ist 72 Stunden her, seit ich sie kontaktiert habe und sie kamen mit keiner Erklärung zurück. Kann ich den Google-Support auf andere Weise als normal kontaktieren?
Hemanth Kumar
15

Ich bin auch darauf gestoßen - ich habe meine gesamte Entwicklung auf einem Lenovo IdeaTab A2107A-F durchgeführt und konnte darauf Entwicklungs-Builds ausführen und sogar signierte APKs (installiert mit adb install) ohne Probleme veröffentlichen. Nachdem es im Alpha-Testmodus veröffentlicht und bei Google Play verfügbar war, erhielt ich die Fehlermeldung "Inkompatibel mit Ihrem Gerät".

Es stellte sich heraus, dass ich AndroidManifest.xmlaus einem Tutorial Folgendes in mein Tutorial eingefügt hatte:

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />

Nun, das Lenovo IdeaTab A2107A-F hat keine Autofokus-Kamera (was ich unter http://www.phonearena.com/phones/Lenovo-IdeaTab-A2107_id7611 unter Nachteile gelernt habe : Es fehlt die Autofokus-Kamera). Unabhängig davon, ob ich diese Funktion verwendet habe, hat Google Play Nein gesagt. Nachdem das entfernt wurde, habe ich meine APK neu erstellt, auf Google Play hochgeladen und sicher war mein IdeaTab jetzt in der Liste der kompatiblen Geräte.

Überprüfen Sie also alle <uses-feature>und überprüfen Sie erneut, ob Sie das Web kopiert und eingefügt haben. Wahrscheinlich haben Sie eine Funktion angefordert, die Sie nicht einmal verwenden.

Joe
quelle
3
Danke ! Ich habe ein anderes <Benutzungsmerkmal> verwendet: <Verwendungsfunktion android: name = "android.hardware.camera2" /> Und aus diesem Grund hatte ich NULL-kompatible Geräte. Ich habe die Leitung entfernt und habe jetzt 10000.
Jack
Sie können festlegen, dass es weiterhin verwendet wird, es jedoch nicht benötigt wird: <Verwendungsfunktion android: name = "android.hardware.camera.autofocus" android: required = "false" />
DrChandra
<Verwendungsfunktion android: name = "android.hardware.camera2" /> macht meine App inkompatibel, sodass ich die App im Playstore nicht finden konnte. Rette mein Leben
Anand Savjani
11

Dieses Problem trat auch bei der Entwicklung einer Anwendung für einen Kunden auf, der Videos offline über seine Anwendung verfügbar haben wollte. Ich habe einen Blogpost darüber geschrieben, warum die App, an der ich monatelang gearbeitet habe, nicht im Play Store für mein Gerät angezeigt wird ( Beitrag finden Sie hier ). Ich fand das gleiche wie @Greg Hewgill gefunden: Cache-Partitionsbeschränkungen auf einigen Geräten .

Die Reise hat für mich dort nicht aufgehört. Der Kunde wollte diese Videos in der Anwendung haben und wollte nicht, dass die Qualität des Videos verringert wird. Nach einigen Recherchen stellte ich fest, dass die Verwendung von Erweiterungsdateien die perfekte Lösung für unser Problem ist.

Um mein Wissen mit der Android-Community zu teilen, hielt ich auf der droidconNL 2012 einen Vortrag über Erweiterungsdateien. Ich habe eine Präsentation und einen Beispielcode erstellt, um zu veranschaulichen, wie einfach es sein kann, Erweiterungsdateien zu verwenden. Wenn Sie Erweiterungsdateien zur Lösung dieses Problems verwenden möchten, lesen Sie den Beitrag mit der Präsentation und dem Beispielcode

Ali Derbane
quelle
4
Der in Ihrem Beitrag erwähnte Google-Support-Link ist veraltet. Der neue Link lautet support.google.com/googleplay/android-developer/answer/… . Hoffe du aktualisierst den Artikel mit dem neuesten Link und übrigens, netter Beitrag. !!
Rohan Kandwal
7

Möglicherweise möchten Sie versuchen, das Support-Screens-Attribut festzulegen:

<supports-screens
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:xlargeScreens="true" >
</supports-screens>

Das Wildfire hat einen kleinen Bildschirm, und laut Dokumentation sollte dieses Attribut in allen Fällen standardmäßig "true" sein. Es sind jedoch Probleme mit den Einstellungen für Unterstützungsbildschirme auf verschiedenen Telefonen bekannt. Daher würde ich dies trotzdem versuchen.

Außerdem - wie David vorschlägt - kompilieren und zielen Sie immer gegen die aktuellste Version der Android-API, es sei denn, Sie haben starke Gründe, dies nicht zu tun. Nahezu jedes SDK vor 2.2 weist ein ernstes Problem oder ein seltsames Verhalten auf. Das letztere SDK hilft dabei, viele (wenn auch nicht alle) von ihnen zu lösen oder zu vertuschen. Sie können (und sollten) das Lint-Tool verwenden, um zu überprüfen, ob Ihre App mit API 4 kompatibel bleibt, wenn Sie eine Version vorbereiten.

Michael A.
quelle
Vielen Dank, ich warte auf eine Antwort des Google-Entwickler-Supports auf meine neueste Support-Anfrage. Ich werde es versuchen, nachdem ich eine Antwort von ihnen erhalten habe (ich möchte sie nicht durch das Hochladen einer weiteren APK verwirren). Lassen Sie Sie wissen, wie sich das entwickelt.
Greg Hewgill
Ich hoffe, Sie müssen nicht zu lange warten. Sie haben nicht gerade den Ruf, schnell zu reagieren. :-)
Michael A.
Ich bin schon ein paar Mal mit ihnen hin und her gegangen, aber meine letzte Frage ist unbeantwortet geblieben, weil ich nach 22 Stunden aufgetaucht bin. Es ist frustrierend warten zu müssen, aber zumindest ist dies nicht geschäftskritisch oder so.
Greg Hewgill
Ich wollte Sie nur wissen lassen, dass ich das Problem gefunden habe, siehe meine Antwort auf diese Frage. Danke für Ihre Hilfe.
Greg Hewgill
7

Finlay, ich habe in meiner Bewerbung das gleiche Problem festgestellt. Ich habe die Phone Gap App entwickelt, für android:minSdkVersion="7" & android:targetSdkVersion="18"die es sich um die neueste Version der Android-Plattform handelt.

Ich habe das Problem mithilfe von Google Text & Tabellen gefunden

Möglicherweise ist das Problem, dass ich eine JS-Funktion geschrieben habe, mit der KEY-CODEnur Alphabete und Zahlen überprüft werden können, die Tastatur jedoch einen anderen Tastencode speziell für Computertastaturen und mobile Tastaturen hat. Das war also mein Problem.

Ich bin mir nicht sicher, ob meine Antwort richtig ist oder nicht, und es ist möglich, dass die obige Antwort lächelnder ist, aber ich werde versuchen, einige Punkte aufzulisten, die beim Erstellen der App von Bedeutung sein sollten. Ich hoffe, Sie folgen diesen Anweisungen Lösen Sie diese Art von Problem.

  • Verwenden Sie das android:minSdkVersion="?"gemäß Ihren Anforderungen und android:targetSdkVersion="?"sollte das neueste sein, auf das Ihre App abzielt. Mehr sehen

  • Versuchen Sie, nur die Berechtigungen hinzuzufügen, die in Ihrer Anwendung verwendet werden, und entfernen Sie alle unnötigen Berechtigungen.

  • Überprüfen Sie den unterstützten Bildschirm nach Anwendung

    <supports-screens 
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:resizeable="true"
    android:smallScreens="true"
    android:xlargeScreens="true"/>
    
  • Möglicherweise haben Sie einen Kostümcode oder ein Kostüm-Widget implementiert, die auf einem Gerät oder einer Registerkarte nicht zu spät ausgeführt werden konnten. Versuchen Sie daher vor dem Schreiben des langen Codes zunächst, einen Beta-Code zu schreiben und zu testen, ob Ihr Code auf allen Geräten ausgeführt wird oder nicht .

  • Ich hoffe, dass Google ein Tool veröffentlicht, mit dem Sie Ihren Code vor dem Hochladen der App überprüfen können. Außerdem können wir Ihre App aus bestimmten Gründen nicht auf einem bestimmten Gerät ausführen, damit wir sie problemlos lösen können.

Chintan Khetiya
quelle
6

Ich habe ein paar Vorschläge:

  1. Zunächst scheinen Sie API 4 als Ziel zu verwenden. AFAIK, es ist eine gute Praxis, immer mit dem neuesten SDK zu kompilieren und Ihr SDK entsprechend einzurichten android:minSdkVersion.

  2. Denken Sie vor diesem Hintergrund daran, dass das android:requiredAttribut in API 5 hinzugefügt wurde :

Die Feature-Deklaration kann ein android:required=["true" | "false"]Attribut enthalten (wenn Sie mit API-Level 5 oder höher kompilieren), mit dem Sie angeben können, ob die Anwendung (...)

Daher würde ich vorschlagen, dass Sie mit SDK 15 kompilieren, ebenfalls targetSdkVersionauf 15 setzen und diese Funktionalität bereitstellen.

Hier auf der Play-Website wird auch angezeigt, dass es mit keinem Gerät kompatibel ist , das ich habe (Zufall?) Lebkuchen (Galaxy Ace und Galaxy Y hier). Aber es zeigt sich als kompatibel mit meinem Galaxy Tab 10.1 ( Honeycomb ), Nexus S und Galaxy Nexus (beide auf ICS ).

Das hat mich auch gefragt, und das ist eine sehr wilde Vermutung, aber da android.hardware.faketouch API11 + ist , warum versuchst du nicht, es zu entfernen, nur um zu sehen, ob es funktioniert? Oder vielleicht hängt das sowieso alles zusammen, da Sie versuchen, Features ( faketouch) und das requiredAttribut zu verwenden, die in API 4 nicht verfügbar sind. In diesem Fall sollten Sie mit der neuesten API kompilieren.

Ich würde das zuerst versuchen und die faketouchAnforderung nur als letzten Ausweg entfernen (natürlich) - da es bei der Entwicklung funktioniert, würde ich sagen, dass es nur darum geht, dass die kompilierte App die Funktion nicht erkennt (aufgrund der SDK-Anforderungen). Dadurch bleiben unerwartete Filterprobleme bei Play.

Es tut uns leid, wenn diese Vermutung Ihre Frage nicht beantwortet, aber es ist sehr schwierig, solche Probleme zu diagnostizieren und die Lösung zu finden, ohne sie tatsächlich zu testen. Oder zumindest für mich ohne das richtige Wissen darüber, wie Play Apps wirklich filtert.

Viel Glück.

davidcsb
quelle
Danke, das gibt mir einige konkrete Ideen. Ursprünglich hatte ich überhaupt keine <uses-feature>Tags, das war ein Versuch, es mit mehr Geräten als mit weniger kompatibel zu machen. Ich werde versuchen, SDK-Versions-Tags zu ändern, das scheint der wahrscheinlichste Ansatz zu sein. Ich sollte hinzufügen, dass ich verwendet habe, minSdkVersion="4"weil diese Version nicht mehr einige Berechtigungen (Telefonstatus lesen, SD-Karte ändern) impliziert, die meine App nicht benötigt.
Greg Hewgill
Das Ändern der SDK-Versionen in android:minSdkVersion="5" android:targetSdkVersion="15"hat auch nicht geholfen. Ich habe den Support von Google Play-Entwicklern kontaktiert und hoffe, dass sie mir sagen können, warum. Es wäre sicher schön, wenn der Grund für das Filtern auf der Play App-Seite angezeigt würde.
Greg Hewgill
Ja das wäre toll. Haben Sie in der Zwischenzeit versucht, faketouchals required= falseeinzustellen?
Davidcsb
Bei der neuesten Iteration werden alle <uses-feature>Tags entfernt, da mir der Google-Support mitgeteilt hat, dass die Funktion für mein Gerät aufgrund der android.hardware.faketouchFunktion nicht verfügbar war . Das scheint lächerlich, zumal eine meiner vorherigen Versionen auch keine <uses-feature>Tags hatte, aber was auch immer. Ich warte auf ihre Antwort und möchte sie nicht durch das Hochladen einer weiteren Version verwirren. Es wäre schön, wenn es eine Möglichkeit gäbe, dies zu testen, ohne wiederholt neue APKs hochzuladen und zu veröffentlichen.
Greg Hewgill
Ich würde nicht lächerlich sagen, weil es ein Flag ist, das in späteren SDK-Versionen (API 11) hinzugefügt wurde. Deshalb habe ich vorgeschlagen, gegen API15 zu kompilieren und darauf abzuzielen (denken Sie daran, Ihre project.properties zu ändern, nicht nur zu manifestieren). Ich bin immer noch überrascht, es als erforderlich einzustellen = false hat jedoch nicht funktioniert.
Davidcsb
6

Berechtigungen, die Funktionsanforderungen erfüllen

Beispiel: Die Funktion android.hardware.bluetooth wurde in Android 2.2 (API-Stufe 8) hinzugefügt, die Bluetooth-API, auf die sie verweist, wurde jedoch in Android 2.0 (API-Stufe 5) hinzugefügt. Aus diesem Grund konnten einige Apps die API verwenden, bevor sie deklarieren konnten, dass sie die API über das System benötigen.

Um zu verhindern, dass diese Apps unbeabsichtigt verfügbar gemacht werden, geht Google Play davon aus, dass bestimmte hardwarebezogene Berechtigungen darauf hinweisen, dass die zugrunde liegenden Hardwarefunktionen standardmäßig erforderlich sind. Beispielsweise müssen Anwendungen, die Bluetooth verwenden, die BLUETOOTH-Berechtigung in einem Element anfordern. Bei älteren Apps geht Google Play davon aus, dass die zugrunde liegende Funktion android.hardware.bluetooth von der Anwendung benötigt wird, und richtet die Filterung basierend auf dieser Funktion ein .

In der folgenden Tabelle sind Berechtigungen aufgeführt, die Funktionsanforderungen implizieren, die den in Elementen deklarierten entsprechen. Beachten Sie, dass Deklarationen, einschließlich aller deklarierten Attribute für android: required, immer Vorrang vor Funktionen haben, die durch die folgenden Berechtigungen impliziert werden.

Für jede der folgenden Berechtigungen können Sie die Filterung basierend auf dem implizierten Feature deaktivieren, indem Sie das implizite Feature explizit in einem Element mit dem Attribut android: required = "false" deklarieren. Um beispielsweise eine Filterung basierend auf der CAMERA-Berechtigung zu deaktivieren, fügen Sie diese Deklaration zur Manifestdatei hinzu:

<uses-feature android:name="android.hardware.camera" android:required="false" />


<uses-feature android:name="android.hardware.bluetooth" android:required="false" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-feature android:name="android.hardware.wifi" android:required="false" />

http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions

OM PRAKASH SEERVI
quelle
Danke dir! Ich hatte keine Ahnung, ob die erforderliche Funktion standardmäßig verwendet wird.
Amagi82
5

Um eine zusätzliche Lösung für das oben genannte Problem "Diese App ist nicht mit Ihrem ... kompatibel" zu geben, möchte ich meine Lösung für eine andere Problemursache mitteilen. Ich habe versucht, eine App auf einem Low-End-Gerät des Samsung Galaxy Y (GT-S6350) zu installieren, und habe diesen Fehler im Play Store erhalten. Um verschiedene AndroidManifest-Konfigurationen zu testen, habe ich ein Konto erstellt und die unter https://stackoverflow.com/a/5449397/372838 beschriebene Routine befolgt, bis mein Gerät in der Liste der unterstützten Geräte angezeigt wurde.

Es stellte sich heraus, dass viele Geräte nicht mehr kompatibel sind, wenn Sie die Kamera-Berechtigung verwenden:

<uses-permission android:name="android.permission.CAMERA" />

Als ich diese spezielle Berechtigung entfernte, war die Anwendung für 1180 Geräte anstelle von 870 verfügbar. Ich hoffe, sie hilft jemandem

dvtoever
quelle
7
Möglicherweise kann dies helfen: <Verwendungsberechtigung android: name = "android.permission.CAMERA" /> <Verwendungsfunktion android: name = "android.hardware.camera" android: required = "false" />
user1205415
3

Obwohl es bereits einige Antworten gibt, dachte ich, meine Antwort könnte einigen helfen, die genau das gleiche Problem haben wie ich. In meinem Fall wird das Problem durch die folgenden Berechtigungen verursacht, die auf Vorschlag eines Werbenetzwerks hinzugefügt wurden:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Die oben genannten Berechtigungen haben zur Folge, dass die folgenden Funktionen automatisch hinzugefügt werden:

android.hardware.LOCATION
android.hardware.location.GPS
android.hardware.location.NETWORK

Der Grund dafür ist, dass "Google Play versucht, die impliziten Funktionsanforderungen einer Anwendung zu ermitteln, indem andere in der Manifestdatei deklarierte Elemente untersucht werden, insbesondere Elemente." Zwei meiner Testgeräte verfügen nicht über die oben genannten Funktionen, sodass die App nicht mehr mit ihnen kompatibel ist. Durch das Entfernen dieser Berechtigungen wurde das Problem sofort behoben.

Hong
quelle
2

Ich habe eine zusätzliche Möglichkeit gefunden, wie dieses Problem auftritt:
Das ursprüngliche Betriebssystem meines LG-Telefons war Froyo (Android 2.2) und wurde auf ICS (Android 4.0.4) aktualisiert. Die Google Play-Entwicklerkonsole zeigt jedoch, dass mein Telefon als Froyo-Gerät erkannt wird. (Google Play hat das Herunterladen der App aufgrund der falschen "Inkompatibilität" nicht zugelassen, erkennt die Installation jedoch trotzdem.)

Die Einstellungen des Telefons in "Software" zeigen ICS V4.0.4. Es scheint, dass die Google Play-Serverinformationen für das Telefon nicht aktualisiert werden, um das ICS-Update auf dem Gerät widerzuspiegeln. Das App-Manifest minSDK ist auf Honeycomb (3.0) eingestellt, daher filtert Google Play die App natürlich heraus.

Von zusätzlichem Interesse:
Die App verwendet In-App Billing V3. Beim ersten Mal über IabHelper kann die App über den Google Play-Dienst einkaufen. Nach dem Kauf wird der Kauf jedoch NICHT in das Inventar aufgenommen, und IabHelper meldet, dass keine Artikel im Besitz sind. Debug-Meldungen zeigen das Ergebnis "Kauf fehlgeschlagen" beim Kauf an, obwohl im Google Play-Fenster "Kauf erfolgreich" angezeigt wird.

ajay1865
quelle
0

Ich hatte das gleiche Problem. Dies wurde dadurch verursacht, dass mein Manifest und mein Gradle-Build-Skript unterschiedliche Versionscodes und -nummern enthielten. Ich habe das Problem behoben, indem ich den Versionscode und die Versionsnummer aus meinem Manifest entfernt und gradle sich darum kümmern ließ.

John Moffitt
quelle
0

Ich hatte auch das gleiche Problem. Ich habe eine App im Testmodus veröffentlicht, die mit React Native 59 erstellt wurde. Sie war für bestimmte Tester nicht kompatibel. Die Nachricht war nicht klar, warum die App nicht kompatibel ist, nachdem ich herausgefunden hatte, dass ich die App so eingeschränkt habe, dass sie nur für ein bestimmtes Land verfügbar ist. Das war das Problem, aber wie gesagt, die Nachricht war nicht klar. In der Play Store WebApp lautet die Meldung: "Diese App ist nicht mit Ihrem Gerät kompatibel." in der mobilen App die Meldung "Diese App ist in Ihrem Land nicht verfügbar"

Devoka
quelle
0

Wenn Sie 2020 hier sind und der Meinung sind, dass das Gerät, das die Fehlermeldung erhält, kompatibel sein sollte:

Mehrere andere wichtige Apps sind darauf gestoßen, darunter Instagram (1B + -Installationen) und Clash of Clans (100M + -Installationen). Es scheint ein Problem mit Googles Android-Betriebssystem zu sein.

Löschen Sie den Google Play Store-Cache und anschließend die Daten, um die Fehlermeldung "Ihr Gerät ist nicht mit dieser Version kompatibel" zu beheben. Starten Sie anschließend den Google Play Store neu und versuchen Sie erneut, die App zu installieren.

[ https://support.getupside.com/hc/en-us/articles/226667067--Device-not-compatible-error-message-in-Google-Play-Store]

Hier ist ein Link zur offiziellen Support-Seite von Google, auf der Sie auf Ihre Nutzer verweisen können, wie der Cache geleert wird: https://support.google.com/googleplay/answer/7513003

blub
quelle