2013-10-18 4 views
10

Ich versuche, das Expansion Pack-Dateien (OBB) In Android im Anschluss an die Führung zu testen hier: http://developer.android.com/google/play/expansion-files.htmlWohin mit der OBB-Datei, um Android-Erweiterungspack-Dateien (OBB) auf meinem Nexus 4 zu testen?

ich im Schritt bin, wo ich meine App auf meinem Nexus testen 4.

ich erzeugen meine .obb Datei mit jobb und es in dem Gerät in diesem Ort adb-geschoben:

/mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb 

Wenn die Anwendung ausführt es die Datei nicht finden.

Methode:

Helpers.doesFileExist(context, fileName, xf.mFileSize, false) 

return false für meine Datei.

ich gedebuggt und fand heraus, es wird in der Datei suchen:

Helpers.generateSaveFileName(c, fileName) 

Der/storage/emulierten/0, zurückgegeben von Umwelt:

/storage/emulated/0/Android/obb/my.package/main.1.my.package.obb 

Insbesondere dies der Weg zurück ist .getExternalStorageDirectory() existiert nicht beim Durchsuchen des Geräts mit der AdB-Shell.

Aber es tut zur Laufzeit, in der App, ich auch überprüft, was es enthält: Es enthält fast die gleichen Dinge, die ich in/mnt/shell/emuliert/0 gefunden, enthält das Android/obb dir, das leer ist .

Wie fand ich den Weg aus /mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb, wo ich meine OBB-Datei abgelegt:

$ adb shell 
$ ls -ld sdcard 
lrwxrwxrwx root  root    2013-10-16 17:34 sdcard -> /storage/emulated/legacy 
$ ls -ld /storage/emulated/legacy 
lrwxrwxrwx root  root    2013-10-16 17:34 legacy -> /mnt/shell/emulated/0 

Und darin fand ich bereits das Android/obb-Verzeichnis, leer.

Die Frage ist also: Wo sollte ich meine OBB-Datei setzen, damit sie zur Laufzeit in der richtigen Position ist?

Ich habe alles gesagt, was es:

  • einen Entwurf Anwendung auf dem Markt erstellt der öffentliche Schlüssel

  • erzeugt eine zufällige Anordnung von 20 Byte (Salz)

  • integriert zu bekommen play_licensing/library und play_apk_expansion/download_library

  • schrieb meinen Service/Empfänger

  • hat die Überprüfung mit den Helfern etc .. genau wie die Dokumentation sagen.

Ich nehme an, alles funktioniert, aber ich kann noch nicht im Play Store veröffentlichen! Ich muss lokal testen und ich werde meine Obb-Datei in dieser Anfangsphase der Entwicklung ziemlich oft ändern müssen.

Ich kann nicht auf dem Emulator testen, weil ich 3D und Gerätekamera verwende.

Antwort

20

Seit Android 4,2 Multi-User-Unterstützung wurden hinzugefügt.

Um das Android zu unterstützen mounten eine emulierte Festplatte für jeden Benutzer als eine Sandbox-Schicht um das eigentliche Dateisystem: dies ermöglicht Android behandeln entweder die gemeinsame Nutzung von Dateien zwischen Benutzern entweder persönliche Dateien.

Lange Rede kurzer Sinn:

/storage/emulated 

ist das emulierte Dateisystem.

, wenn Sie das Verzeichnis aus adb Shell eingeben können Sie sehen, ein

/storage/emulated/obb 

Verzeichnis. Manchmal erscheint es nicht, aus irgendeinem Grund (siehe unten, was zu tun ist, wenn dies geschieht)

Es ist nicht in/Android/Obb aber das ist das richtige Verzeichnis, wo Sie Ihre App-Paket/OBB-Datei platzieren!

Wenn Sie nicht das Verzeichnis sehen versuchen in:

/mnt/shell/emulated/obb 

sollten Sie in der Lage sein, die Dateien dort zu setzen.

Es wird richtig zur Laufzeit auf dem Weg

/storage/emulated/0/Android/obb/my.package/main.1.my.package.obb 

endet abgeholt werden.

Ich denke, die Android-Dokumentation sollte dies erklären.

(ich meine eigene Frage zu beantworten, weil ich herausgefunden habe, wie es zu lösen, während es zu schreiben.)

+0

sollte dies nicht den Trick machen? https://developer.android.com/reference/android/os/storage/StorageManager.html#getMountedObbPath%28java.lang.String%29 –

+2

Was Sie verbunden haben, ist ABSOLUTELY die richtige API, um Code zu verwenden, aber wir sprechen wissen, wo Sie die obb-Datei physisch auf dem Gerät platzieren können, damit Sie Ihre App testen können, ohne sie auf Google Play veröffentlichen zu müssen. Während Sie gegen eine Obb-Datei entwickeln, generieren Sie Ihre Obb-Datei auf Ihrem PC und müssen sie dann irgendwo auf das Dateisystem des Geräts legen, um sie zu testen. Hier geht es darum, den richtigen Pfad des Dateisystems zu finden, in den die OBB-Datei hochgeladen werden soll. –

1

Für mich ist der richtige Standort ist: mnt/sdcard/Android/OBB/nameofyourpackage/

NICHT "/mnt/shell "

+0

hängt von der Betriebssystemversion ab. Welches Gerät hast du, mit welcher OS-Version? –

+0

Sie haben Recht, das gilt nur für Android Emulator 4.2 – cal