3 votos

¿Cómo hacer que Android utilice siempre la tarjeta SD externa en lugar del almacenamiento interno?

He creado un AVD utilizando

 bin/avdmanager create avd -d "Nexus 5" -c 2G -n nexus_5 -k "system-images;android-29;google_apis;x86_64"

El -c 2G se supone que crea una tarjeta sd de 2GB.

Sin embargo, cuando arranco el emulador, /sdcard parece apuntar al almacenamiento interno en /data/media más bien en el disco de 2GB:

$ adb shell df -h
Filesystem                    Size  Used Avail Use% Mounted on
tmpfs                         996M  604K  996M   1% /dev
tmpfs                         996M     0  996M   0% /mnt
tmpfs                         996M     0  996M   0% /apex
/dev/block/dm-2               2.4G  2.3G   64M  98% /
/dev/block/dm-1               124M  123M  444K 100% /vendor
/dev/block/vdc                775M  302M  473M  39% /data
/data/media                   775M  302M  473M  39% /mnt/runtime/default/emulated
/dev/block/vold/public:253,80 1.9G  532M  1.4G  27% /mnt/media_rw/1400-1801
/mnt/media_rw/1400-1801       1.9G  532M  1.4G  27% /mnt/runtime/default/1400-1801

$ adb shell ls -l /sdcard /storage/self/primary  /mnt/user/0/primary
lrwxrwxrwx 1 root root 19 2020-12-01 13:29 /mnt/user/0/primary -> /storage/emulated/0
lrw-r--r-- 1 root root 21 2020-07-21 03:02 /sdcard -> /storage/self/primary
lrwxrwxrwx 1 root root 19 2020-12-01 13:28 /storage/self/primary -> /mnt/user/0/primary

$ adb shell mount | grep storage/emulated
/data/media on /storage/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid,default_normal)

Cuando intento adb push datos a /sdcard esto falla porque no hay suficiente espacio disponible (en el almacenamiento interno).

¿Cómo puedo decirle al emulador que utilice la tarjeta sdcard externa en su lugar?

3 votos

Eso es lo que se espera. /sdcard no es físicamente una tarjeta SD externa. Es un enlace simbólico al almacenamiento compartido externo emulado primario. Ver detalles en Android.stackexchange.com/a/218469/218526 , Android.stackexchange.com/a/205494/218526 y Android.stackexchange.com/a/218338/218526

0 votos

Bien, supongo que mi pregunta es: cómo puedo hacer que Android utilice el dispositivo de 2GB en lugar del más pequeño. ¿Cómo puedo configurar esto?

1 votos

Si lees las respuestas que he enlazado, tienes la respuesta a tu consulta. Android por defecto no utiliza el almacenamiento secundario externo compartido. Pero las aplicaciones pueden, si quieren.

2voto

Jack Wade Puntos 231

/sdcard no es físicamente una tarjeta SD externa, sino un enlace simbólico a almacenamiento primario externo compartido . Ver detalles en mis respuestas a El viaje del almacenamiento de Android y ¿Qué es /storage/emulated/0/?

De su comentario:

Cómo se puede hacer que Android utilice el dispositivo de 2GB en lugar del más pequeño. Cómo puedo configurar esto?

Android por defecto no utiliza almacenamiento secundario externo compartido . Pero las aplicaciones pueden, si quieren. Véase mi respuesta a ¿Cómo guardar archivos en una tarjeta SD externa en un Android no rooteado? .

Si quieres que Android utilice siempre la tarjeta SD física como almacenamiento primario externo compartido , debe cambiar la configuración de su ROM de Sólo el primario emulado o Primario emulado, secundario físico a Sólo primaria física . Es posible editando el fstab archivo y algunos init 's .rc archivo. Siga los enlaces de la documentación oficial anterior para obtener detalles sobre los cambios de configuración.

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