Diese Version der Anwendung ist nicht für die Abrechnung über Google Play konfiguriert

269

Wenn ich versuche, meine Anwendung mit In-App-Abrechnung auszuführen, wird folgende Fehlermeldung angezeigt: "Diese Version der Anwendung ist nicht für die Abrechnung über Google Play konfiguriert. Weitere Informationen finden Sie in der Hilfe."

Ich habe die Abrechnungsberechtigung bereits in der Manifest-Datei und habe eine signierte APK als Entwurf auf Google Play hochgeladen. Außerdem habe ich dieselbe signierte APK auf meinem Telefon installiert.

Hilfe zur Lösung dieses Problems?

Torhüter
quelle

Antworten:

339

Dieser Fehler kann verschiedene Gründe haben.

Hier ist die Liste der Anforderungen für die Google IAB-Tests.

Voraussetzungen:

  1. AndroidManifest muss die Berechtigung "com.android.vending.BILLING" enthalten .
  2. APK ist im Release-Modus gebaut .
  3. APK ist mit den Freigabezertifikaten signiert . (Wichtig: Mit "App Signing by Google Play" funktioniert es nur, wenn Sie direkt aus dem GooglePlayStore herunterladen!)
  4. APK wird mindestens einmal in den Alpha / Beta-Vertriebskanal (zuvor als Entwurf) auf die Entwicklerkonsole hochgeladen . (dauert einige Zeit ~ 2h-24h ).
  5. IAB- Produkte werden veröffentlicht und ihr Status auf aktiv gesetzt .
  6. Testkonten werden in der Entwicklerkonsole hinzugefügt .

Testanforderungen:

  1. Test APK hat denselben Versionscode wie der auf die Entwicklerkonsole hochgeladene.
  2. Test APK ist mit denselben Zertifikaten signiert wie das auf dev.console hochgeladene.
  3. Testkonto (kein Entwickler) - ist das Hauptkonto auf dem Gerät. ( Hauptkonto ist möglicherweise nicht erforderlich - laut @ MinosL- Kommentar)
  4. Das Testkonto ist als Tester aktiviert und mit einer gültigen Zahlungsmethode verknüpft . ( @Kyone )

PS: Debuggen mit Release-Zertifikat : https://stackoverflow.com/a/15754187/1321401 (Thnx @dipp für den Link)

PPS: Wollte diese Liste schon lange machen.

Danke @zlgdev , @Kyone , @MinosL für Updates

Lauten
quelle
5
Vergessen Sie nicht, sicherzustellen, dass das Konto, mit dem Sie IAB testen, als Tester aktiviert ist. Verwenden Sie dazu die "Opt-In-URL", die nach dem Hochladen eines Builds generiert wird. UND dass es mit einer gültigen Zahlungsmethode verknüpft ist .
Kyone
3
Sollte es nicht einfacher sein, IAP zu testen ? Oder um Dinge im Allgemeinen zu testen ..
Juan
1
auch erwähnenswert;
Testkonto
2
auch erwähnenswert; Wenn "App-Signaturzertifikat" aktiviert ist, können wir unsere lokale APK nicht zum Testen mit echten Einkäufen verwenden, da wir nicht mit dem Signaturzertifikat signieren können. (Ich
brauchte ungefähr
1
Ich habe erfolgreich mit 1) einer signierten Debug-App getestet , die 2) nicht das Hauptkonto auf dem Gerät ist. Daher scheint der Prozess für Google IAB-Tests nicht so streng zu sein wie oben angegeben.
MinosL
194

Ahh fand die Lösung, nachdem er es ein paar Stunden lang versucht hatte.

  1. Google braucht eine Weile, um Anwendungen zu verarbeiten und auf ihren Servern zu aktualisieren. Für mich dauert es ungefähr einen halben Tag. Nachdem Sie die apk als Entwurf bei Google Play gespeichert haben, müssen Sie einige Stunden warten, bis die In-App-Produkte normal reagieren und regelmäßige Einkäufe ermöglichen.
  2. APK exportieren und signieren. Nicht signierte APK, die versuchen, Einkäufe zu tätigen, erhalten eine Fehlermeldung.
