2013-10-18 11 views
10

Próbuję przetestować rozszerzeń plików paczka (OBB) w Android następujących instrukcji tutaj: http://developer.android.com/google/play/expansion-files.htmlGdzie umieścić plik OBB, aby przetestować pliki dodatku (OBB) systemu Android na moim Nexusie 4?

jestem na etapie, gdy trzeba przetestować aplikację na moim Nexus 4.

i generowane mój plik .obb z jobb i ADB-popchnął go w urządzeniu w tej lokalizacji:

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

Gdy aplikacja uruchomić go nie znajdzie plik.

Metoda:

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

return false dla mojego pliku.

I debugowania i okazało się, że szuka pliku w:

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

Konkretnie jest to ścieżka zwrócony przez:

Helpers.generateSaveFileName(c, fileName) 

katalogu/przechowywania/emulowane/0, zwrócony przez środowiska .getExternalStorageDirectory() nie istnieje podczas przeglądania urządzenia z powłoką adb.

Ale to działa w czasie wykonywania, wewnątrz aplikacji, sprawdziłem również, co zawiera: zawiera prawie to samo, co znalazłem w/mnt/shell/emulated/0, zawiera katalog Android/obb, który jest pusty .

Jak się dowiedziałem ścieżkę /mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb gdzie umieściłem mój plik 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 

A wewnątrz tego już znalazłem katalog Android/obb, pusty.

Pytanie brzmi: gdzie powinienem umieścić mój plik obb, aby znajdował się we właściwym miejscu w czasie pracy?

Zrobiłem wszystko powiedział tam:

  • stworzył projekt aplikacji na rynku, aby uzyskać klucz publiczny

  • generowane losowo tablicy 20 bajtów (sól)

  • zintegrowanego play_licensing/library i play_apk_expansion/download_library

  • napisał moją służbę/odbiornik

  • sprawdził za pomocą pomocy itp. Dokładnie tak, jak mówi dokumentacja.

Podejrzewam, że wszystko działa, ale nie mogę jeszcze wydać jeszcze w Sklepie Play! Muszę przetestować lokalnie i będę potrzebował zmienić mój obb plik dość często w początkowej fazie rozwoju.

Nie mogę przetestować na emulatorze, ponieważ używam 3D i kamery urządzenia.

Odpowiedz

20

Dodano obsługę wielu użytkowników systemu Android 4.2.

Aby umożliwić systemowi Android zamontowanie emulowanego dysku dla każdego użytkownika działającego jako warstwa piaskownicy wokół rzeczywistego systemu plików: pozwala to na łatwe przenoszenie plików z systemem Android między użytkownikami albo plikami osobistymi.

Krótko mówiąc:

/storage/emulated 

jest emulowany system plików.

jeśli wpiszesz ten katalog z adb shell można zobaczyć katalog

/storage/emulated/obb 

. Czasami nie pojawia się, z jakiegoś powodu (zobacz poniżej, co zrobić, jeśli tak się stanie)

Nie ma go w/Android/obb, ale jest to właściwy katalog, w którym można umieścić pakiet aplikacji/plik obb!

Jeśli nie zobaczyć, że katalog spróbuj poszukać w:

/mnt/shell/emulated/obb 

Powinieneś móc umieścić plik istnieje.

To będzie poprawnie odebrać w czasie wykonywania kończąc na ścieżce

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

.

Myślę, że dokumentacja Androida powinna to wyjaśnić.

(I odpowiedzieć na moje własne pytanie, bo okazało się, jak go rozwiązać podczas pisania.)

+0

czy to nie wystarczy? https://developer.android.com/reference/android/os/storage/StorageManager.html#getMountedObbPath%28java.lang.String%29 –

+2

To, co łączysz, jest ABSOLUTNIE właściwym interfejsem API do użycia przez kod, ale mówimy o tym, aby wiedzieć, gdzie fizycznie umieścić plik obb na urządzeniu, aby można było przetestować aplikację bez konieczności jej ponownego użycia w Google Play. Podczas pracy z plikiem Obb generujesz plik Obb na komputerze, a następnie musisz go umieścić w systemie plików urządzenia, aby przetestować. Chodzi o znalezienie właściwej ścieżki systemu plików do załadowania pliku OBB. –

1

Dla mnie prawidłowa lokalizacja to: mnt/sdcard/Android/OBB/nameofyourpackage/

NIE

"/mnt/shell "

+0

zależy to od wersji systemu operacyjnego. Jakie masz urządzenie, z którym wersją systemu operacyjnego? –

+0

masz rację, dotyczy to tylko emulatora Androida 4.2 – cal

Powiązane problemy