Android. ERROR_COULD_NOT_MOUNT при монтировании сложного зашифрованного файла OBB
Я разрабатываю приложение для Android, в котором используется зашифрованный файл obb. Этот файл obb состоит из 3 файлов (я создал его с помощью инструмента jobb). На большинстве устройств все в порядке, но на трех устройствах есть ERROR_COULD_NOT_MOUNT. И я не понимаю, как это исправить. Я хочу распространять приложение без ошибок:) Пожалуйста, помогите мне сделать это!:)
Что я попробовал:1) Размонтировать и смонтировать файл obb; 2) Создайте файл obb из папки без атрибута "только для чтения". Но все это не сработает.
Действия по воспроизведению проблемы (включая пример кода, если это необходимо).1) Создайте папку, поместите в нее 3 разных файла. 2) Создайте файл obb из папки с шага 1. 3) Попробуйте смонтировать этот файл из приложения (пример кода ниже).
окончательный файл mainFile = новый файл (Environment.getExternalStorageDirectory() + "/Android/obb/" + packageName + "/" + "основной" + versionCode + "." + packageName + ".obb"); OnObbStateChangeListener listener = new OnObbStateChangeListener() { @Override public void onObbStateChange(String path, int state) { super.onObbStateChange(путь, состояние); if (state == OnObbStateChangeListener.MOUNTED) { doNextSteps(); } else if (state == OnObbStateChangeListener.ERROR_COULD_NOT_MOUNT) { Toast.makeText(getApplicationContext(), "ERROR_COULD_NOT_MOUNT", Toast.LENGTH_LONG).show(); } } }; if (!storageManager.isObbMounting (mainFile.getAbsolutePath())) { storageManager.unmountObb(mainFile.getAbsolutePath(), true, listener); storageManager.mountObb(mainFile.getAbsolutePath(), "password_string", слушатель); } еще { doNextSteps (); }
Что случилось. У меня ошибка "ERROR_COULD_NOT_MOUNT" на следующих устройствах: 1) HTC PJ401 One S; 2) Samsung GT-I9505 Galaxy S IV; 3) Samsung SM-N9005 Galaxy Note 3. Но на Samsung SM-N900T Galaxy Note 3 и Samsung GT-I9500 Galaxy S IV все в порядке.
2 ответа
Итак, после всех моих расследований я могу сказать. Все, что я могу сделать, это обойти. И я создал один файл из этих 3 файлов
копия /B file1+file2+file3 result_file.obb
И тогда я использую этот файл как незашифрованный объект. После всех этих манипуляций все работает хорошо.
Я нахожу причину для некоторого файла OBB не смог быть примонтирован. При создании файла obb происходит случайное совпадение - хеш-ключ, генерируемый PBKDF2WithHmacSHA1. хэш-ключ из байтов, преобразованных в шестнадцатеричную строку, содержит ошибку. Я представляю патч для проекта: платформа / фреймворк / база.
https://android-review.googlesource.com/
Я изменил инструмент JobB. Добавьте галочку проверки, чтобы пропустить сгенерированный неверный ключ. Перед тем, как Android объединит патч, вы можете использовать этот патч. Этот патч также исправляет ошибку в файлах дампа.