Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Conservazione tradizionale

Icona HAL di archiviazione esterna Android

Android supporta i dispositivi con archiviazione tradizionale, definita come un file system senza distinzione tra maiuscole e minuscole con classi e modalità di autorizzazione POSIX immutabili. La nozione di memoria tradizionale comprende la memoria emulata e portatile. La memoria portatile è definita come qualsiasi memoria esterna non adottata dal sistema e quindi non formattata, crittografata o collegata a un dispositivo specifico. Poiché l'archiviazione esterna tradizionale offre una protezione minima per i dati archiviati, il codice di sistema non deve archiviare dati sensibili sull'archiviazione esterna. In particolare, i file di configurazione e di registro devono essere archiviati solo nella memoria interna dove possono essere protetti efficacemente.

Memoria esterna multiutente

A partire da Android 4.2, i dispositivi possono supportare più utenti e l'archiviazione esterna deve soddisfare i seguenti vincoli:

  • Ogni utente deve avere la propria memoria esterna primaria isolata e non deve avere accesso alla memoria esterna primaria di altri utenti.
  • Il percorso /sdcard deve risolversi nella corretta memoria esterna primaria specifica dell'utente in base all'utente su cui è in esecuzione un processo.
  • L'archiviazione per file OBB di grandi dimensioni nella directory Android/obb può essere condivisa tra più utenti come ottimizzazione.
  • La memoria esterna secondaria non deve essere scrivibile dalle app, tranne che nelle directory specifiche del pacchetto, come consentito dalle autorizzazioni sintetizzate.

L'implementazione della piattaforma predefinita di questa funzione sfrutta gli spazi dei nomi del kernel Linux per creare tabelle di montaggio isolate per ogni processo biforcuto di Zygote, quindi utilizza i montaggi di bind per offrire la corretta archiviazione esterna primaria specifica dell'utente in quello spazio dei nomi privato.

All'avvio, il sistema monta un singolo demone FUSE di archiviazione esterna emulato in EMULATED_STORAGE_SOURCE , che è nascosto dalle app. Dopo le forcelle Zygote, il binding monta la sottodirectory specifica dell'utente appropriata da sotto il daemon FUSE a EMULATED_STORAGE_TARGET modo che i percorsi di archiviazione esterni si risolvano correttamente per l'app. Poiché un'app non dispone di punti di montaggio accessibili per l'archiviazione di altri utenti, possono accedere all'archiviazione solo per l'utente da cui è stata avviata.

Questa implementazione utilizza anche la funzionalità del kernel di sottostruttura condivisa per propagare gli eventi di mount dallo spazio dei nomi di root predefinito negli spazi dei nomi delle app, il che garantisce che funzioni come i contenitori ASEC e il montaggio OBB continuino a funzionare correttamente. Lo fa montando i rootfs come condivisi e quindi rimontandolo come slave dopo aver creato ogni spazio dei nomi Zygote.

Più dispositivi di archiviazione esterni

A partire da Android 4.4, più dispositivi di archiviazione esterni vengono visualizzati dagli sviluppatori tramite Context.getExternalFilesDirs() , Context.getExternalCacheDirs() e Context.getObbDirs() .

I dispositivi di archiviazione esterni emersi attraverso queste API devono essere una parte semi-permanente del dispositivo (come uno slot per schede SD in un vano batteria). Gli sviluppatori si aspettano che i dati archiviati in queste posizioni siano disponibili per lunghi periodi di tempo. Per questo motivo, i dispositivi di archiviazione temporanea (come le unità di archiviazione di massa USB) non devono essere emersi attraverso queste API.

L'autorizzazione WRITE_EXTERNAL_STORAGE deve concedere solo l'accesso in scrittura alla memoria esterna primaria su un dispositivo. Le app non devono poter scrivere su dispositivi di archiviazione esterni secondari, tranne nelle loro directory specifiche del pacchetto come consentito dalle autorizzazioni sintetizzate. La limitazione delle scritture in questo modo garantisce che il sistema possa ripulire i file quando le applicazioni vengono disinstallate.

Supporto multimediale USB

Android 6.0 supporta dispositivi di archiviazione portatili che sono collegati al dispositivo solo per un breve periodo di tempo, come le unità flash USB. Quando un utente inserisce un nuovo dispositivo portatile, la piattaforma mostra una notifica per consentire loro di copiare o gestire i contenuti di quel dispositivo.

In Android 6.0, qualsiasi dispositivo non adottato è considerato portatile. Poiché l'archiviazione portatile è collegata solo per un breve periodo, la piattaforma evita operazioni pesanti come la scansione dei supporti. Le app di terze parti devono passare attraverso Storage Access Framework per interagire con i file su storage portatile; l'accesso diretto è esplicitamente bloccato per motivi di privacy e sicurezza.