DataStore
| Ultimo aggiornamento | Release stabile | Candidato per la release | Release beta | Release alpha |
|---|---|---|---|---|
| 12 ottobre 2026 | 1.2.1 | 1.3.0-rc01 | - | - |
Dichiarazione di dipendenze
Per aggiungere una dipendenza da DataStore, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.
DataStore offre diverse opzioni per la serializzazione , scegli l'una o l'altra. Puoi anche aggiungere dipendenze non Android a entrambe le implementazioni.
Aggiungi le dipendenze per l'implementazione necessaria nel file build.gradle per la tua app o il tuo modulo:
Datastore delle preferenze
Aggiungi le seguenti righe alla sezione delle dipendenze del file Gradle:
Groovy
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.2.1" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.2.1") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.2.1") }
Per aggiungere il supporto facoltativo di RxJava, aggiungi le seguenti dipendenze:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.2.1") }
DataStore
Aggiungi le seguenti righe alla sezione delle dipendenze del file Gradle:
Groovy
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.2.1" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.2.1") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.2.1") }
Aggiungi le seguenti dipendenze facoltative per il supporto di RxJava:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.2.1") }
Per serializzare i contenuti, aggiungi le dipendenze per la serializzazione di Protocol Buffer o JSON.
Serializzazione JSON
Per utilizzare la serializzazione JSON, aggiungi quanto segue al file Gradle:
Groovy
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" } dependencies { implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" }
Kotlin
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0") }
Serializzazione Protobuf
Per utilizzare la serializzazione Protobuf, aggiungi quanto segue al file Gradle:
Groovy
plugins { id("com.google.protobuf") version "0.9.5" } dependencies { implementation "com.google.protobuf:protobuf-kotlin-lite:4.32.1" } protobuf { protoc { artifact = "com.google.protobuf:protoc:4.32.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } create("kotlin") } } } }
Kotlin
plugins { id("com.google.protobuf") version "0.9.5" } dependencies { implementation("com.google.protobuf:protobuf-kotlin-lite:4.32.1") } protobuf { protoc { artifact = "com.google.protobuf:protoc:4.32.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } create("kotlin") } } } }
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per saperne di più, consulta la documentazione di Issue Tracker.
Versione 1.3
Versione 1.3.0-rc01
12 ottobre 2026
androidx.datastore:datastore-*:1.3.0-rc01 è stato rilasciato. La versione 1.3.0-rc01 contiene questi commit.
Modifiche alle API
- Utilizza
WindowCompat#enableEdgeToEdge(Window)anzichéEdgeToEdge#enable()(Ibff3e)
Correzioni di bug
- La dipendenza
androidx.lifecycle:lifecycle-runtimeè stata aggiornata alla versione 2.10.0. Questa versione è necessaria per l'esecuzione dei controlli lint del runtime del ciclo di vita in bundle con AGP versione 9.5.0-alpha04 o successive. (I99bfd, b/556807521)
Versione 1.3.0-alpha11
9 settembre 2026
androidx.datastore:datastore-*:1.3.0-alpha11 è stato rilasciato. La versione 1.3.0-alpha11 contiene questi commit.
Correzioni di bug
- Il percorso del file sottostante non è incluso nei messaggi
CorruptionExceptiongenerati durante gli errori di analisi delle preferenzeDataStore. (Ia9e8f)
Versione 1.3.0-alpha10
29 luglio 2026
androidx.datastore:datastore-*:1.3.0-alpha10 è stato rilasciato. La versione 1.3.0-alpha10 contiene questi commit.
Modifiche alle API
GeneralSecurityException in AeadSerializer is now wrapped in CorruptionException for better CorruptionHandler integration.(I26e56, b/514941919)
Versione 1.3.0-alpha09
6 maggio 2026
androidx.datastore:datastore-*:1.3.0-alpha09 è stato rilasciato. La versione 1.3.0-alpha09 contiene questi commit.
Modifiche alle API
- Rendi pubblico
ReThrowCorruptionHandler. (I137bb, b/427722902) - Rendi il ciclo di vita del tracciamento coerente con il tracciamento del sistema. (Ib391b)
Versione 1.3.0-alpha08
22 aprile 2026
androidx.datastore:datastore-*:1.3.0-alpha08 è stato rilasciato. La versione 1.3.0-alpha08 contiene questi commit.
Nuove funzionalità
- Aggiunto il supporto per Origin Private File System (OPFS) in DataStore per le piattaforme web. Questa implementazione introduce
WebOpfsStoragee include il supporto dell'architettura per l'I/O di file asincrono, le notifiche tra schede utilizzando l'APIBroadcastChannele il blocco distribuito tramite l'APIWeb Locks APInativa per l'accesso in scrittura esclusivo. Id7f5807 b/316376114
Modifiche alle API
- Sono state introdotte le API
WebLocalStorageeWebSessionStorageper la gestione esplicita del tipo di archiviazione negli ambienti web. I35fa259b b/316376114
Versione 1.3.0-alpha07
11 marzo 2026
androidx.datastore:datastore-*:1.3.0-alpha07 è stato rilasciato. La versione 1.3.0-alpha07 contiene questi commit.
Nuove funzionalità
- Supporto della crittografia: è stato introdotto il nuovo artefatto
androidx.datastore:datastore-tinkche fornisce il supporto per la crittografia del datastore utilizzando la libreria Tink. Questo modulo introduceAeadSerializer, una nuova classe wrapper che implementaSerializer<T>e utilizza la crittografia autenticata con dati associati (AEAD) di Tink per criptare e decriptare i dati.AeadSerializerè disponibile per l'utilizzo nelle piattaforme di destinazione JVM e Android. - Nuova API
DataStoreBuilder: è stata introdottaDataStore.Builder<T>come alternativa scalabile aDataStoreFactory. Con questa nuova API, gli utenti ora hanno un modo per fornire la propria logica di danneggiamento tramitesetCorruptionHandler. Inoltre, l'APIBuilderrichiede che unDataStorevenga inizializzato utilizzando unCoroutineContextanziché unCoroutineScope, un miglioramento per la concorrenza strutturata, in quanto consente ai chiamanti di definire il comportamento di esecuzione (come Dispatcher specifici) senza forzareDataStorea gestire in modo inappropriato o essere vincolato dal ciclo di vita dell'ambito del chiamante.Nota:consigliamo a tutti gli utenti di eseguire la migrazione da
DataStoreFactoryalle nuove APIDataStore.Builder. Richiedendo unCoroutineContextanziché unCoroutineScope, l'API applica una concorrenza strutturata migliore. In questo modo, le operazioni di DataStore non sono vincolate a cicli di vita della UI di breve durata (ad es.viewModelScope), evitando l'annullamento prematuro e la potenziale perdita di dati.Avviso:assicurati che il
CoroutineContextfornito al builder abbia unJobe che sia limitato all'applicazione. Se il contesto viene annullato, le operazioni interne diDataStoreverranno terminate prematuramente.
Modifiche alle API
È stato introdotto il nuovo artefatto
androidx.datastore:datastore-tinkper il supporto della crittografiaDataStore. (Ic106d, b/167697691)Per criptare i dati utilizzando Tink:
Crea una chiave utilizzando le API Tink:
val keysetHandle = AndroidKeysetManager.Builder() .withSharedPref(applicationContext, "keyset", "keyset_prefs") .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM)) .withMasterKeyUri("android-keystore://master_key") .build() .keysetHandleCrea un
AeadSerializerche aggrega un serializzatore esistente:val aeadSerializer = AeadSerializer( // Use tink APIs to create an Aead object to encrypt/decrypt data. aead = keysetHandle.getPrimitive( RegistryConfiguration.get(), Aead::class.java, ), // AeadSerializer can wrap an existing serializer. wrappedSerializer = ExistingSerializer, // Specify a unique name to prevent a ciphertext swapping attack. associatedData = "settings.json".encodeToByteArray(), )Utilizza questo
aeadSerializeral posto del serializzatore durante la creazione dell'istanza del datastore:val dataStore = dataStore( fileName = "settings.json", serializer = aeadSerializer, scope = scope, )
Presentato
DataStore.Builder<T>come l'alternativa moderna e scalabile aDataStoreFactory. (I3b110, b/267785821, b/400507108, b/368385681, b/427722902, b/370838564, b/167697691)
Versione 1.3.0-alpha06
25 febbraio 2026
androidx.datastore:datastore-*:1.3.0-alpha06 è stato rilasciato. La versione 1.3.0-alpha06 contiene questi commit.
Nuove funzionalità
DataStoreora supportaandroidx.tracingsulla piattaforma di destinazione Android. Puoi creare unDataStorecon il tracciamento fornendo un'istanzaandroidx.tracing.Traceralla funzioneDataStoreFactory.createWithTracing(). (I71bc2, b/427722902)
Versione 1.3.0-alpha05
28 gennaio 2026
androidx.datastore:datastore-*:1.3.0-alpha05 è stato rilasciato. La versione 1.3.0-alpha05 contiene questi commit.
Nuove funzionalità
- Profili di baseline aggiunti al datastore. (3916245,b/469127532).
- Implementa il supporto WASM/JS in DataStore tramite
localStorage. In questo modo, si ottiene un netto vantaggio rispetto all'implementazione disessionStorageesistente, in quanto vengono abilitate le notifiche di un evento e la sincronizzazione degli eventi tra schede. (I67246, b/441511612)
Versione 1.3.0-alpha04
14 gennaio 2026
androidx.datastore:datastore-*:1.3.0-alpha04 è stato rilasciato. La versione 1.3.0-alpha04 contiene questi commit.
Modifiche alle API
- È stata aggiunta una funzione di copia di utilità che può essere utilizzata per aggiornare i dati per le preferenze
DataStore. (I70a18, b/467120382)
Correzioni di bug
- È stato risolto un problema per cui i dati binari potevano essere danneggiati durante l'archiviazione sostituendo la gestione delle stringhe UTF-8 con la codifica Base64 per il web. (Ie3178, b/473790107)
Versione 1.3.0-alpha03
17 dicembre 2025
androidx.datastore:datastore-*:1.3.0-alpha03 è stato rilasciato. La versione 1.3.0-alpha03 contiene questi commit.
Correzioni di bug
- Risolto il problema relativo alla ridenominazione del file del datastore temporaneo. (I94f89, b/203087070)
- Risolto un problema per evitare l'interruzione degli aggiornamenti durante la lettura/scrittura simultanea. Potrebbe verificarsi una race condition tra un nuovo agente di raccolta su
DataStore.datae una chiamataupdateDatasimultanea, facendo sì che l'agente di raccolta non rilevi il nuovo valore. (I6a427, b/431787506)
Versione 1.3.0-alpha02
3 dicembre 2025
androidx.datastore:datastore-*:1.3.0-alpha02 è stato rilasciato. La versione 1.3.0-alpha02 contiene questi commit.
Correzioni di bug
- Aggiungi la destinazione js() a
androidx.datastore. (I1f62b, b/441511612) - Applica l'ordine FIFO negli aggiornamenti di
GuavaDataStore. (I6fd00,b/451491257)
Versione 1.3.0-alpha01
19 novembre 2025
androidx.datastore:datastore-*:1.3.0-alpha01 è stato rilasciato. La versione 1.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- Aggiunto il supporto di KMP Web in
DataStoreutilizzando l'APIsessionStorage. Questa funzionalità consente aDataStoredi rendere persistenti i dati temporaneamente all'interno di una singola scheda del browser. (I60fad, b/316376114)
Versione 1.2
Versione 1.2.1
11 marzo 2026
androidx.datastore:datastore-*:1.2.1 è stato rilasciato. La versione 1.2.1 contiene questi commit.
Nessuna modifica
- Questa release introduce correzioni di bug minori dell'infrastruttura e non include modifiche all'API Datastore o al comportamento rispetto alla versione 1.2.0.
Versione 1.2.0
19 novembre 2025
androidx.datastore:datastore-*:1.2.0 è stato rilasciato. La versione 1.2.0 contiene questi commit.
Modifiche principali rispetto alla release 1.1.0
Supporto di Java/Guava:
- È stato aggiunto il nuovo modulo
datastore-guavaper esporre le API compatibili con gli utenti di Java e GuavaListenableFuturetramiteGuavaDataStore. - È stato aggiunto il supporto multiprocesso in
GuavaDataStore. - È stato aggiunto un overload per
GuavaDataStore.fromche accetta unExecutorJava (anziché unCoroutineContext) e utilizzaandroidx.core.util.Function.
Supporto dell'avvio diretto:
- L'utilizzo di DataStore in modalità Avvio diretto è ora supportato. Le nuove API come
createInDeviceProtectedStorage()inDataStoreFactoryedeviceProtectedDataStore()inDataStoreDelegateconsentono di creare il DataStore all'interno dello spazio di archiviazione protetto del dispositivo.
Modifiche all'API e allo spazio di archiviazione:
- È stato aggiunto
PreferencesFileSerializerche implementaandroidx.datastore.core.Serializerper l'utilizzo conFileStorage. - È stato definito il costruttore predefinito per
ReplaceFileCorruptionHandlerper l'utilizzo comune del codice.
Correzioni di bug:
- È stato corretto
java.lang.UnsatisfiedLinkErrorquando si utilizzaDataStorein un'app ottimizzata con R8 ma che non utilizza il file ProGuard standard. - È stato risolto un problema per cui le operazioni
GuavaDataStorepotevano essere eseguite in modo errato sul thread chiamante (ad es. il thread principale) anziché sul dispatcher IO specificato. - È stato risolto un problema di
FileNotFoundExceptioninOkioStorageall'avvio aggiungendo un secondo tentativo di lettura dei dati in caso di race condition.
Versione 1.2.0-rc01
5 novembre 2025
androidx.datastore:datastore-*:1.2.0-rc01 è stato rilasciato. La versione 1.2.0-rc01 contiene questi commit.
Versione 1.2.0-beta01
22 ottobre 2025
androidx.datastore:datastore-*:1.2.0-beta01 è stato rilasciato. La versione 1.2.0-beta01 contiene questi commit.
Modifiche alle API
- Rendi pubblico
CorruptionHandler. (I9ac35, b/452406457) - Usa
androidx.core.util.Functionnell'appGuavaDataStore. (I71eae, b/448563999) - Aggiungi un overload per
GuavaDataStore.fromche accetta un Executor anziché unCoroutineContext. (I989fa, b/448563183)
Correzioni di bug
- Correzione di
java.lang.UnsatisfiedLinkErrorquando si utilizzaDataStorein un'app ottimizzata con R8, ma che non utilizzagetDefaultProguardFile('android-proguard-optimize.txt'). (I27d0d, b/434696293) - Risolto un problema per cui le operazioni
GuavaDataStorepotevano essere eseguite in modo errato sul thread chiamante (ad es. il thread principale) anziché sul dispatcher IO specificato. (Ic91ea,b/441801112)
Versione 1.2.0-alpha02
7 maggio 2025
androidx.datastore:datastore-*:1.2.0-alpha02 è stato rilasciato. La versione 1.2.0-alpha02 contiene questi commit.
Modifiche alle API
- Aggiunto il supporto multiprocesso in
GuavaDataStore. (e0d608a). - Aggiunto un metodo helper per creare un
GuavaDataStoreda unDataStore. (9af26f4) - I progetti rilasciati con Kotlin 2.0 richiedono l'utilizzo di KGP 2.0.0 o versioni successive. (Idb6b5)
- Sostituisci l'overload
datastoreesistente con un metodo delegato per inizializzare un DataStore da utilizzare durante l'avvio diretto. (If71b9)
Versione 1.2.0-alpha01
26 marzo 2025
androidx.datastore:datastore-*:1.2.0-alpha01 è stato rilasciato. La versione 1.2.0-alpha01 contiene questi commit.
Nuove funzionalità
- Aggiunto il modulo
datastore-guavaper esporre API compatibili con gli utenti di Java e GuavaListenableFuturetramiteGuavaDataStore. (Iadd5e0) - L'utilizzo di
DataStoredurante la modalitàDirectBootè ora supportato. Per creare un datastore da utilizzare durante la modalità di avvio diretto, questo deve essere creato all'interno dello spazio di archiviazione protetto del dispositivo. Questo obiettivo può essere raggiunto con le seguenti nuove APIDataStore:createInDeviceProtectedStorage()inDataStoreFactoryedeviceProtectedDataStore()inDataStoreDelegate. (Ib90e56)
Modifiche alle API
- È stato aggiunto
PreferencesFileSerializerche implementa l'interfacciaandroidx.datastore.core.Serializerda utilizzare conFileStorage. (I4c71f3)
Correzioni di bug
- Risolto il problema
FileNotFoundExceptioninOkioStorageall'avvio aggiungendo un secondo tentativo di lettura dei dati in caso di race condition. (I43b3fb, b/337870543) - Definisci il costruttore predefinito per
ReplaceFileCorruptionHandlerper l'utilizzo comune del codice. (I795b05, b/358138957)
Versione 1.1
Versione 1.1.7
20 maggio 2025
androidx.datastore:datastore-*:1.1.7 è stato rilasciato. La versione 1.1.7 contiene questi commit.
Correzioni di bug
- Risolto il problema delle regole Proguard mancanti nell'artefatto Android di
datastore-preferences-core. (3f3f6e, b/413078297)
Versione 1.1.6
7 maggio 2025
androidx.datastore:datastore-*:1.1.6 è stato rilasciato. La versione 1.1.6 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui i metadati Gradle erano danneggiati nella versione
1.1.5. Questo problema è stato causato da un bug nel nuovo DSL del plug-in AGP KMP che impediva l'inclusione automatica dei metadati per tutte le piattaforme di destinazione. Il bug rende alcuni metodi DataStore Android non più visibili nelle build dei client. La correzione prevede l'utilizzo del DSLandroidprecedente inbuild.gradleanziché inandroidLibrary. (7801abf)
Versione 1.1.5
23 aprile 2025
androidx.datastore:datastore-*:1.1.5 è stato rilasciato. La versione 1.1.5 contiene questi commit.
Correzioni di bug
- Per mitigare i problemi di
CorruptionExceptioninPreferencesDataStore, lo spazio di archiviazione predefinito è stato modificato daOkioStorageaFileStorage. Questa modifica è stata implementata introducendo unPreferencesFileSerializer. b/346197747
Versione 1.1.4
26 marzo 2025
androidx.datastore:datastore-*:1.1.4 è stato rilasciato. La versione 1.1.4 contiene questi commit.
Correzioni di bug
- Sostituisci lo spazio di archiviazione predefinito da
OkioStorageaFileStorageper migliorare l'affidabilità riducendoCorruptionException. (I71181, b/346197747)
Versione 1.1.3
26 febbraio 2025
androidx.datastore:datastore-*:1.1.3 è stato rilasciato. La versione 1.1.3 contiene questi commit.
Correzioni di bug
- Risolto un problema di
FileNotFoundExceptioninOkioStorageriscontrato all'avvio dell'app. Se il tentativo iniziale di lettura del file non va a buon fine, verrà effettuato un secondo tentativo nel caso in cui si sia verificata una race condition dovuta alla creazione del file da parte di un processo diverso durante la lettura iniziale. (I43b3f, b/337870543)
Versione 1.1.2
15 gennaio 2025
androidx.datastore:datastore-*:1.1.2 è stato rilasciato. La versione 1.1.2 contiene questi commit.
Correzioni di bug
- Miglioramento di 8 volte della latenza di lettura warm (
DataStore.data.first()). (22b8a40) ReplaceFileCorruptionHandlerpuò essere creato dal codice comune KMP. (7632e839)
Versione 1.1.1
1° maggio 2024
androidx.datastore:datastore-*:1.1.1 è stato rilasciato. La versione 1.1.1 contiene questi commit.
Correzioni di bug
- È stato mitigato il falso allarme di Linux relativo all'errore "Si verificherebbe un deadlock delle risorse" in un caso limite in cui più istanze
DataStoretentano di scrivere da processi diversi eseguendo il backoff del blocco file.
Versione 1.1.0
17 aprile 2024
androidx.datastore:datastore-*:1.1.0 è stato rilasciato. La versione 1.1.0 contiene questi commit.
Modifiche principali dalla release 1.0.0
Per ulteriori informazioni, consulta le note di rilascio delle versioni alpha e beta di 1.1.0. Alcuni dei principali aggiornamenti della versione 1.1.0 sono:
- DataStore ora supporta più processi che accedono allo stesso file, con supporto per l'osservabilità tra i processi.
- La nuova interfaccia Storage ti consente di personalizzare il modo in cui archiviare o serializzare i modelli dei dati.
- Ora puoi utilizzare DataStore nei progetti Kotlin Multiplatform.
Versione 1.1.0-rc01
3 aprile 2024
androidx.datastore:datastore-*:1.1.0-rc01 è stato rilasciato. La versione 1.1.0-rc01 contiene questi commit.
Correzioni di bug
- Risolto il peggioramento delle prestazioni per cui le chiamate
updateDatanon ottimizzavano le scritture su disco se i nuovi dati erano uguali a quelli precedenti (d64cfb5) - Risolta una race condition per cui
MultiProcessDataStorepotrebbe non rilevare gli annullamenti della convalida durante l'inizializzazione. ((b/326141553),(094c2dd))
Versione 1.1.0-beta02
6 marzo 2024
androidx.datastore:datastore-*:1.1.0-beta02 è stato rilasciato. La versione 1.1.0-beta02 contiene questi commit.
Correzioni di bug
- Il miglioramento delle prestazioni su
DataStoreraccoglie le notifiche di aggiornamento solo quando viene osservato. (b/267792241)- Tieni presente che questa modifica potrebbe attivare
UncompletedCoroutinesErrornei test se utilizzi la libreria di test Coroutines. Per evitare questo problema, assicurati di superare ilTestScope.backgroundScopedurante l'inizializzazione diDataStorenei test.
- Tieni presente che questa modifica potrebbe attivare
- È stato risolto il problema relativo alle chiamate
updateDatanidificate sulla stessa istanza che si bloccano. (b/241760537) DataStorenon genera piùIOExceptionsse non riesce a eliminareSharedPreferencesdurante la migrazione. (b/195553816)- È stato risolto il problema per cui il cambio di nome del file non riesce durante
updateDatain ambienti JVM non Android. (b/203087070) - Risolto il problema per cui
CorruptionExceptionnon veniva gestito dopo l'inizializzazione diDataStore. (b/289582516)
Versione 1.1.0-beta01
10 gennaio 2024
androidx.datastore:datastore-*:1.1.0-beta01 viene rilasciato senza modifiche rispetto a 1.1.0-alpha07. La versione 1.1.0-beta01 contiene questi commit.
Versione 1.1.0-alpha07
29 novembre 2023
androidx.datastore:datastore-*:1.1.0-alpha07 è stato rilasciato. La versione 1.1.0-alpha07 contiene questi commit.
Modifiche alle API
- I metodi
MultiProcessDataStoreFactorynon sono più sperimentali.L'annotazione@ExperimentalMultiProcessDataStoreè stata rimossa completamente. (Ieee54, I8e607)
Correzioni di bug
- Implementazione della rimozione delle annotazioni
@ExperimentalMultiProcessDataStorenella versione 1.1.0-alpha07. (I8e607)
Versione 1.1.0-alpha06
1° novembre 2023
androidx.datastore:datastore-*:1.1.0-alpha06 è stato rilasciato. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche alle API
- Il metodo di fabbrica
createSingleProcessCoordinatorora riceve un percorso file (String,java.io.Fileeokio.Path) per essere coerente concreateMultiProcessCoordinator. (I211c8, b/305755935)
Versione 1.1.0-alpha05
6 settembre 2023
androidx.datastore:datastore-*:1.1.0-alpha05 è stato rilasciato. La versione 1.1.0-alpha05 contiene questi commit.
Modifiche alle API
- Il datastore
FileStorageè ora disponibile pubblicamente, quindi i client possono fornire parametri personalizzati. (Icb985) - È stato modificato il costruttore
OkioStoragein modo che accetti unInterProcessCoordinatorper poter essere utilizzato su Android conMultiProcessCoordinator. (Iecea3)
Correzioni di bug
- Correzione di
MultiProcessCoordinatorche non riesce a monitorare più file nella stessa directory. - Risolto il problema per cui non era possibile rilevare i file duplicati se i percorsi dei file non erano normalizzati.
- Correggi i valori errati restituiti da
RxDataStore#isDisposed. - Correggi la configurazione ProGuard mancante per l'artefatto
datstore-preferences-core.
Versione 1.1.0-alpha04
5 aprile 2023
androidx.datastore:datastore-*:1.1.0-alpha04 è stato rilasciato. La versione 1.1.0-alpha04 contiene questi commit.
Correzioni di bug
- Migliora l'implementazione interna per evitare una race condition in cui il flusso di dati di
DataStorepotrebbe emettere un valore precedente dopo un aggiornamento.
Versione 1.1.0-alpha03
24 marzo 2023
androidx.datastore:datastore-*:1.1.0-alpha03 è stato rilasciato.
Correzioni di bug
- Sono stati rimossi i vincoli di dipendenza dagli artefatti Maven per risolvere un problema di build in Kotlin Native Targets (b/274786186, KT-57531).
Versione 1.1.0-alpha02
22 marzo 2023
androidx.datastore:datastore-*:1.1.0-alpha02 è stato rilasciato. La versione 1.1.0-alpha02 contiene questi commit.
Nota
Tieni presente che questa versione include un importante refactoring interno che unisce le implementazioni per le implementazioni di DataStore a processo singolo e multiprocesso. Tieni d'occhio eventuali modifiche del comportamento impreviste (ad es. tempistiche delle notifiche di aggiornamento). Puoi utilizzare il componente Issue Tracker per segnalare queste modifiche.
Nuove funzionalità
- Ora puoi utilizzare
DataStorenei progetti KMM. Tieni presente che i target non Android di DataStore sono ancora sperimentali, ma abbiamo deciso di unire le versioni per consentire agli sviluppatori di provarli più facilmente. - Le funzionalità multi-processo vengono spostate da
androidx.datastore.multiprocessaandroidx.datastore.core. - Aggiungi un nuovo metodo factory in
androidx.datastore.core.MultiProcessDataStoreFactoryper creare istanze DataStore con oggettiStorageper le operazioni sui file. - Aggiungi una nuova interfaccia
InterProcessCoordinatorche consente a più istanze DataStore di comunicare tra i processi. Tieni presente che l'implementazione multiprocesso diInterProcessCoordinatorè disponibile solo su Android.
Modifiche alle API
- Aggiungi
InterProcessCoordinatoraStorageConnectionnell'interfaccia datastore-core (I555bb) - Modifica le API in datastore-core
MultiProcessDataStoreFactoryper utilizzare Storage. (Iac02f) - Spostamento delle API pubbliche in datastore-multiprocess in datastore-core (I76d7c)
PreferencesSerializeresposto da datastore-preferences-core (I4b788)- Aggiunta dell'annotazione
@JvmDefaultWithCompatibility(I8f206)
Versione 1.1.0-alpha01
9 novembre 2022
androidx.datastore:datastore-*:1.1.0-alpha01 è stato rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Nuove funzionalità
- Supporta casi d'uso multi-processo in cui la coerenza dei dati è garantita tra le istanze
DataStorenei vari processi. AggiungiMultiProcessDataStoreFactory#createper creareDataStoreistanze di questo tipo. - Nuova interfaccia di archiviazione che consente di sostituire il meccanismo di archiviazione sottostante per
Datastore. Sono fornite implementazioni per java.io e okio. Le fabbricheDataStorehanno nuovi metodi che accettano questo oggetto Storage.
Modifiche alle API
- Modifica le API in datastore-core
MultiProcessDataStoreFactoryper utilizzare Storage. (Iac02f) - Sposta le API pubbliche in datastore-multiprocess in datastore-core (I76d7c)
- Esposto
PreferencesSerializerda datastore-preferences-core (I4b788)
Versione 1.0.0
Versione 1.0.0
4 agosto 2021
androidx.datastore:datastore-*:1.0.0 è stato rilasciato. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
Jetpack DataStore è una soluzione di archiviazione dei dati che consente di archiviare coppie chiave-valore o oggetti digitati con i buffer di protocollo. DataStore utilizza le coroutine e il flusso di Kotlin per archiviare i dati in modo asincrono, coerente e transazionale.
Versione 1.0.0-rc02
21 luglio 2021
androidx.datastore:datastore-*:1.0.0-rc02 è stato rilasciato. La versione 1.0.0-rc02 contiene questi commit.
Correzioni di bug
- Chiariamo che
SharedPreferencesMigrationnon viene eseguito se non ci sono chiavi. (Icfa32, b/192824325) - È stato corretto un bug per cui
SharedPreferencesMigrationcreato conMIGRATE_ALL_KEYSgenerava un'eccezione se la chiave richiesta non esisteva ancora. (Ie318a, b/192824325)
Versione 1.0.0-rc01
30 giugno 2021
androidx.datastore:datastore-*:1.0.0-rc01 è stato rilasciato. La versione 1.0.0-rc01 contiene questi commit.
Correzioni di bug
- È stato corretto un bug per cui il file .java veniva aggiunto inavvertitamente al file jar finale (I65d96, b/188985637)
Versione 1.0.0-beta02
16 giugno 2021
androidx.datastore:datastore-*:1.0.0-beta02 è stato rilasciato. La versione 1.0.0-beta02 contiene questi commit.
Correzioni di bug
- Correzione di
ClassVerificationFailure(b/187450483)
Versione 1.0.0-beta01
21 aprile 2021
androidx.datastore:datastore-*:1.0.0-beta01 è stato rilasciato. La versione 1.0.0-beta01 contiene questi commit.
Modifiche alle API
- Rimozione dei sovraccarichi JVM per i metodi solo Kotlin (I2adc7)
Correzioni di bug
- È stato corretto un bug per cui i delegati di Datastore potevano causare la perdita di contesti (Ie96fc, b/184415662)
Versione 1.0.0-alpha08
10 marzo 2021
androidx.datastore:datastore-*:1.0.0-alpha08 è stato rilasciato. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche alle API
- Ora puoi aggiungere una migrazione che dipende dal contesto al tuo delegato della proprietà
dataStoreepreferencesDataStore. (I4ef69, b/173726702) - Aggiunge funzioni helper per ottenere il nome del file se non utilizzi più il delegato datastore o context.createDataStore (I60f9a)
- I metodi writeTo e readFrom di Serializer ora sospendono l'esecuzione. Se hai implementato un Serializer, dovrai aggiornare le tue funzioni in modo che siano funzioni di sospensione. (I1e58e)
- Sono stati aggiunti delegati della proprietà per gli utenti di RxDataStore. (Ied768, b/173726702)
Correzioni di bug
- Applica restrizioni all'utilizzo pubblico delle API sperimentali (I6aa29, b/174531520)
Versione 1.0.0-alpha07
24 febbraio 2021
androidx.datastore:datastore-*:1.0.0-alpha07 è stato rilasciato. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API
La funzione di estensione
Context.createDataStoreè stata rimossa e sostituita con il delegato della proprietà globalDataStore. Chiama globalDataStore una volta al livello superiore nel file Kotlin. Ad esempio:val Context.myDataStore by dataStore(...)Inseriscilo nel livello superiore del file Kotlin in modo che ne esista una sola istanza. (I57215, b/173726702)
Le funzioni RxDataStore ora si trovano in una classe RxDataStore anziché in funzioni di estensione su DataStore. (Idccdb, b/177691248)
Se vuoi eseguire la migrazione di EncryptedSharedPreferences (o SharedPreferences di avvio diretto) a DataStore, ora puoi farlo con il nuovo costruttore SharedPreferencesMigration che ti consente di inserire SharedPreferences. (I8e04e, b/177278510)
Correzioni di bug
- DataStore ora genera un'eccezione se sono presenti più DataStore attivi per lo stesso file. Se non gestivi DataStore come Singleton o non ti assicuravi che non fossero attive contemporaneamente due istanze di DataStore per un file, ora potresti visualizzare eccezioni durante la lettura o la scrittura in DataStore. Questi problemi possono essere risolti gestendo DataStore come Singleton. (Ib43f4, b/177691248)
- Correzione del comportamento di annullamento quando l'ambito del chiamante viene annullato. (I2c7b3)
Versione 1.0.0-alpha06
13 gennaio 2021
androidx.datastore:datastore-*:1.0.0-alpha06 è stato rilasciato. La versione 1.0.0-alpha06 contiene questi commit.
Nuove funzionalità
- Sono stati aggiunti wrapper RxJava per DataStore. Gli artefatti
datastore-rxjava2/3contengono i wrapper per le API DataStore principali (RxDataStore,RxDataStoreBuildereRxDataMigration). Gli artefattidatastore-preferences-rxjava2/3contengono un builder per creare un DataStore Preferences.
Modifiche alle API
- Nascondi l'interfaccia CorruptionHandler. Non c'era motivo per renderlo pubblico perché la factory DataStore accetta solo un ReplaceFileCorruptionHandler. (I0b3b3, b/176032264)
- Il metodo
preferencesKey<T>(name: String): Key<T>è stato rimosso e sostituito con metodi specifici per ogni tipo supportato. Ad esempio,preferencesKey<Int>("int")ora èintPreferencesKey("int")(Ibcfac, b/170311106)
Correzioni di bug
- Corregge la documentazione su DataStoreFactory, che non menzionava il fatto che il file del datastore viene creato nella sottodirectory "datastore/". (Ica222)
Versione 1.0.0-alpha05
2 dicembre 2020
androidx.datastore:datastore-*:1.0.0-alpha05 è stato rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
Correzioni di bug
- Aggiunta di documentazione ed eccezioni migliori relative alle scritture simultanee dai datastore. (Ia98a2, b/173522155, b/173726702)
- Ora consentiamo (ma non richiediamo) la chiusura di OutputStream passato a
Serializer.writeTo(). (I5c9bf, b/173037611)
Versione 1.0.0-alpha04
17 novembre 2020
androidx.datastore:datastore-*:1.0.0-alpha04 è stato rilasciato. La versione 1.0.0-alpha04 contiene questi commit.
Correzioni di bug
- È stato risolto un problema di pacchettizzazione che causava il seguente arresto anomalo in Preference Datastore
1.0.0-alpha03:java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences- L'arresto anomalo è stato originariamente segnalato qui: b/173036843
- (I4712d, b/173036843)
Versione 1.0.0-alpha03
11 novembre 2020
androidx.datastore:datastore-*:1.0.0-alpha03 è stato rilasciato. La versione 1.0.0-alpha03 contiene questi commit.
Nuove funzionalità
- Le preferenze ora supportano i valori double (utili se hai bisogno di una precisione maggiore rispetto ai float) (I5be8f, b/169471808)
Modifiche alle API
- È stata creata una dipendenza Kotlin pura per Datastore per consentire una compilazione più rapida.
androidx.datastore:datastore-corecontiene solo le API Kotlin di base eandroidx.datastore:datastorecontiene le API che dipendono da Android (inclusiSharedPreferencesMigratione il costruttoreContext.createDataStore).(I42d75, b/168512698) - Suddivisione dei target per il datastore delle preferenze per una compilazione Kotlin più rapida (Ia3c19)
I serializzatori ora richiedono una nuova proprietà per il valore predefinito che verrà utilizzato se non sono presenti dati sul disco. In questo modo è più facile implementare i serializzatori personalizzati, così gli utenti non devono gestire i flussi di input vuoti come casi speciali (i flussi di input vuoti non vengono analizzati con JSON).
- Inoltre, ora è presente un controllo per verificare che lo stream di output fornito a writeTo() non sia chiuso e, se è chiuso, genera eccezioni (I16e29)
Rendere interno il costruttore di SharedPreferencesView. Inizialmente era pubblico per consentire i test. I test devono invece creare un SharedPreferencesMigration ed eseguire il test in base a questo. (I93891)
Correzioni di bug
- Il parametro
produceFilesuDataStoreFactoryePreferenceDataStoreFactoryora è l'ultimo parametro dell'elenco, quindi ti consente di utilizzare la sintassi lambda finale di Kotlin. (Ibe7f1, b/169425442) - In seguito ai nuovi requisiti espliciti dell'API per Kotlin (I5ae1e)
Problemi noti
- Preferences DataStore si arresta in modo anomalo con
java.lang.NoClassDefFoundError. (b/173036843)
Versione 1.0.0-alpha02
14 ottobre 2020
androidx.datastore:datastore-core:1.0.0-alpha02 e androidx.datastore:datastore-preferences:1.0.0-alpha02 sono state rilasciate. La versione 1.0.0-alpha02 contiene questi commit.
Correzioni di bug
- Aggiunta una misura di protezione contro la mutazione in datastore-core. La mutazione interrompe l'utilizzo del datastore per le persone che utilizzano il datastore con tipi non proto/non preferenze (I6aa84)
- È stato aggiunto un metodo
toStringa Preferences.kt per semplificare il debug dello stato attuale (I96006) - È stata aggiunta un'eccezione per proteggere dall'uso improprio di
DataStore.Preferences(I1134d) - Risolto un bug che causava l'arresto anomalo dell'app all'avvio (I69237, b/168580258)
Versione 1.0.0-alpha01
2 settembre 2020
androidx.datastore:datastore-core:1.0.0-alpha01 e androidx.datastore:datastore-preferences:1.0.0-alpha01 sono state rilasciate. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
Jetpack DataStore è una nuova e migliorata soluzione di archiviazione dei dati che mira a sostituire SharedPreferences. Basato su coroutine e Flow di Kotlin, DataStore fornisce due diverse implementazioni:
- Proto DataStore, che consente di archiviare oggetti tipizzati (supportati da buffer di protocollo)
- Preferences DataStore, che memorizza coppie chiave-valore
I dati vengono archiviati in modo asincrono, coerente e transazionale, superando la maggior parte degli svantaggi di SharedPreferences.