No se puede montar el archivo .obb (estado = 21) en la nota de Meizu m3

Me he encontrado con otro extraño problema con APK Archivos de expansión (.obb-files). Mi archivo de expansión se monta bien en todos mis dispositivos de prueba:

  • Sony Xperia Z1 Compact (API 22)
  • Sony Xperia Z1 Ultra (API 22)
  • LG Nexus 5X (API 23)
  • LG Nexus 4 (API 17)

He creado el archivo cifrado .obb con jobb -utilite:

Jobb -o obb -nombre de archivo -d archivos-dir -k contraseña -pn applicationId -pv versionCode

En mi aplicación leí el archivo .obb con el código siguiente:

public void initialize(final Context context) { final StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE); final File mainObbFile = getMainObbFile(); final OnObbStateChangeListener listener = new OnObbStateChangeListener() { @Override public void onObbStateChange(String path, int state) { super.onObbStateChange(path, state); if (state == OnObbStateChangeListener.MOUNTED) { // work with obb file } else { throw new RuntimeException("OnObbStateChangeListener::onObbStateChange - can't mount .obb file (state = " + state + ")."); } } }; final String key = BuildConfig.MAIN_XAPK_KEY; if (storageManager.isObbMounted(mainObbFile.getAbsolutePath())) { // work with obb file } else if (!storageManager.mountObb(mainObbFile.getAbsolutePath(), key, listener)) { throw new RuntimeException("Can't create listener for mounting .obb file."); } } 

Y todo funciona bien. Pero en la nota de Meizu m3 (API 22) obtuvimos un error extraño: "OnObbStateChangeListener :: onObbStateChange – no se puede montar el archivo .obb (state = 21)".

Anteriormente, me he encontrado con este problema y se resolvió con otra generación de .obb-file. Pero en este caso no ayudó. También, he intentado generar el archivo .obb con la herramienta fija del jobb ( https://github.com/monkey0506/jobbifier.git ), y no trabaja.

Puede ser cualquier persona sabe, lo que está mal, ¿por qué a veces los archivos .obb no funciona en algunos dispositivos? ..

ACTUALIZAR
Además, he comprobado el montaje de archivo .obb no cifrado en Meizu. Funciona.

Gracias por adelantado.

Tuve el mismo problema, y ​​me di cuenta de que muchas veces el error 21 es causado por los permisos de archivos de Linux sobre el obb, y el problema es que Android no puede tener acceso a él para que el StorageManager inicia Error 21. Cuando crea el archivo .obb , Cambie los permisos y el grupo de usuarios al archivo, algo así como:

 $chmod 664 <obb-filename>.obb $chown user:group <obb-filename>.obb 

Entonces inténtalo de nuevo, trabajó para mí.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.