APK Expansion Datei Download

  • 6 Antworten
  • Letztes Antwortdatum
A

ABpat

Neues Mitglied
0
Hallo zusammen,

ich habe ein ziemlich großes (oder vielleicht auch nur kleines) Problem mit dem Download von einer Expansion Datei.

Ich habe das offizielle Tutorial befolgt: APK Expansion Files | Android Developers
Die APK und die entsprechende Expansion-Datei habe ich in der Developer Console hochgeladen und soweit ist alles eingerichtet.

Allerdings wird die Datei nicht runtergeladen. Es kommt keine Fehlermeldung und per debug konnte ich auch nichts genaues feststellen, außer dass die Methode "startDownloadServiceIfRequired" nur "NO_DOWNLOAD_REQUIRED" zurückliefert obwohl die OBB definitiv nicht auf dem Device ist.

Das einzige das ist feststellen konnte ist:
Wenn man die App auf dem Device deinstalliert und neu drauf spielt kommt die Meldung: "XAPK File Validation Failed".
Die Meldung kommt aber nur nach einer frischen Installation. Bei jedem weiteren App-Start kommt keinerlei Meldung.

Ich hoffe wirklich, dass mir jemand helfen kann.
 
Kann wirklich niemand helfen?
Ich bin echt verzweifelt, die App ist im Grunde fertig nur der Download funktioniert überhaupt nicht und ich sitz fast seit einer Woche dran und komm keinen Schritt voran :unsure:
 
Ich hab das noch nie gebraucht, aber ich versuchs trotzdem mal ;) Deine Beschreibung klingt ein wenig danach, dass schon von Anfang an etwas schief geht. Das würde dann bedeuten, dass vermutlich der Dateiname der Expansion-Datei falsch ist. Der PlayStore versucht beim installieren einer App ja sofort, die Expansion-Datei mitzuladen, wenn sie noch nicht auf dem Gerät existiert. Wenn dort schon der Fehler kommt, findet der PlayStore die richtige Expansion vielleicht nicht.

1. Funktioniert alles, wenn du die Expansion Datei von Hand an den richtigen Ort kopierst?

So kannst du mal eingrenzen, wo das Problem genau liegen könnte. Wenn das manuelle "installieren" funktioniert, dann weisst du schon mal, dass der Dateiname und Pfad stimmt.

2. Wie installierst du die App, wenn du testest? Über den PlayStore oder Eclipse/Android Studio?

Die App lädt die Expansion-Datei nur, wenn die App auf offiziellem Weg (PlayStore) installiert wurde

3. Hast du im Downloader-Service den korrekten Public Key angegeben und ist der auch richtig codiert (Base64)?

Vielleicht kann Google dich nicht richtig authentifizieren und verweigert den Zugriff auf die Datei.

4. Kriegst du vom PlayStore eine URL für den Download? (für den DownloadService)

Die URL ändert bei jeder Anfrage, du kannst sie also nicht hardcodiert irgendwo hinterlegen, sondern musst jedes mal eine neue URL anfordern
 
Zuletzt bearbeitet:
Hi,

danke für deine Antwort:

1.) Ja das funktioniert alles. Die obb wird entpackt und auf die Daten kann zugegriffen werden.

2.) Ich habe mich ganz normal bei der Developer Console angemeldet und alle benötigten Daten (auch die Expansion Datei) hochgeladen. Natürlich noch nicht veröffentlicht.
So wie es in dem offiziellen Google Dokument steht muss die Expansion Datei in der Developer Console hochladen soll und dann "... Install the application on your device using the Eclipse tools or adb..."

3.) Ja, der ist korrekt. Wie gesagt ich hab das alles gemacht wie von Google angegeben bzw. wie im SampleProject.

4.) Wie kann ich das testen bzw. die Download URL abrufen?
 
ABpat schrieb:
1.) Ja das funktioniert alles. Die obb wird entpackt und auf die Daten kann zugegriffen werden.

ok, gut

ABpat schrieb:
2.) Ich habe mich ganz normal bei der Developer Console angemeldet und alle benötigten Daten (auch die Expansion Datei) hochgeladen. Natürlich noch nicht veröffentlicht.
So wie es in dem offiziellen Google Dokument steht muss die Expansion Datei in der Developer Console hochladen soll und dann "... Install the application on your device using the Eclipse tools or adb..."

ah jetzt hab ich den Abschnitt gesehen, habs vorher nur mal kurz überflogen. Ist dein Test-APK mit dem gleichen Key signiert wie das APK im Play Store?

ABpat schrieb:
3.) Ja, der ist korrekt. Wie gesagt ich hab das alles gemacht wie von Google angegeben bzw. wie im SampleProject.

