Ejemplos de configuración

A continuación se muestran ejemplos de configuraciones de almacenamiento externo para varios tipos de dispositivos. Sólo se incluyen las partes relevantes de los archivos de configuración.

Debido a 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 anteriores

Solo primaria física

Esta es una configuración típica para un dispositivo con un único dispositivo de almacenamiento externo que es una tarjeta SD física, como Nexus One.

El dispositivo físico sin formato debe montarse primero en /mnt/media_rw , donde solo el sistema y el demonio FUSE pueden acceder a él. vold luego administrará el servicio fuse_sdcard0 cuando se inserten o retiren medios.

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

lista_almacenamiento.xml

<storage
    android:mountPoint="/storage/sdcard0"
    android:storageDescription="@string/storage_sd_card"
    android:removable="true"
    android:primary="true"
    android:maxFileSize="4096" />

Solo primario emulado

Esta es una configuración típica para un dispositivo con un único dispositivo de almacenamiento externo respaldado por almacenamiento interno en el dispositivo, como 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

lista_almacenamiento.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 múltiples dispositivos de almacenamiento externo, donde el dispositivo principal está respaldado por almacenamiento interno en el dispositivo y donde el dispositivo secundario es una tarjeta SD física, como Xoom.

El dispositivo físico sin formato debe montarse primero en /mnt/media_rw , donde solo el sistema y el demonio FUSE pueden acceder a él. vold luego administrará el servicio fuse_sdcard1 cuando se inserten o retiren medios.

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

lista_almacenamiento.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" />

Androide 6.0

Solo primaria física

Esta es una configuración típica para un dispositivo con un único 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 puede admitir múltiples usuarios.

fstab.dispositivo

/devices/platform/mtk-msdc.1/mmc_host*         auto        auto       defaults
voldmanaged=sdcard0:auto,encryptable=userdata,noemulatedsd

init.dispositivo.rc

on init
    # By default, primary storage is physical
    setprop ro.vold.primary_physical 1

Solo primario emulado

Esta es una configuración típica para un dispositivo con un único dispositivo de almacenamiento externo respaldado por almacenamiento interno en el dispositivo, como Nexus 6.

  • El almacenamiento compartido primario ( /sdcard ) se emula encima del almacenamiento interno.
  • Sin almacenamiento secundario en tarjeta SD.
  • Se admiten dispositivos de almacenamiento USB OTG.
  • Soporta multiusuario.

fstab.dispositivo

/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 múltiples dispositivos de almacenamiento externo, donde el dispositivo principal está respaldado por almacenamiento interno en el dispositivo y donde el dispositivo secundario es una tarjeta SD física, como Xoom.

  • El almacenamiento compartido primario ( /sdcard ) se emula encima del almacenamiento interno.
  • El almacenamiento secundario es una ranura para tarjeta SD física que se puede adoptar.
  • Soporta multiusuario.

fstab.dispositivo

/devices/platform/mtk-msdc.1/mmc_host*           auto      auto     defaults
voldmanaged=sdcard1:auto,encryptable=userdata