Torhüter
quelle
71
Wow, ist das ernst? Bin gerade auf das gleiche Problem gestoßen. Hat alles getan, was Google von mir verlangt hat, um die In-App-Abrechnung zu testen, aber immer noch die gleiche ausweichende Fehlermeldung erhalten. Ich muss wohl abwarten und sehen. Aber erwartet Google wirklich, dass wir Entwickler jedes Mal Stunden warten, wenn wir unsere App aktualisieren müssen, um die In-App-Abrechnung zu implementieren? Es scheint mir, gelinde gesagt, ziemlich unangemessen zu sein.
Simon
6
Können Sie testen, während Sie mit Android Studio verbunden sind / laufen, während Sie mit dem Debugger verbunden sind? Oder müssen Sie die Release-Apk über USB installieren?
Alfie Hanssen
3
Gibt es eine einfachere Möglichkeit, den Kaufvorgang zu testen, als Android Tools> Signiertes Projekt exportieren ... usw., dann APK manuell auf das Gerät kopieren, testen, ... wiederholen? Mir muss etwas fehlen?
Wired00
4
Im Ernst, ich kann die Anwendung nicht mit Debug-Zertifikat verwenden und In-App-Abrechnung testen?
TacB0sS
8
Beachten Sie, dass Sie Debug-Builds direkt von Ihrer IDE aus verwenden können, während Sie arbeiten. Sie müssen nur den Debug-Keystore in einen ändern, der Ihrem Release-Store entspricht. In diesem Beitrag finden Sie weitere Informationen dazu, wie: stackoverflow.com/questions/10886814/…
CottonBallPaws
137

Das gleiche passiert, wenn Ihre veröffentlichte Version nicht mit der Version übereinstimmt, die Sie auf Ihrem Telefon testen.

Die hochgeladene Version ist beispielsweise android:versionCode="1"und die Version, die Sie auf Ihrem Telefon testen, istandroid:versionCode="2"

Sandale
quelle
3
Kannst du mir bitte sagen, was passiert, wenn die hochgeladene Version ist android:versionCode="1"und das Telefon in android:versionCode="2"Ordnung ist oder ich meine apk google play ändern muss?
Youddh
1
Was Sie tun müssen, ist, die lokale Version auf "1" zu bringen, damit sie mit der aktuellen Live-Version übereinstimmt, zumindest vorübergehend zum Testen.
Romain
2
Es sieht so aus, als ob es je nach Ihrer Situation zwei häufige Korrekturen für diesen Fehler gibt. In meinem Fall war es dieser.
Matt
Danke, das war das Problem. War das Debuggen gut mit Release signierten apk auf meinem angeschlossenen Gerät. Dann änderte sich der Versionscode und es wurde der 1005-Fehler angezeigt. Wütend!
Anna Billstrom
@ Anna beachten Sie, dass -1005 auch USER_CANCELLED ist, wenn Sie iabHelper
JacksOnF1re
47

Sie müssen Ihre APK mit Ihrem Live-Zertifikat unterschreiben. Installieren Sie das dann auf Ihrem Testgerät. Anschließend können Sie InAppBilling testen. Wenn Sie Ihre Anwendung durch direkte Ausführung über Eclipse to Device (im Debug-Modus) testen, wird dieser Fehler angezeigt.

Wenn Sie android.test.purchasedals SKU verwenden, funktioniert dies vollständig, aber Ihre endgültige Antwort enthält nicht die DeveloperPayload.

Wenn Sie Ihren eigenen Entwurf in einem App-Element verwenden, können Sie den gesamten Test durchführen, aber Sie werden belastet und müssen ihn anschließend selbst zurückerstatten.

Sie können keine Artikel mit demselben Google Mail-Konto kaufen, das Sie für die Google Play-Entwicklungskonsole verwenden.

