2016-10-24 1 views
5

Ich habe mit einem anderen seltsamen Problem mit APK-Erweiterungsdateien (OBB-Dateien) getroffen. Meine Erweiterungsdatei montiert auf allen meinen Testgeräte fein:Kann nicht mounten .obb-Datei (state = 21) auf Meizu m3 Hinweis

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

ich habe erstellt, verschlüsselt mit jobb -utilite .obb Datei:

jobb -o OBB-Dateiname -d Dateien-dir -k Passwort -pn -pv version

In meinem app ApplicationId ich .obb Datei mit folgendem Code lesen:

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."); 
    } 
} 

Und alles funktioniert gut. Aber auf Meizu M3 Hinweis (API 22) wir merkwürdige Fehler: "OnObbStateChangeListener :: onObbStateChange - kann nicht mounten. ODB-Datei (state = 21)".

Zuvor habe ich dieses Problem gelöst und es wurde mit einer anderen Generation von .obb-Datei gelöst. Aber in diesem Fall hat es nicht geholfen. Ich habe auch versucht, .obb-Datei mit festen Jobb-Tool (https://github.com/monkey0506/jobbifier.git) zu generieren, und es funktioniert nicht.

sein kann jemand weiß, was falsch ist, manchmal, warum .obb Dateien nicht auf einigen Geräten funktioniert? ..

UPDATE
Außerdem habe ich geprüft von nicht verschlüsselten .obb Datei Montage auf Meizu. Es klappt.

Vielen Dank im Voraus.

+0

Machen Sie eine kurze Überprüfung der Dateibesitz (Benutzer UND Gruppe) und Dateiberechtigungen. –

Antwort

2

I had the same problem, and i figured out that many times Error 21 is caused by Linux Files Permissions over the obb, and the problem is that Android cannot have access to it so the StorageManager launches Error 21. When you create the .obb file, change permissions and user group to the file, something like:

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

Dann wieder versuchen, für mich gearbeitet.

Verwandte Themen