:thumbup:

ABpat schrieb:
4.) Wie kann ich das testen bzw. die Download URL abrufen?

In der Doku steht im Kapitel Download Process folgendes:

If no, your app must download the expansion files over HTTP from Google Play. Your app must send a request to the Google Play client using the Google Play's Application Licensing service, which responds with the name, file size, and URL for each expansion file. With this information, you then download the files and save them to the proper storage location.

und weiter unten bei Rules and Limitations

When performing the download from within your application, the URL that Google Play provides for each file is unique for every download and each one expires shortly after it is given to your application.

Aber möglicherweise kommst du gar nicht soweit, weil startDownloadServiceIfRequired dir NO_DOWNLOAD_REQUIRED zurückgibt... da müsste man evtl. herausfinden, wieso kein Download nötig sein soll. Aber ich weiss nicht, worauf da geachtet wird, um das zu entscheiden. Hast du mal auf der SD-Karte das Verzeichnis gelöscht? Vielleicht reicht es nicht, wenn der Ordner leer ist, sondern er muss ganz weg sein.

Auf einer Hilfeseite habe ich noch folgendes gefunden (bin aber nicht sicher, ob das dich betrifft):

NOTE: due to a current limitation of the new Google Play Developer Console, you won't be able to add additional expansion files to the very first APK file that you upload for a new application. As a work-around, please upload first a placeholder APK file and then replace it with an APK file containing the additional expansion files you need. All of this can be performed while the application is still in draft state, so there is no impact on your (prospective) users.
 
Die "NO_DOWNLOAD_REQUIRED"-Rückmeldung kommt von dieser Methode:
Code:
public static int startDownloadServiceIfRequired(Context context,
            PendingIntent pendingIntent, String classPackage, String className)
            throws NameNotFoundException {
        // first: do we need to do an LVL update?
        // we begin by getting our APK version from the package manager
        final PackageInfo pi = context.getPackageManager().getPackageInfo(
                context.getPackageName(), 0);

        int status = NO_DOWNLOAD_REQUIRED;

        // the database automatically reads the metadata for version code
        // and download status when the instance is created
        DownloadsDB db = DownloadsDB.getDB(context);

        // we need to update the LVL check and get a successful status to
        // proceed
        if (isLVLCheckRequired(db, pi)) {
            status = LVL_CHECK_REQUIRED;
        }
        // we don't have to update LVL. do we still have a download to start?
        if (db.mStatus == 0) {
            DownloadInfo[] infos = db.getDownloads();
            if (null != infos) {
                for (DownloadInfo info : infos) {
                    if (!Helpers.doesFileExist(context, info.mFileName, info.mTotalBytes, true)) {
                        status = DOWNLOAD_REQUIRED;
                        db.updateStatus(-1);
                        break;
                    }
                }
            }
        } else {
            status = DOWNLOAD_REQUIRED;
        }
        switch (status) {
            case DOWNLOAD_REQUIRED:
            case LVL_CHECK_REQUIRED:
                Intent fileIntent = new Intent();
                fileIntent.setClassName(classPackage, className);
                fileIntent.putExtra(EXTRA_PENDING_INTENT, pendingIntent);
                context.startService(fileIntent);
                break;
        }
        return status;
    }

Das kommt daher das "infos" NULL ist. Warum das so ist habe ich trotz Debug nicht ganz verstanden.
Auch wenn man den return auf "DOWNLOAD_REQUIRED" zwingt bringt das nichts.
 
So, jetzt bin ich schon einen Schritt weiter.
Wenn unter "Android/obb/" der Package-Ordner vorhanden ist lädt es die Expansiondatei runter.
Ich dachte immer, dass dieser Ordner automatisch erstellt wird, falls er nicht vorhanden ist. Oder wie verhält sich das?
Ich werde jetzt erstmal versuchen ein Abfrage einzubauen ob der Package-Ordner vorhanden ist und wenn nicht ihn anzulegen.

EDIT: Jetzt steh ich auf dem Schlauch. Jetzt startet der Download auch ohne Package-Ordner?!
Naja Hauptsache es geht ;-)

Trotzdem danke nochmal für die Hilfe.
 
Zuletzt bearbeitet:

Ähnliche Themen

S
Antworten
7
Aufrufe
801
Silvasurf
S
C
Antworten
8
Aufrufe
527
CptGreenwood
C
AnnaBauer21
Antworten
0
Aufrufe
289
AnnaBauer21
AnnaBauer21
D
Antworten
8
Aufrufe
559
jogimuc
J
AnnaBauer21
Antworten
6
Aufrufe
669
AnnaBauer21
AnnaBauer21
Zurück
Oben Unten