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:
- ¿Dónde colocar el archivo OBB para probar los archivos de paquete de expansión de Android (OBB) en mi Nexus 4?
- Cómo agregar archivos de expansión de Android con Qt
- ¿Cómo montar archivos de expansión APK cifrados?
- GetFileDescriptor devuelve null mientras lee archivos mp3 de los archivos de expansión
- Actualizar la aplicación android con el archivo de expansión en Play Store
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.
- Google Play: cómo evitar la descarga del gran archivo de expansión APK cuando el usuario instala la APP desde el mercado
- Cómo crear archivos OBB USANDO la herramienta jobb Android
- Pasos para crear un archivo de expansión APK
- Depuración de la aplicación de Android después del lanzamiento
- Archivo de expansión descargado pero no disponible
- Deshabilitar la descarga automática de archivos de expansión APK
- Leer el contenido del archivo de expansión APK (del archivo obb)
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í.