Press "Enter" to skip to content

Cos’è emulated storage in android? Guida completa

Se vi è capitato di spostare file e cartelle da o verso il vostro dispositivo android o anche internamente ad esso avrete notato che il percorso dei file era probabilmente qualcosa che iniziava con /storage/emulated/0/ quando vi sareste aspettati di vedere qualcosa che indicasse la memoria interna del vostro dispositivo.

Cos’è quindi questo strano percorso? e perché di chiama emulated storage? Se è emulato significa che non esiste? i miei dati sono al sicuro?

Cerchiamo di fare un po’ di chiarezza su come android gestisce i file a disposizione dell’utente.

Indice

Perché la necessità di uno storage emulato?

Inizialmente i dispositivi android avevano una quantità di memoria interna piuttosto limitata. Per questo motivo era possibile aggiungere delle schede di memoria (SD o microSD) che permettessero di espandere tale dotazione. Le schede esterne avevano un filesystem di tipo FAT, che offrendo una larga compatibilità con la maggior parte dei sistemi operativi permetteva di leggere e scrivere facilmente questi dati tramite un computer.

Con il tempo poi la memoria interna dei dispositivi iniziò ad aumentare, ma l’esigenza di collegare il proprio dispositivo ad un computer per trasferire i dati rimase, e le tecnologie e i protocolli esistenti permettevano solamente di esporre interamente il filesystem. Questo portava principalmente a due problemi da risolvere:

  • I dispositivi venivano collegati ai computer come USB Mass Storage (ovvero come fossero delle pendrive o degli hard disk esterni). Questo era molto comodo per noi utenti, ma decisamente meno per il sistema android. Quando collegavamo il nostro dispositivo a un PC, la scheda di memoria veniva “smontata”, ovvero rimossa dal dispositivo android per essere messa a disposizione del nostro computer. Questo aveva l’effetto di rendere non più disponibili i file in essa contenuti alle applicazioni del nostro dispositivo. Di conseguenza le app spesso si rompevano e smettevano di funzionare finché la memoria non veniva ripristinata scollegando il dispositivo dal PC.
  • Il filesystem FAT era la migliore scelta per offrire compatibilità con i sistemi operativi dei pc. Questo filesystem però non è progettato per gestire un sistema di permessi linux/UNIX. Questo portava all’impossibilità di separare l’acceso alla memoria per le app. Ogni app era quindi in grado di accedere a tutti i dati contenuti nella scheda, compresi quelli di altre app. I problemi in termini di privacy e sicurezza di questo approccio sono facilmente intuibili.

Questi due problemi, come vedremo in seguito, saranno risolti attraverso l’introduzione di uno storage emulato.

Cos’è uno storage emulato?

Uno storage emulato, è uno storage “virtuale”, ovvero che non rappresenta direttamente un disco o una memoria, ma è solitamente costruito in maniera programmatica, cioè tramite una parte di software che ha il compito di costruire artificialmente uno storage. L’uso e le motivazioni per cui può essere adottato uno stratagemma di questo genere saranno più chiari nel prossimo paragrafo.

Come usa lo storage emulato android?

Quando abbiamo parlato dei problemi che hanno portato alla necessità di utilizzare uno storage, abbiamo individuato fondamentalmente due problemi principali nella gestione della memoria nelle vecchie versioni di Android.

L’introduzione di uno storage emulato ha permesso di risolvere entrambi i problemi.

Come prima cosa il contenuto della memoria è stato spostato in una partizione in /data che contiene un filesystem di tipo ext4 o più recentemente f2fs, entrambi in grado di supportare il sistema di autorizzazioni di UNIX.

Con questa scelta da sola però non sarebbe più stato possibile esporre la memoria al computer tramite USB Mass Storage, per due motivi principali:

  • La partizione contiene impostazioni e dati delle applicazioni installate che non devono essere accessibili da altre app e dagli utenti.
  • I filesystem ext4 e f2fs non sono supportati da windows, e questo renderebbe impossibile la lettura della partizione da parte della maggior parte degli utenti.

Questi problemi sono stati risolti attraverso l’introduzione dell’emulazione della partizione sotto /storage/emulated e l’uso di MTP, Media Transfer Protocol, un protocollo client-server che permette di esporre ai PC il filesystem in maniera emulata.

MTP funziona quindi come un’app (con nomeandroid.process.media) inserita nel sistema di premessi di Android. Questo permette di esporre i dati rispettando il sistema di permessi, impedendo quindi a utenti e app di accedere ai dati riservati di altre app.

Tutte le app quindi hanno accesso solamente allo storage emulato. Questo permette quindi al sistema di emulazione di “scegliere” cosa far vedere a ciascuna applicazione in base al nome dell’applicazione e ai suoi permessi. Ad esempio l’applicazione whatsapp avrà accesso alla cartella /storage/emulated/0/Android/data/com.whatsapp per memorizzare i propri file, ma non a /storage/emulated/0/Android/data/com.spotify.music e viceversa per l’applicazione spotify.

Questa soluzione ovviamente non è esente da difetti, ma permette di risolvere almeno i problemi di privacy e sicurezza che erano presenti nelle vecchie versioni di android.

Cos’è /storage/emulated/0/download in android?

Questa particolare cartella è la cartella predefinita in cui vengono memorizzati i file scaricati nella memoria interna. Il fatto che si tratti di memoria interna è indicato dallo “0”nel percorso. Solitamente infatti /storage/emulated/0 indica la memoria interna, mentre /storage/emulated/1 e tutti i numeri successivi indicano eventuali schede di memoria e drive esterni.

/storage/emulated/0/whatsapp cos’è e a cosa serve?

Questa cartella è utilizzata dall’app WhatsApp per memorizzare tutti i file multimediali ricevuti dall’utente. L’utilizzo di questa cartella da parte di WhatsApp, secondo questo articolo di luglio 2019, potrebbe portare ad alcuni problemi di sicurezza in quanto l’applicazione memorizzerebbe i dati in una porzione di memoria che non è riservata solamente a se stessa, ma condivisa con le altre applicazioni. Questo permetterebbe potenzialmente ad un’app malevola di manipolare i dati a suo piacimento. Pensiamo ad esempio a qualcuno che ci manda un’immagine con dei dati bancari per effettuare un bonifico, un’app malevola potrebbe manipolare o sostituire l’immagine per mostrare dei dati diversi e indurci a fare il bonifico verso un altro conto.

Da quanto si legge nello stesso articolo, questo rischio dovrebbe essere neutralizzato recandosi in whatsapp nella sezione impostazioni -> Chat -> Impostazioni chat e disattivando la voce “Visibilità dei media”.

disattivare "visibilità dei media" in whatsapp

Conclusioni

La gestione della memoria di Android è sempre stato un aspetto piuttosto oscuro. Come abbiamo visto ci sono una serie di motivi che complicano indubbiamente le cose:

  • Grande varietà di dispositivi.
  • Necessità di imporre un sistema flessibile di permessi basato sulle applicazioni e non sugli utenti.
  • Necessità di mantenere la retrocompatibilità con le vecchie versioni.
  • Veloce evoluzione dei dispositivi e delle loro disponibilità di memoria di archiviazione interna ed esterna.
  • Necessità di mantenere la possibilità di connettere i dispositivi ad un PC e accedere ad alcuni dei file archiviati.

Speriamo in questo articolo di aver chiarito almeno un po’ cos’è l’emulated storage in android e per quali motivi è stato introdotto un sistema di questo tipo.

Be First to Comment

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *