Probleme beim Testen der APK-Erweiterungsbibliothek

8

Ich habe die APK-Erweiterung-Datei-Download-Bibliothek von Google in mein Projekt integriert, und es funktioniert mehr oder weniger OK (außer ein paar kleinere Fehler, die bereits von anderen auf SO gemeldet wurden).

Es fällt mir jedoch schwer, es zu testen. Als ich es zum ersten Mal getestet habe, habe ich meine signierte APK + Haupterweiterungsdatei Version 1 zu Google Play hochgeladen, und es hat gut funktioniert.

Wenn ich jedoch meine Anwendung zusammen mit der Haupt-Erweiterungsdatei, Version 2, aktualisiert habe, konnte die Anwendung die Datei nicht mehr herunterladen - die Bibliothek kehrt sofort mit NO_DOWNLOAD_REQUIRED zurück, aber die Datei ist nicht da! Ich habe mit dem Debuggen der LVL-Check-Pässe begonnen, aber die Tabelle der herunterladbaren Dateien war leer! Während ich versuchte, die Details zu debuggen ... fing es plötzlich wieder an zu arbeiten!

Ich nahm an, dass dies eine Art vorübergehender Fehler war und setzte meine Arbeit fort, um das gleiche Problem erneut zu lösen, nachdem ich meine APK und die Erweiterungsdatei erneut aktualisiert hatte. Die Anwendung übergibt die LVL-Prüfung, aber die Bibliothek geht davon aus, dass keine Dateien zum Herunterladen vorhanden sind.

Ist es ein bekanntes Problem mit der Google-Bibliothek? Oder muss ich vielleicht etwas warten, bis die Dateien in der Cloud von Google verfügbar sind?

BEARBEITEN: Es hat gerade angefangen zu arbeiten, OK. Es scheint wirklich, dass es einige Zeit braucht, bis sich die Datei irgendwie auf der Seite von Google verbreitet. Eine schlechte Sache an der Bibliothek ist, dass, sobald sie die Lizenz überprüft, überprüft sie nie die Download-Liste erneut, also musste ich die App neu installieren. Seltsam ... Warum zum Teufel ist es so komplex?

    
Code Painters 13.08.2012, 11:35
quelle

4 Antworten

8

Eine kleine Thread-Nekromantie, aber da ich so viel Mühe hatte, den OBB-Download zur Arbeit zu bringen, wollte ich alle Probleme an einen Ort bringen. Ganz wie - oder tatsächlich - Google es geschafft hat, das Herunterladen einer Datei aus dem Internet so kompliziert zu machen, übertrifft mich.

Hinzufügen der Bibliotheken zu Android Studio

Die offiziellen Anweisungen, die Ihnen das Ministerium für Fehlinformation mit Stolz vorgelegt hat ( Ссылка ), sind einfach falsch.

Bevor Sie die Bibliotheken importieren, gehen Sie zu sdk \ extras \ google \ market_apk_expansion \ downloader_library und bearbeiten Sie die project.properties, um die Zeile "android.library.0" vollständig zu entfernen. Möglicherweise müssen Sie auch die Android-Zielversionszeile in derselben Datei aktualisieren, damit sie der Zielversion Ihres vorhandenen Projekts entspricht.

Folgen Sie den Installationsanweisungen auf der oben verlinkten Seite "Vorbereiten der Verwendung der Downloader-Bibliothek"   Schritt 2 sollte "Datei & gt; Neu & gt; Importmodul" sein und nicht "Datei & gt; Neu & gt; Neues Modul".

Nachdem Sie beide Module importiert haben, gehen Sie zu "Datei & gt; Projektstruktur" und fügen Sie Abhängigkeiten hinzu:

  • Ihre App sollte eine "Modulabhängigkeit" sowohl für die Lizenzierung als auch für die Lizenz haben Downloader-Bibliotheken
  • Die Downloader-Bibliothek sollte eine "Modulabhängigkeit" in der Lizenzbibliothek
  • haben

Der Schritt "Sie müssen den BASE64_PUBLIC_KEY-Wert als den öffentlichen Schlüssel Ihres Publisher-Kontos aktualisieren". ist auch falsch. Sie benötigen den öffentlichen Schlüssel für diese bestimmte App , nicht Ihren Account , der sich in der Online-Entwicklerkonsole unter "Services & amp; APIs" befindet, nachdem Sie die App ausgewählt haben.

