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 объединит патч, вы можете использовать этот патч. Этот патч также исправляет ошибку в файлах дампа.

https://android-review.googlesource.com/

Другие вопросы по тегам