Я разрабатываю интеграцию obb для «файлов расширения». Я заставил его работать локально, скопировав файл .obb на SD-карту устройства (4.1), но на моих устройствах 4.2 он больше не работает.
1) На планшете 4.1: работает хорошо. Я отправил свой файл пакета расширений с помощью команды adb на планшете, а затем смог найти файл и прочитать его:
adb push main.1.mypackage.obb /sdcard/Android/obb/mypackage/
shell@android:/sdcard/Android/obb/mypackage/ $ ls -al
-rw-rw-r-- root sdcard_rw 20314171 2013-08-05 18:01 main.1.mypackage.obb
2) В 4.2: та же процедура, что и выше, файл не «видим», оба метода exists() и canRead() в основном действии возвращают false.
adb push main.1.mypackage.obb /sdcard/Android/obb/mypackage/
shell@android:/sdcard/Android/obb/mypackage/ $ ls -al
-rw-rw-r-- root sdcard_rw 20314171 2013-08-05 18:54 main.1.mypackage.obb
Решение : Оттуда я исследовал с помощью приложения «Передача файлов Android» и обнаружил, что папка obb пуста из инструмента… так что это не те папки, в которые я помещаю данные…
Я загрузил .obb с помощью приложения «Android File Transfer», и тогда он работает… Но в этом случае я не знаю, где хранятся файлы (не на SD-карте, я думаю??)
Итак, ребята, что мне нужно изменить в 4.2 для доступа к моему файлу .obb? заранее спасибо
Дополнительная информация:
а) Я сделал базовый тест для проверки существования файла, используя "file.exists() + " canRead=" + file.canRead()" с Environment.getExternalStorageDirectory :
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/Android/obb/packagename/main.1.packagename.obb");
б) Процедура написана по сценарию, поэтому проблема не возникает из-за ручной ошибки (и трижды проверьте все)
ИЗМЕНИТЬ
в) Подводя итог:
С «adb push» на 4.2 он работает для «обычных» данных: если я помещаю папку с изображениями в /sdcard/myfolder/, он работает, но не ниже /sdcard/android/.
Android File Transfer показывает папку «Android/obb» в корне, а файлы .obb видны из кода в этом случае, но:
- Я не могу подтвердить, что он находится на /sdcard из «Приложения для передачи файлов Android», что меня беспокоит, так это то, что при выполнении «adb shell ls /sdcard/Android/obb» отображается, что папка пуста…
- Я не могу использовать один и тот же сценарий для версий 4.1 и 4.2, проверить производственную процедуру и использовать ее в разработке, чтобы сэкономить много времени с помощью легкого apk (и сэкономить время на сборке и развертывании)…
РЕШЕНИЕ ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ
Для ‹ 4.1
adb push main.1.mypackage.obb /sdcard/Android/obb/mypackage/
Для >= 4,2
adb push main.1.mypackage.obb /mnt/shell/emulated/obb/mypackage/