Chirag Patel
quelle
1
+1 Beim Ausführen vom Debugger wird das Debug-Zertifikat verwendet. Nachdem Sie die App exportiert und einen neuen öffentlichen Schlüssel erstellt (und in der Entwicklerkonsole installiert) haben, senden Sie sich einfach eine E-Mail mit der apk und installieren Sie sie aus Ihrem Google Mail-Posteingang.
cdavidyoung
Wenn ich "android.test.purchased" ausprobieren möchte, werde ich dann die SKU sowohl in meinem Code als auch in der Entwicklerkonsole ändern?
Rocologo
26

In der Entwicklerkonsole:

Settings-> Account details-> License Testing-> Google Mail-Konten mit Testzugriff

und geben Sie hier Ihre Konten ein

Pablo Cegarra
quelle
Klappt wunderbar.
Jordanien
17

Wenn Sie ab 2018 hier sind, müssen Sie die APK direkt aus dem Play Store herunterladen und die "abgeleitete" APK installieren. Vielleicht liegt es daran, dass Googles Play Store eine Funktion "App Signing by Google Play" hat.

Gesetz Gimenez
quelle
1
Welche APK? Ich benutze AIDL. Muss ich das noch tun?
Zhen Liu
@ ZhenLiu Ich denke nicht benötigt
Gesetz Gimenez
Darüber hinaus kann die App nicht bereits auf andere Weise (z. B. Android Studio) auf dem Gerät installiert werden. Die Installation / Aktualisierung aus dem Play Store funktioniert, der IAP jedoch nicht - Sie erhalten den OPs-Fehler.
JDune
Wie debuggen wir das?
Oliver Dixon
3

Dies wird passieren, wenn Sie eine andere Version der apk als die in Google Play verwenden.

Amalka
quelle
3

Lassen Sie mich nur hinzufügen, was mit mir passiert ist, kann jemandem helfen.

Es war hauptsächlich auf die Unterzeichnung zurückzuführen.

Da ich die Signaturdetails in die Projektstruktur aufgenommen habe, dachte ich, dass jedes Mal, wenn ich laufe, die erwartete signierte apk installiert wird. Es wurde jedoch der Build-Typ 'Debug' ausgewählt.

Das unten stehende Update hat das Problem für mich gelöst.

  • Generierte signierte apk vom Build-Typ 'release'.
  • Manuell installiert die apk.
Shree Harsha S.
quelle
2

In meinem Fall habe ich die gleiche Nachricht aufgrund der unterschiedlichen Signaturen der installierten apk und einer auf den Markt hochgeladenen apk gesehen.

goRGon
quelle
2

Im Gegensatz zu vielen Antworten und Kommentaren auf SO und anderen Websites müssen Sie KEINE Vorversuche mit einer Alpha / Beta-Version Ihres Produkts durchführen, die von Google Play auf Ihr Testgerät heruntergeladen wurde (der Alpha / Beta-Veröffentlichungsprozess ist häufig aufwendig einen halben Tag). Sie müssen auch keine signierte Release-Apk von Ihrem Entwicklerstudio auf Ihr Testgerät laden und erneut laden.

Sie können vorläufiges Google Play in App-Abrechnungsdiensten mit der Debug-App debuggen, die von Ihrem Entwicklerstudio über ADB direkt auf Ihr Testgerät geladen wurde. Wenn Fehler auftreten, die dies verhindern, haben Sie wahrscheinlich einen Fehler in Ihrem Code gemacht. Achten Sie besonders auf den FALL Ihrer SKUs (Produkt-IDs) und deren Format (wenn Sie beispielsweise Ihre APK als com.mydomain.my_product_id laden, stellen Sie sicher, dass Sie versuchen, sie auf diese Weise zu kaufen - unter Angabe des gleichen Falls und der gleichen Domain). . Achten Sie außerdem besonders auf Ihren itemType - dies sollte entweder "inapp" oder "subs" für verwaltete / nicht verwaltete App-Käufe bzw. Abonnements sein.

