2013-10-18 9 views
10

sto cercando di testare il pacchetto di espansione Files (OBB) In Android seguendo la guida qui: http://developer.android.com/google/play/expansion-files.htmlDove posizionare il file OBB per testare i file del pacchetto di espansione Android (OBB) sul mio Nexus 4?

Sono nella fase in cui ho bisogno di testare la mia applicazione sul mio Nexus 4.

ho generato il mio file .obb con jobb e ADB-spinto nel dispositivo in questa posizione:

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

Quando l'applicazione esegue non trova il file.

Metodo:

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

return false per il mio file.

I debug e scoperto che è alla ricerca di file in:

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

In particolare questo è il percorso restituito da:

Helpers.generateSaveFileName(c, fileName) 

Il/stoccaggio/emulato/0, restituito da Ambiente .getExternalStorageDirectory() non esiste sfogliando il dispositivo con la shell adb.

Ma in fase di esecuzione, all'interno dell'applicazione, ho controllato anche ciò che contiene: contiene quasi le stesse cose che ho trovato in/mnt/shell/emulato/0, contiene la directory Android/obb, che è vuota .

Come ho scoperto il percorso /mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb dove ho messo il mio file OBB:

$ 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 

E al suo interno ho già trovato la directory Android/OBB, vuota.

Quindi la domanda è: dove devo mettere il mio file obb per essere nella giusta posizione in fase di esecuzione?

ho fatto tutto quello che ha detto che ci:

  • creato un progetto di applicazione nel mercato per ottenere la chiave pubblica

  • generato una serie casuale di 20 byte (sale)

  • integrato play_licensing/library e play_apk_expansion/download_library

  • ha scritto il mio servizio/ricevitore

  • ha effettuato il controllo utilizzando gli Helpers ecc. Esattamente come dice la documentazione.

Suppongo che tutto funzioni ma non posso ancora rilasciare su Play Store! Ho bisogno di testare localmente e avrò la necessità di cambiare il mio file obb abbastanza spesso in questa fase iniziale di sviluppo.

Non riesco a testare sull'emulatore perché utilizzo la fotocamera 3D e del dispositivo.

risposta

20

Da quando è stato aggiunto il supporto per utenti multipli di Android 4.2.

Supporta che Android monti un disco emulato per ciascun utente che funge da livello sandbox attorno al filesystem effettivo: ciò consente a Android di gestire con garbo la condivisione dei file tra gli utenti sia i file personali.

Lunga storia breve:

/storage/emulated 

è il filesystem emulato.

se si immette tale directory da adb shell potrebbe apparire una directory

/storage/emulated/obb 

. A volte non appare, per qualche motivo (vedi sotto per cosa fare se questo accade)

Non è in/Android/obb ma questa è la directory giusta in cui collocare il pacchetto app/file obb!

Se non vedi quella directory provare a cercare in:

/mnt/shell/emulated/obb 

Si dovrebbe essere in grado di mettere il file lì.

Sarà preso correttamente in fase di esecuzione termina al percorso

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

.

Penso che la documentazione di Android dovrebbe spiegare questo.

(io rispondo alla mia domanda, perché ho trovato il modo di risolverlo durante la scrittura di esso.)

+0

non dovrebbe fare questo trucco? https://developer.android.com/reference/android/os/storage/StorageManager.html#getMountedObbPath%28java.lang.String%29 –

+2

Ciò che hai collegato è ASSOLUTAMENTE l'API corretta da utilizzare per codice, ma stiamo parlando per sapere dove posizionare fisicamente il file obb sul dispositivo in modo da poter testare la tua app senza doverla riposizionare su Google Play. Mentre si sta sviluppando contro un file Obb si genera il file Obb sul PC, quindi si deve posizionarlo da qualche parte sul filesystem del dispositivo per testarlo. Si tratta di trovare il percorso giusto del filesystem per caricare il file OBB. –

1

Per me la posizione corretta è: mnt/sdcard/Android/OBB/nameofyourpackage/

NON

"/mnt/shell "

+0

che dipende dalla versione del sistema operativo. Quale dispositivo hai, con quale versione del sistema operativo? –

+0

hai ragione, questo vale solo per Android Emulator 4.2 – cal