Пробовал читать видео из моего расширения apk (файл .obb), но он, похоже, не работает. Последовали за каждым шагом, упомянутым в официальных документах Android. Я использую пример-приложение (Пример загрузчика приложения в Android-sdk/extras/google/play_apk_expansion/downloader_sample), чтобы проверить, могу ли я прочитать файл .obb. Это то, что я сделал.Не удалось прочитать/получить доступ к видеофайлам внутри файла расширения APK Expansion (.obb). Он выбрасывает nullpointerexception
Создал ZIP-файл с нулевым сжатием из моих видеофайлов .mp4 как «videos.zip».
Успешно создан файл .obb с помощью инструмента «jobb» для Android.
Разместил файл obb (main.6.com.example.expansion.downloader.obb) в /sdcard/Android/obb/com.example.expansion.downloader/.
Создал новый класс MediaPlayerActivity (MediaPlayerActivity.java), где я пытаюсь воспроизвести видеофайл внутри файла .obb.
expansionFile = APKExpansionSupport.getAPKExpansionZipFile(this, 6, 0); ..... ..... ..... AssetFileDescriptor afd = expansionFile.getAssetFileDescriptor("sample1.mp4"); //nullpointerexception at this line. Log.i("afd: ", ""+afd); //afd is null. How come??
Пытались также следующее (на всякий случай)
expansionFile.getAssetFileDescriptor("videos/sample1.mp4"). But it gives the same nullpointerexception.
Пожалуйста, помогите людям.
Спасибо!
Редактировать: Возможно, я нашел источник ошибки. Но все еще не знаю, как это исправить. Фактически, сам файл extensionFile содержит нулевые значения.
expansionFile = APKExpansionSupport.getAPKExpansionZipFile(this,
6, 0);
Log.i("expansionFile: ", ""+expansionFile); //--> expansionFile is null
Кроме того, была еще одна ошибка в LogCat я мог бы пропускал раньше: -> «Не Zip архив», который ведет свое существование метода addPatchFile (zipFilename) в ZipResourceFile.java.
int header = read4LE(f);
if (header == kEOCDSignature) {
Log.i(LOG_TAG, "Found Zip archive, but it looks empty");
throw new IOException();
} else if (header != kLFHSignature) {
Log.v(LOG_TAG, "Not a Zip archive");
throw new IOException();
}
Теперь, когда я попытался отслеживании метод-звонки, я узнал, что мой
APKExpansionSupport.getAPKExpansionZipFile (...) в свою очередь, вызывает getResourceZipFile (expansionFiles) которые, в свою очередь, вызывает addPatchFile (expandFilePath), где он показывает журнал -> «Не zip-архив», как показано выше в фрагменте кода. Поэтому я предполагаю, что файл .obb должен быть преобразован в zip-файл (нулевое сжатие снова), которое я сделал, и переименовал файл obb в «main.6.com.example.expansion.downloader.obb.zip» (и по понятным причинам. Я также переименовал obb-путь в код в < ...>. obb.zip). Сделав все это, теперь extensionFile не содержит нулевого значения, но все же мой AssetFileDescriptor afd присваивается значение null. Ну, очевидно, этот подход кажется мне некорректным (как я думаю, файл .obb не должен быть заархивирован до < ..>. Obb.zip. Также попробовали с тем же именем obb-файла после zipping (т. Е. Без каких-либо .zip расширение). Это тоже не сработало).
Пожалуйста, помогите.
P.S .: Посмотрел по всей сети «stackoverflow» &, но ни один из них не помог.
Насколько я понимаю, файл .obb совпадает с zip-файлом, а это значит, что если вы используете инструмент JOBB в zip-файле, вы выполняете двойное сжатие. Вы должны либо заархивировать, либо запустить инструмент JOBB. Надеюсь это поможет. –