Führen Sie, wie von Chirag Patel vorgeschlagen, während Ihrer Vorversuche alle Tests mit dem Skand android.test.purchased (Produkt-ID) durch, sofern Ihr Abrechnungscode ordnungsgemäß festgelegt wurde. Überprüfen Sie diese ID während Ihrer Abrechnungsvorgänge, um sie durch Signatur-, Token- und Nutzlastprüfungen zu führen, da diese Daten nicht vom Google-Testsystem bereitgestellt werden. Geben Sie einem Ihrer Testprodukte zusätzlich diese ID, um den Kauf, das Entsperren / Laden und die Präsentation des gesamten Programms zu testen. Um den Kauf zu löschen, verbrauchen Sie ihn einfach und übergeben Sie denselben Sku UND eine so formatierte Token-Zeichenfolge. Keine anderen Felder sind relevant:

    "inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";

Wenn Sie diese Testphase abgeschlossen haben, wechseln Sie mit Ihrem Alpha / Beta-Produkt zum Semi-Live-Test. Erstellen Sie eine Google-Gruppe (im Wesentlichen eine Mailingliste), fügen Sie E-Mails Ihrer Testbenutzer hinzu und fügen Sie diese Gruppe hinzu / laden Sie sie ein, Ihr Gerät in dieser Phase zu testen (durchgeführt im Abschnitt "APK" der Google-Entwicklerliste Ihrer App). Einkäufe werden simuliert, aber nicht tatsächlich in Rechnung gestellt. Um die Einkäufe jedoch zu löschen und erneut zu testen, gibt Google an, dass Sie sie von Ihrer Google-Brieftasche zurückerstatten müssen. Dies ist die einzige Testphase, die den zeitaufwändigen Prozess der Verwendung von Alpha / Beta-Ladevorgängen und Testbenutzern erfordert.

Epsilon3
quelle
1

Hatte das gleiche Problem und es wurde nicht gelöst, bevor ich den Beitrag von DZDomi gelesen habe. Es stellte sich plötzlich heraus, dass in der Google Developer Console eine Einstellung vorhanden ist, die Sie aktivieren müssen. Im Abschnitt "In App-Käufen" gibt es eine Zeile für Ihr Produkt und ganz rechts einen Status dafür. Es sollte AKTIV sein!

Søren
quelle
0

Mein Problem war, dass ich versucht habe, es mit dem debug.keystore zu überprüfen, ich meine, es durch eclipse auszuführen. Ich habe es mit dem Keystore exportiert, mit dem ich im Alpha-Modus veröffentlicht habe (es muss veröffentlicht werden, bevor Sie es testen können) .installiert in mein Telefon und dann konnte ich es normal testen.

Gal Rom
quelle
0

Das Problem tritt auch auf, wenn Sie nach dem Hochladen der apk einen In-App-Kauf hinzugefügt haben, die Anwendung jedoch nicht im Play Store veröffentlicht haben (Alpha, Beta und Produktion).

Was im Grunde bedeutet, dass Sie den In-App-Kauf hinzufügen müssen, nachdem Sie die apk im Play Store veröffentlicht haben (Alpha, Beta und Produktion). Andernfalls können Sie den In-App-Kauf nicht kaufen oder abfragen.

DZDomi
quelle
0

Ein weiterer Grund, der hier nicht erwähnt wird, ist, dass Sie auf einem realen Gerät testen müssen. Da der Emulator wirklich gut wird, ist es leicht, einen Fehler zu machen.

JDenais
quelle
0

Vor kurzem hat Google eine Änderung auf seinen Systemen implementiert. Da Sie mindestens eine APK auf Ihre Konsole hochgeladen haben, können Sie Ihre In-App-Anforderungen mit Ihrer App mit einem beliebigen Versionscode / einer beliebigen Versionsnummer testen.

Querverweis LINK

Konfigurieren Sie gradle, um Ihren Debug-Build für das Debuggen zu signieren.

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
            ...
        }
    }
}
Anoop M.
quelle
0

LÖSUNG

Warten Sie nach dem Hochladen Ihrer App im Play Store eine Weile, da Google einige Zeit benötigt, um die App-Versionen zu aktualisieren. Es wird funktionieren!

Ali Akram
quelle
0

Ich habe das gleiche Problem in Moto C2 + in meinem Fall ist es ein Geräteproblem, sobald ich neu starte, dann wird es perfekt laufen ...

Sagar Pithiya
quelle