A continuación, se muestran ejemplos de configuraciones de almacenamiento externo para varios tipos de dispositivos. Solo se incluyen las partes relevantes de los archivos de configuración.
Debido a los cambios de configuración en Android 6.0 (como la eliminación de la superposición de recursos storage_list.xml), los ejemplos de configuración se dividen en dos categorías.
Android 5.x y versiones anteriores
Solo principal físico
Esta es una configuración típica para un dispositivo con un solo dispositivo de almacenamiento externo, que es una tarjeta SD física, como el Nexus One.
Primero, el dispositivo físico sin procesar se debe activar en /mnt/media_rw, donde solo el sistema y el daemon de FUSE pueden acceder a él. Luego, vold administrará el servicio fuse_sdcard0 cuando se inserte o quite contenido multimedia.
fstab.hardware
[physical device node] auto vfat defaults voldmanaged=sdcard0:auto,noemulatedsd
init.hardware.rc
on init
mkdir /mnt/media_rw/sdcard0 0700 media_rw media_rw
mkdir /storage/sdcard0 0700 root root
export EXTERNAL_STORAGE /storage/sdcard0
service fuse_sdcard0 /system/bin/sdcard -u 1023 -g 1023 -d /mnt/media_rw/sdcard0 /storage/sdcard0
class late_start
disabled
storage_list.xml
<storage
android:mountPoint="/storage/sdcard0"
android:storageDescription="@string/storage_sd_card"
android:removable="true"
android:primary="true"
android:maxFileSize="4096" />
Solo emulado principal
Esta es una configuración típica para un dispositivo con un solo dispositivo de almacenamiento externo que se respalda con el almacenamiento interno del dispositivo, como el Nexus 4.
init.hardware.rc
on init
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /storage/emulated 0555 root root
export EXTERNAL_STORAGE /storage/emulated/legacy
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
on fs
setprop ro.crypto.fuse_sdcard true
service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
class late_start
storage_list.xml
<storage
android:storageDescription="@string/storage_internal"
android:emulated="true"
android:mtpReserve="100" />
Primario emulado, secundario físico
Esta es una configuración típica para un dispositivo con varios dispositivos de almacenamiento externo, en la que el dispositivo principal tiene una copia de seguridad en el almacenamiento interno del dispositivo y el dispositivo secundario es una tarjeta SD física, como Xoom.
Primero, el dispositivo físico sin procesar se debe activar en /mnt/media_rw, donde solo el sistema y el daemon de FUSE pueden acceder a él. Luego, vold administrará el servicio fuse_sdcard1 cuando se inserte o quite contenido multimedia.
fstab.hardware
[physical device node] auto vfat defaults voldmanaged=sdcard1:auto
init.hardware.rc
on init
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /storage/emulated 0555 root root
mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw
mkdir /storage/sdcard1 0700 root root
export EXTERNAL_STORAGE /storage/emulated/legacy
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
export SECONDARY_STORAGE /storage/sdcard1
on fs
setprop ro.crypto.fuse_sdcard true
service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
class late_start
service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
class late_start
disabled
storage_list.xml
<storage
android:storageDescription="@string/storage_internal"
android:emulated="true"
android:mtpReserve="100" />
<storage
android:mountPoint="/storage/sdcard1"
android:storageDescription="@string/storage_sd_card"
android:removable="true"
android:maxFileSize="4096" />
Android 6.0
Solo principal físico
Esta es una configuración típica para un dispositivo con un solo dispositivo de almacenamiento externo, que es una tarjeta SD física, como el Android One original. No hay almacenamiento compartido secundario, y el dispositivo no admite varios usuarios.
fstab.device
/devices/platform/mtk-msdc.1/mmc_host* auto auto defaults voldmanaged=sdcard0:auto,encryptable=userdata,noemulatedsd
init.device.rc
on init
# By default, primary storage is physical
setprop ro.vold.primary_physical 1
Solo emulado principal
Esta es una configuración típica para un dispositivo con un solo dispositivo de almacenamiento externo que se respalda con el almacenamiento interno del dispositivo, como el Nexus 6.
- El almacenamiento compartido principal (
/sdcard) se emula sobre el almacenamiento interno. - Sin almacenamiento secundario en tarjeta SD
- Se admiten dispositivos de almacenamiento USB OTG.
- Admite varios usuarios.
fstab.device
/devices/*/xhci-hcd.0.auto/usb* auto auto defaults
voldmanaged=usb:auto
Primario emulado, secundario físico
Esta es una configuración típica para un dispositivo con varios dispositivos de almacenamiento externo, en la que el dispositivo principal tiene una copia de seguridad en el almacenamiento interno y el dispositivo secundario es una tarjeta SD física, como Xoom.
- El almacenamiento compartido principal (
/sdcard) se emula sobre el almacenamiento interno. - El almacenamiento secundario es una ranura física para tarjeta SD que se puede adoptar.
- Admite varios usuarios.
fstab.device
/devices/platform/mtk-msdc.1/mmc_host* auto auto defaults voldmanaged=sdcard1:auto,encryptable=userdata