Sowohl die Lizenzüberprüfungsbibliothek als auch die Downloaderbibliothek hängen von einem jetzt entfernten Paket "org.apache.http"

ab

Ersetze zwei Instanzen der "decodeExtras" -Methode (eine in APKExpansionPolicy.java, eine in ServerManagedPolicy.java) mit:

%Vor%

Zur Laufzeit abstürzen und sagen: "Service Intent muss explizit sein"

Siehe die Antwort auf Ссылка .

W / LicenseValidator: Fehler beim Kontaktieren des Lizenzservers

Die Lizenzüberprüfungsbibliothek funktioniert nicht auf einem Emulator, und dies ist der Fehler, der ausgelöst wird. Wenn Sie auf einem echten Gerät sind, kann es sich um ein echtes Timeout handeln.

Debug-Versionen schlagen eine Signaturprüfung fehl (Signaturprüfung fehlgeschlagen), daher wird der Zugriff verweigert.

Die Binärdatei, die den Lizenzverifizierungsdienst aufruft, muss eine korrekt signierte Release-Version sein. Wenn Sie eine Debugkopie ausführen, die nicht der Fall ist, schlagen die Lizenzprüfungen fehl.

  • Gehen Sie zu Ihrer Online-Entwicklerkonsole, Einstellungen, Kontodetails
  • Ändern Sie die "License Test Response" auf "LICENSED" (oder was auch immer Sie testen)
  • Geben Sie unter "Google Mail-Konten mit Testzugang" Ihre E-Mail-Adresse ein.

Downloader gibt "STATE_COMPLETED" zurück, aber der Download ist noch nicht abgeschlossen.

Dies ist ein Nebeneffekt der vorherigen Änderung. Sie sind lizenziert, aber die APK-Erweiterungsdateien werden immer noch nicht bereitgestellt, da Sie nicht wirklich lizenziert sind. Mit diesem Schritt können Sie die Downloads nach der Verteilung tatsächlich testen, anstatt Dateien manuell auf Ihren Testgeräten abzulegen.

  • Erstellen Sie einen Aktionscode für die App.
  • Erstellen Sie auf Ihrem Gerät einen neuen Nutzer für ein völlig neues Google Mail-Konto.
  • Melden Sie sich als neuer Nutzer bei Ihrem Gerät an und lösen Sie den Gutscheincode ein. Sie sind jetzt ein echter App-Besitzer.
  • Fügen Sie das neue Google Mail-Konto unter "Google Mail-Konten mit Testzugang" wie im vorherigen Abschnitt hinzu.

Sie können dies nicht mit dem Konto des Entwicklers tun, da der Kauf oder das Einlösen fehlschlägt, was bedeutet, dass Sie niemals eine Kopie Ihres eigenen Produkts besitzen können, was bedeutet, dass der OBB-Download niemals funktioniert.

Nachdem Sie nun ein zweites Konto mit einer echten Play Store-Kopie der App und haben, die als Testkonto mit einem "falschen" LICENSED-Status registriert ist, können Sie eine Debug-Kopie von Ihr Code, erhalten Sie den LICENSED Status, und haben die Downloads funktionieren wie Sie es erwarten.

W / LVLDL: Abbrechen der Anforderung zum Herunterladen whavever .obb: Beim Schreiben der Zieldatei: java.io.FileNotFoundException:

Seit Android v23 ist es erforderlich, explizit die Berechtigung zum Schreiben auf "externen Speicher" anzufordern, unabhängig davon, ob es sich um eine SD-Karte handelt oder nicht, und zusätzlich dazu, dass die Berechtigung in Ihrem Manifest aufgeführt ist. Siehe Ссылка .

Die "Datei nicht gefunden" bezieht sich auf das -Verzeichnis auf dem externen Speicher, in den die Downloader-Bibliothek die OBB-Datei einfügen möchte, die sie nicht erstellen konnte.Eine Ausnahme wird ausgelöst, wenn sie die Datei nicht erstellen kann, aber sie schlägt automatisch fehl, wenn sie das Verzeichnis nicht erstellen kann . Siehe processResponseHeaders() in DownloadThread.java.

