1 votos

Montar la tarjeta sd externa obb en la tarjeta SD interna

Quiero mover el obb de un juego (1 GB) a una tarjeta SD. Copié el archivo obb a la tarjeta SD y creé un enlace simbólico con:

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

pero fallé con "función no implementada".

Busqué en Google y encontré que "algunos sistemas de archivos no admiten enlaces simbólicos".

Entonces intenté usar mount con el siguiente comando:

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

pero descubrí que solo el root puede ver los archivos en la carpeta. Luego hice lo siguiente:

cd /system/bin/
chmod 4777 ./toolbox #permitir que cualquiera pueda usar mount (en toolbox)
su u0_aXXX #uid del juego
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

Pero cuando intento:

cat /sdcard/Android/obb/com.game/com.game.obb
$ cat: /sdcard/…ame.obb permiso denegado

Estoy usando Android 5, ¿alguna solución?


(Publiqué esta pregunta en Stack Overflow antes, luego encontré que aquí podría ser un mejor lugar para publicar esta pregunta.)

0voto

KirkSu Puntos 6

¡Finalmente encontré la solución a esta pregunta por mí mismo! La aplicación no puede acceder al obb por sí misma, requiere media_rw para acceder a él. Encontrado por 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 

Así que tengo que montar la carpeta de la tarjeta sd externa en dos lugares y cada uno tiene que tener su dueño correcto:

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

Pero si monto /storage/sdcard1/Android/obb/com.game en esos dos lugares, se convertirá en:

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

Entonces descubrí que si hago esto:

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

Descubrí que esto funciona bien, porque la fuente y el destino del comando de montaje son su propietario original. ¡La aplicación puede funcionar muy bien!

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X