Куда мне поместить файл OBB для тестирования файлов пакета расширения Android (OBB) на моем Nexus 4?

Я пытаюсь протестировать файлы пакета расширения (OBB) в Android, следуя руководству здесь: http://developer.android.com/google/play/expansion-files.html

Я нахожусь на этапе, когда мне нужно протестировать свое приложение на Nexus 4.

Я сгенерировал свой файл .obb с помощью jobb и вставил его с помощью adb на устройство в этом месте:

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

Когда приложение запускается, оно не находит файл.

Метод:

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

вернуть false для моего файла.

Я отлаживал и обнаружил, что он ищет файл в:

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

В частности, это путь, возвращаемый:

Helpers.generateSaveFileName(c, fileName)

/ Storage / emulated / 0, возвращаемый Environment.getExternalStorageDirectory (), не существует при просмотре устройства с помощью оболочки adb.

Но он ДЕЙСТВУЕТ во время выполнения, внутри приложения, я также проверил, что он содержит: он содержит почти то же, что я нашел в / mnt / shell / emulated / 0, он содержит каталог Android / obb, который пуст.

Как я узнал путь /mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb, куда я поместил свой 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

И внутри я уже нашел пустую директорию Android / obb.

Итак, вопрос: куда мне поместить мой obb-файл, чтобы он находился в правильном положении во время выполнения?

Я сделал все, что там сказано:

  • создал в Маркете черновик приложения для получения публичного ключа

  • сгенерировал случайный массив из 20 байт (соль)

  • интегрированы play_licensing / library и play_apk_expansion / download_library

  • написал мою службу / получателя

  • проверил с помощью Помощников и т. д. точно так, как сказано в документации.

Полагаю, все работает, но я пока не могу выпустить в Play Store! Мне нужно протестировать локально, и мне придется часто менять свой obb-файл на этом начальном этапе разработки.

Я не могу тестировать на эмуляторе, потому что использую 3D и камеру устройства.


person Daniele Segato    schedule 18.10.2013    source источник


Ответы (2)


Начиная с Android 4.2 добавлена ​​поддержка нескольких пользователей.

Для поддержки этого Android смонтируйте эмулируемый диск для каждого пользователя, действующего как слой песочницы вокруг фактической файловой системы: это позволяет Android изящно обрабатывать как совместное использование файлов между пользователями, так и личные файлы.

Короче:

/storage/emulated

это эмулируемая файловая система.

если вы войдете в этот каталог из оболочки adb, вы можете увидеть

/storage/emulated/obb

каталог. Иногда он не появляется по какой-то причине (см. Ниже, что делать, если это произойдет)

Его нет в / Android / obb, но это правильный каталог, где разместить файл пакета / obb вашего приложения!

Если вы не видите этот каталог, попробуйте поискать в:

/mnt/shell/emulated/obb

Вы должны иметь возможность поместить туда свой файл.

Он будет правильно выбран, когда время выполнения закончится на

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

дорожка.

Я думаю, что документация Android должна объяснить это.

(Я отвечаю на свой вопрос, потому что я узнал, как его решить, когда писал.)

person Daniele Segato    schedule 18.10.2013
comment
разве это не поможет? developer.android.com/ ссылка / android / os / storage / - person Gianluca P.; 17.04.2014
comment
То, что вы связали, является АБСОЛЮТНО правильным API для использования в коде, но мы говорим о том, чтобы знать, где физически разместить obb-файл на устройстве, чтобы вы могли протестировать свое приложение, не публикуя его в Google Play. Во время разработки на основе файла Obb вы создаете файл Obb на своем ПК, а затем должны поместить его где-нибудь в файловой системе устройства для тестирования. Речь идет о поиске правильного пути к файловой системе для загрузки файла OBB. - person Daniele Segato; 18.04.2014

Для меня правильное расположение: mnt / sdcard / Android / obb / nameofyourpackage /

НЕ "/ mnt / shell"

person cal    schedule 14.01.2015
comment
это зависит от версии ОС. Какое у вас устройство, с какой версией ОС? - person Daniele Segato; 16.01.2015
comment
вы правы, это касается только Android Emulator 4.2 - person cal; 16.01.2015