Recientemente actualicé mi teléfono a un LG Motion 4G (Android 4 ICS). Veo que la tarjeta sd está montada en /sdcard/external_sd
. También noté que esto parece ser lo mismo con algunos otros modelos más nuevos. Las aplicaciones esperan que la tarjeta SD esté en /sdcard
. Supongo que los fabricantes quieren incluir mucho almacenamiento interno, pero ¿por qué montar almacenamiento interno en /sdcard
? ¿No debería esto estar en contra de algún tipo de estándar de especificación de Android?
external-sd
storage
Sepero
fuente
fuente
Respuestas:
La razón es la historia de Android: la primera generación de dispositivos Android solo tenía una pequeña cantidad de almacenamiento interno (alrededor de 100-400MiB) que se montó debajo
/data
.A continuación, salieron dispositivos con una tarjeta SD externa en ese momento. La tarjeta SD fue montada debajo
/mnt/sdcard
.Después de eso, los dispositivos con gran almacenamiento interno salieron al mercado. Este almacenamiento se dividió en porciones, ya que se
/mnt/sdcard
había convertido en el lugar predeterminado para grandes fragmentos de datos de aplicaciones, imágenes y demás. Entonces, el entorno de Android tenía que tener un directorio/data
y/mnt/sdcard
. Por lo tanto, una partición era para/data
, la otra para/mnt/sdcard
. Esta es la razón por la cual el espacio de almacenamiento podría ser bajo (la/data
partición) incluso si hay mucho espacio activado/mnt/sdcard
.Esta situación se mejoró con Android 3.0:
/data
y/mnt/sdcard
ahora apuntan a la misma partición. Buen trabajo Google, eso podría haberse hecho hace versiones. Esa es también la razón por la cual ya no se necesita app2sd en Android 3.0 o superior: solo movería los datos dentro del mismo volumen.Ahora llegamos a la respuesta si su pregunta: dado
/mnt/sdcard
que ya está montado en el almacenamiento interno, una tarjeta SD externa tiene que usar un punto de montaje diferente. Y este punto de montaje no está especificado por Google. Podría ser/mnt/sdcard/ext_sd
/mnt/external
/mnt/extSdCard
/mnt/sdcard/external_sd
La llamada a la API
getExternalStorageDirectory()
generalmente apunta al directorio de almacenamiento interno. Este comportamiento está documentado. Hay proyectos de código abierto que proporcionan herramientas para encontrar el directorio externo de la tarjeta SD de forma canónica.fuente
isExternalStorageRemovable()
que ver si el almacenamiento "externo" es extraíble, además uno podría determinar los puntos de montaje (usando elmount
comando) y verificar los indicadores de montaje, etc. Pero si no me equivoco aquí, esto significa que cada desarrollador necesita para descubrir su propia aplicación, y no hay una simple llamada API para hacer eso por él?/data
se fusionan tanto el almacenamiento externo como la partición, ¿cómo podría montar / desmontar de manera segura mi tarjeta SD para conectarla, por ejemplo, en mi PC? Me parece que tener particiones separadas es lógico y no veo por qué todo eso tuvo que pasar./data
partición que se fusiona.This situation was improved with Android 3.0: /data and /mnt/sdcard are now pointing to the same parition
. Solo para su información, eso NO es cierto en al menos un teléfono con Android 4.0 (Pantech Burst), donde/data
hay una partición ext4 de 1GB y/mnt/sdcard
una partición FAT32 de 12GB.Forzar el montaje externo de SD
/mnt/sdcard
no tiene ningún mérito técnico, es la forma en que Google ayuda a los proveedores de hardware a crear un punto de diferenciación para teléfonos con más memoria interna.No hay ninguna razón por la cual las aplicaciones tengan que encontrar una manera de ubicar la tarjeta externa cuando
/mnt/sdcard
era claramente el lugar donde debería haber estado la tarjeta sd y la forma indefinida de Google de cargar la tarjeta SD externa es otra trama menos que amigable para el consumidor para hacer que la tarjeta SD externa sea menos útil en dispositivos Android más nuevos. No hay ninguna razón por qué/data
y/mnt/sdcard
tuvo que ser combinado en la misma partición en la nueva versión de Android, excepto para el fabricante de teléfonos Diferenciar con mayor memoria interna de unidades de menor costo con menos memoria interna. Incluso si la fusión tuviera que hacerse, Google podría haber definido claramente un ESTÁNDARNuevo punto de montaje para las tarjetas SD externas en lugar de dejarlo completamente vago. Esto funciona completamente contra la prevención de una mayor "segmentación" del ecosistema de Android mediante un diseño torpe para ayudar a los proveedores a diferenciar los teléfonos de gama alta de las unidades de menor costo con menos memoria incorporada.Los binarios de las aplicaciones de Android son pequeños, los teléfonos con 1-2 Gigas de memoria interna deberían tener espacio más que suficiente para cientos de aplicaciones, y todos los datos grandes podrían guardarse de forma segura en una tarjeta SD externa. Pero luego los proveedores se dieron cuenta de que tenían que tener una manera de diferenciar su producto final superior, y afirman que una memoria interna más alta se convirtió en parte de ese esquema y que la utilidad de la memoria externa es la otra parte integrada que este esquema requería para que esto funcione por completo. API menos útil para encontrar tarjetas SD externas y los puntos de montaje no estandarizados.
Entonces: No, montar la tarjeta SD en un lugar que
/mnt/sdcard
no sea nada más que una estrategia comercial para vender teléfonos nuevos de mayor precio con una versión más reciente de Android, nada más que eso. Imagínense, si el Nexus 4 8GB y el Nexus 16GB pueden usar 64GB de tarjeta SD externa para aplicaciones y medios, ¿hay alguna razón para que alguien compre la versión de 16 GB? Esos 8 GB adicionales de memoria NAND seguramente no valen la diferencia de precio de $ 50 si se trata de tarjetas SD externas. Dado que la mayoría de los componentes en un teléfono inteligente tiene que ser prácticamente igual (RAM, procesador, radios), el único área que queda para obtener más margen de beneficio es el espacio de memoria interna y, por lo tanto, el extraño punto de montaje de la memoria externa.¿También han notado todos la ausencia de soporte SD externo de la actual cosecha de dispositivos Android con la marca "Google"? Esta tendencia seguirá expandiéndose en los dispositivos Android de "nivel superior". El soporte externo de la tarjeta SD fue una diferencia clave para que los dispositivos Android superen el dominio del iPhone en el mercado móvil. Ahora, con Android como líder supremo en el juego de los números, hay poca necesidad de que esta práctica de extracción de ganancias se mantenga por mucho más tiempo.
No me sorprenderá Android 5.0, el soporte de la tarjeta SD externa sería cosa del pasado. Porque si es difícil para las aplicaciones encontrar una tarjeta SD externa, entonces la mayoría de los programas simplemente usarán los lugares
/data
y las/mnt/sdcard
ubicaciones conocidas, y la mayoría de las aplicaciones usarán más y más datos almacenados para su operación, se crea una estrategia dinámica de marcado de productos de la nada. "simplemente al no montar la tarjeta SD externa en/mnt/sdcard
.fuente
/data
y/mnt/sdcard
", como veo claramente una razón: Evitar la fragmentación de la memoria interna./sdcard/external_sd
en el LG P880), la copia de seguridad del "almacenamiento compartido" incluye ambos y crea un gran archivo. No hay forma de hacer una copia de seguridad de la SD interna solo con un enfoque fácil. Lo que no tiene mucho sentido, ya que hay formas mucho más fáciles de hacer una copia de seguridad de la tarjeta externa. Un hecho que me vuelve loco, ya que tengo el dispositivo mencionado ...Debe tener en cuenta (si está rooteado) que puede ir a /system/etc/vold.fstab e intercambiar los puntos de montaje por / sdcard y /mnt/external_sd..... Esto permitirá que su sdcard esté en / sdcard como espera y el "almacenamiento interno" restante se montará en / mnt / external_sd o si lo prefiere / sdcard / external_sd /
fuente