18 votos

¿Por qué se monta la tarjeta SD en "/sdcard/external_sd" en lugar de "/sdcard" (o "/mnt/sdcard")?

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 en algunos 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 el almacenamiento interno en /sdcard? ¿No debería esto estar en contra de alguna forma de estándar de especificaciones de Android?

26voto

Flow Puntos 14132

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 montaba en /data.

Luego, salieron dispositivos con una tarjeta SD externa en ese momento. La tarjeta SD se montaba en /mnt/sdcard.

Después de eso, llegaron al mercado dispositivos con un gran almacenamiento interno. Este almacenamiento estaba particionado, porque /mnt/sdcard se había convertido en el lugar predeterminado para grandes cantidades de datos de aplicaciones, imágenes, y demás. Por lo tanto, el entorno de Android tenía que tener un directorio /data y /mnt/sdcard. Por lo tanto, una partición era para /data, y la otra para /mnt/sdcard. Esta es la razón por la cual el espacio de almacenamiento podría volverse bajo (la partición de /data) incluso si hay mucho espacio en /mnt/sdcard.

Esta situación 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. Lo cual también es la razón por la cual app2sd ya no es necesaria en Android 3.0 o superior: Solo moverías los datos dentro del mismo volumen.

Ahora llegamos a la respuesta de tu pregunta: Dado que /mnt/sdcard ya está montado en el almacenamiento interno, una tarjeta SD externa debe 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
  • etc.

La llamada de 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 de la tarjeta SD externa de una manera canónica.

3voto

Deecee Puntos 39

Forzando el montaje externo de la tarjeta SD lejos de /mnt/sdcard no tiene ningún mérito técnico, es la forma de Google de ayudar a los fabricantes de hardware a crear un punto de diferenciación para teléfonos con más memoria interna.

No hay razón por la cual las aplicaciones tengan que encontrar una manera de localizar la tarjeta externa cuando /mnt/sdcard era claramente el lugar donde debería haber estado la tarjeta sd y la forma indefinida de carga de la tarjeta SD externa por parte de Google es otro complot menos amigable para el consumidor para hacer que la tarjeta SD externa sea menos útil en los nuevos dispositivos Android. No hay razón por la cual /data y /mnt/sdcard tuvieron que fusionarse en la misma partición en la nueva versión de Android excepto para que el fabricante diferenciara los teléfonos con mayor memoria interna de las unidades de menor costo con menos memoria interna. Incluso si la fusión tenía que hacerse, Google podría haber definido claramente un nuevo punto de montaje ESTÁNDAR para las tarjetas SD externas en lugar de dejarlo completamente vago. Esto está completamente en contra de prevenir una mayor "segmentación" del ecosistema de Android mediante un diseño torpe para ayudar a la diferenciación de los vendedores de teléfonos de gama alta contra las unidades de menor costo con menos memoria integrada.

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 manera segura en una tarjeta SD externa. Pero luego los fabricantes se dieron cuenta de que tenían que tener una forma de diferenciar su producto de gama alta, y afirmar que tenían una memoria interna más alta se convirtió en parte de ese esquema y debilitar la utilidad de la memoria externa es la otra parte integrada que este esquema requería para funcionar completamente, de ahí la 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 no sea /mnt/sdcard no es más que una estrategia comercial para vender teléfonos nuevos de mayor precio bajo una nueva versión de Android, nada más que eso. Solo imagina, si el Nexus 4 de 8GB y el Nexus 16GB pueden usar ambos 64GB de tarjeta SD externa para aplicaciones y medios, ¿hay alguna razón para que alguien compre la versión de 16 GB? Esa memoria NAND adicional de 8 GB seguramente no vale la diferencia de precio de $50 si se involucran tarjetas SD externas. Dado que la mayoría de los componentes de un teléfono inteligente prácticamente tienen que ser los mismos (RAM, procesador, radios), el único área restante para obtener más margen de beneficio es el espacio de memoria interna, y de ahí el extraño punto de montaje de la memoria externa.

¿También ha notado todo el mundo la ausencia de soporte para tarjetas SD externas de la actual generación de dispositivos Android de marca "Google"? Esta tendencia seguirá expandiéndose en los dispositivos Android de "alta gama". El soporte para tarjetas SD externas era una diferenciación clave para que los dispositivos Android superaran la dominación del iPhone en el mercado móvil. Ahora, con Android dominando supremamente en el juego de números, hay poco motivo para mantener esta práctica de disminución de beneficios durante mucho más tiempo.

No me sorprendería que en Android 5.0, el soporte para tarjetas SD externas fuera cosa del pasado. Porque si es difícil para las aplicaciones encontrar tarjetas SD externas, entonces la mayoría de los programas simplemente usarán los lugares conocidos de /data y /mnt/sdcard, con la mayoría de las aplicaciones utilizando más y más datos almacenados para su funcionamiento, se crea una estrategia de aumento de margen de beneficio vibrante "de la nada" simplemente al no montar la tarjeta SD externa en /mnt/sdcard.

2voto

Rudi Pittman Puntos 21

Debes tener en cuenta (si tienes acceso root) que puedes entrar en /system/etc/vold.fstab y intercambiar los puntos de montaje para /sdcard y /mnt/external_sd....esto permitirá que tu tarjeta sd esté en /sdcard como esperas y el "almacenamiento interno" restante se montará en /mnt/external_sd o si prefieres /sdcard/external_sd/

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