Android mount externe SD-Karte obb auf interne SD-Karte erfolgreich

(Ich habe diese Frage zuvor auf Stack Overflow gepostet ( https://stackoverflow.com/questions/42738392/android-mount-obb-to-external-sd-card-failed ), dann habe ich festgestellt, dass hier möglicherweise ein besserer Ort zum Posten ist diese Frage.)

Ich möchte obb (1 GB) eines Spiels auf eine SD-Karte verschieben. Obb-Datei auf SD-Karte kopiert und symbolischer Link per:

su
ln -sf /storage/sdcard1/Android/obb/com.game /sdcard/Android/obb/com.game

aber fehlgeschlagen mit "Funktion nicht implementiert".

Ich habe es gegoogelt und bekam "Einiges Dateisystem unterstützt keinen symbolischen Link".

Also habe ich versucht, mount per Befehl zu verwenden:

su
mount -o bind /storage/sdcard1/Android/obb/com.game /sdcard/Android/obb/com.game

aber ich habe festgestellt, dass nur root die Dateien im Ordner sehen kann. Dann mach ich:

cd /system/bin/
chmod 4777 ./toolbox #make anyone can use mount(in toolbox)
su u0_aXXX #the game's uid
mount -o bind /storage/sdcard1/Android/obb/com.game /sdcard/Android/obb/com.game
ls -l /sdcard/Android/obb/com.game
$ -rwxrwx--- u0_aXXX sdcard_r com.game.obb

Aber als ich

cat /sdcard/Android/obb/com.game/com.game.obb
$ cat: /sdcard/…ame.obb permission denied

Ich verwende Android5, gibt es eine Lösung? Danke.

Antworten (1)

(Wenn Sie herausfinden, wie Sie obb auf eine externe SD-Karte verschieben und wieder auf eine interne Karte mounten können, ist dies der richtige Ort!) Endlich habe ich die Lösung dieser Frage selbst gefunden! Die App kann nicht selbst auf das obb zugreifen, sie benötigt media_rw, um darauf zuzugreifen. Gefunden von lsof:

sdcard 340 media_rw 15 ??? ??? ??? ???
/data/media/obb/com.game/com.game.obb
sdcard 340 media_rw 17 ??? ??? ??? ???
/data/media/obb/com.game/com.game.obb
com.game 26335 u0_a266 36 ??? ??? ??? ???
/storage/emulated/0/Android/obb/com.game/com.game.obb
com.game 26335 u0_a266 37 ??? ??? ??? ???
/storage/emulated/0/Android/obb/com.game/com.game.obb 

Also muss ich den externen SD-Kartenordner an zwei Stellen mounten und jeder muss seinen richtigen Besitzer haben:

owner    folder
u0_a266  /storage/emulated/legacy/Android/obb/com.game
media_rw /data/media/obb/com.game

Aber wenn ich /storage/sdcard1/Android/obb/com.game an diesen beiden Stellen mounte, wird es:

owner    folder
u0_a266  /storage/emulated/legacy/Android/obb/com.game
u0_a266  /data/media/obb/com.game

Dann fand ich, wenn ich es tue:

mount -o bind /storage/sdcard1/Android/obb/com.game /storage/emulated/legacy/Android/obb/com.game
mount -o bind /mnt/media_rw/sdcard1/Android/obb/com.game /data/media/obb/com.game

Ich fand, dass dies gut funktioniert, da die Quelle und das Ziel des Mount-Befehls ihr ursprünglicher Besitzer sind. Die App lässt sich sehr gut ausführen!