¿Por qué /sdcard/ se convirtió en /sdcard/0/ con 4.2?

Nunca había visto esto antes, así que asumo que sucedió cuando actualicé a 4.2: estoy bastante seguro de que /sdcard/solía llevarme directamente a mi tarjeta SD, pero ahora, cuando voy a ese camino (en la recuperación de CWM, por ejemplo ) Necesito ir a /sdcard/0, también hay /sdcard/legacygolpes de repente.

¿Qué son estas carpetas y por qué han aparecido?

Respuestas (1)

Eso tiene que ver con la función multiusuario habilitada con JellyBean 4.2 (no 4.1). Para manejar cuentas separadas, se tuvieron que cambiar partes de la estructura del directorio. /sdcard/legacypor ejemplo, siempre apunta al directorio de la tarjeta SD del usuario que ha iniciado sesión actualmente.

Actualmente no puedo encontrar el documento donde leí los detalles, por lo que no puedo vincular ninguna fuente. Pero teniendo en cuenta lo anterior, es fácil adivinar que /sdcard/0lo más probable es que sean los propietarios del dispositivo (o "primeros usuarios": el "primer usuario" siempre se convirtió en el "propietario del dispositivo", solo este usuario puede crear cuentas adicionales) sd tarjeta, y así sucesivamente. Agregaré un enlace a una fuente tan pronto como pueda encontrarla.

EDITAR: Una de las páginas de las que obtuve esa idea es AndroidNext . 1droid da una explicación diferente cuando se trata de la tarjeta SD:

Con Android 4.2, Google introdujo múltiples usuarios como una nueva función. Para acomodar a múltiples usuarios, Google ahora le da a cada usuario su propia carpeta para almacenamiento. Si actualizó a 4.2 desde 4.1, entonces la ROM 4.2 buscará un determinado archivo en /data para determinar si necesita migrar todos sus archivos a la nueva estructura de datos multiusuario. De forma predeterminada, 4.2 migra todo /data/media a /data/media/0.

Sin embargo, surgió un problema con las recuperaciones personalizadas. Una recuperación personalizada conserva la carpeta /data/media durante un restablecimiento de fábrica. Cuando restablezca los valores de fábrica y vuelva a iniciar una ROM 4.2, la ROM 4.2 migrará todo en /data/media nuevamente. Migrará sus archivos cada vez que restablezca los valores de fábrica. Esta migración múltiple es lo que resultó en que algunas personas movieran sus archivos a /sdcard/0 o incluso a /sdcard/0/0, etc.

Así que, de hecho, tiene que ver con la nueva función multiusuario, de una forma u otra.

Eres un caballero y un erudito, gran respuesta. Su teoría de que 0 es el primer usuario también tiene sentido, ya que solo tengo un usuario y /sdcard/0es el único "directorio de números" que existe.
También es relevante para esto la explicación de Dan Morrill de por qué Android pasó del almacenamiento masivo USB al acceso MTP para el almacenamiento interno, que toca el tema "falso" /sdcard/ fodler androidpolice.com/2011/11/18/…
Aunque no estoy de acuerdo con él en la pregunta del "selector de archivos" (ya marqué ese artículo hace un tiempo). Aquí no somos de Cupertino, ni somos gnómicos. No tenemos que ocultar cosas y decirle al usuario lo que realmente quiere (aunque "quizás no lo sepa todavía"). Prefiero las opciones, independientemente de los valores predeterminados establecidos. Conviértalo en un cambio general en la configuración: "Sí, soy un usuario maduro" / "No, prefiero que otras personas decidan por mí"... Aparte de eso: Buen punto :)
En Android6 (Marshmallow), /storage/emulated/legacy se vuelve vacío (al menos en los dispositivos Nexus), mientras que antes de actualizar a Marshmallow contenía lo mismo que /storage/emulated/0