W / LVLDL: Abbrechen der Anforderung für den Download-Hauptteil. was auch immer .obb: http-Fehler 410

Die Versionsnummer Ihrer App muss mit einer aktuellen APK übereinstimmen, die Google kennt, andernfalls wird Ihre Download-Anfrage mit dem Fehler 410 abgelehnt.

Die Bibliothek überprüft die Lizenz nicht erneut, wenn sie einmal als gültig befunden wurde.

Wenn Sie testen, müssen Sie die Dinge wahrscheinlich einige Male wiederholen. Die Lizenzüberprüfungsbibliothek speichert ihren Zustand, nachdem sie LIZENZIERT wurde. Sie können diese löschen, ohne Ihre App vollständig zu deinstallieren:

%Vor%

Es hält auch den heruntergeladenen OBB an Ort und Stelle, der gefunden und gelöscht werden kann mit:

%Vor%

Nun, wenn Sie mich entschuldigen, gehe ich für einen Monat oder so zu einem spirituellen Retreat.

    
Jim Keir 30.12.2016, 17:06
quelle
6

Der APK + Expansion-Workflow hat neben der vom Autor beschriebenen Laufzeit noch weitere nicht-intuitive und undokumentierte Fehler:

  1. Erhöhen Sie den APK-Versionscode, aber verwenden Sie dieselbe (alte) Erweiterungsdatei. Wenn Sie das neue APK nicht auf Ihre Entwicklerkonsole hochladen, funktioniert der Download möglicherweise nicht von der aktualisierten App (die direkt mit adb installiert wurde). Die Fehlermeldung ist auch nicht hilfreich: "Download fehlgeschlagen, weil die Ressourcen nicht gefunden werden konnten". Für mich sieht es so aus, als würde Google sagen: "Ok, ich weiß über diese Version der Erweiterungsdatei, aber ich weiß nichts über diese App-Version". Ich habe in der aktuellen Dokumentation keinen Hinweis auf diese Anforderung gefunden.

  2. Neues APK, das auf die Entwicklerkonsole hochgeladen wurde, scheint die Erweiterung der Dateierweiterung aus dem alten APK zu "erfassen". Beispiel: Wenn Sie das neue APK löschen (aber das alte behalten, das die gleiche Version wie die Erweiterung hat), scheint die Erweiterungsdatei ebenfalls zu verschwinden. Vielleicht dachten sie, der Workflow wäre "Wir müssen die Erweiterung mit der neuen APK verknüpfen, damit der Entwickler die alte APK ohne Probleme löschen kann". Dies ist jedoch ein weiterer Fehler, der nirgends beschrieben wird.

Dies sind vorläufige Notizen. Ich habe eine Supportanfrage gestellt, die diese Ergebnisse bestätigen könnte, also werde ich hier Updates posten, wenn (wenn?) Sie antworten ...

    
user2154321 10.03.2013 17:56
quelle
0

Es gibt zwei Standardmethoden, um die Erweiterungsdateien zu erhalten (Sie können dies als Annahme annehmen).

  1. Angenommen, Sie haben zu Beginn keine Erweiterungsdatei, wenn Ihre Anwendung gestartet wird.
  2. Überprüfen Sie, ob die Datei in obvious location oder nicht vorhanden ist.

Auf diese Weise verhält sich Ihre App wie gewohnt. Der beste Teil dieses Ansatzes ist die Möglichkeit, eine Anforderung zum Herunterladen der Dateien zu stellen.

Dies sind die Notizen von der Entwickler-Website.

Note: The URL that Google Play provides for your expansion files is unique for every download and each one expires shortly after it is given to your application.

Note: Whether your application is free or not, Google Play returns the expansion file URLs only if the user acquired your application from Google Play.

So verwenden Sie
Hier stellt man die Download-Anfrage

Hoffe, das wird dir helfen, das Ergebnis zu bekommen.

    
Ajay Kumar Meher 25.09.2012 07:05
quelle
0

Wenn Sie vollständigen Code aus der Beispielanwendung verwenden, haben Sie den Versionscode in dem folgenden Codeabschnitt geändert: -

%Vor%     
Ankit 15.11.2013 14:58
quelle

Tags und Links