Datastore
| Letzte Aktualisierung | Stabile Release | Releasekandidat | Beta-Release | Alpha-Release |
|---|---|---|---|---|
| 21. Oktober 2026 | 1.3.0 | - | - | - |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von DataStore hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Google-Repository bei Maven.
DataStore bietet verschiedene Optionen für die Serialisierung. Wählen Sie eine davon aus. Sie können beiden Implementierungen auch Android-unabhängige Abhängigkeiten hinzufügen.
Fügen Sie die Abhängigkeiten für die gewünschte Implementierung in der Datei build.gradle für Ihre App oder Ihr Modul hinzu:
Preferences DataStore
Fügen Sie der Datei „build.gradle“ die folgenden Zeilen hinzu:
Groovy
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.3.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.3.0" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.3.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.3.0") }
Wenn Sie die optionale RxJava-Unterstützung hinzufügen möchten, fügen Sie die folgenden Abhängigkeiten hinzu:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.3.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.3.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.3.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.3.0") }
DataStore
Fügen Sie der Datei „build.gradle“ die folgenden Zeilen hinzu:
Groovy
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.3.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.3.0" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.3.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.3.0") }
Fügen Sie die folgenden optionalen Abhängigkeiten für die RxJava-Unterstützung hinzu:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.3.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.3.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.3.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.3.0") }
Wenn Sie Inhalte serialisieren möchten, fügen Sie Abhängigkeiten für die Protokollzwischenspeicher- oder JSON-Serialisierung hinzu.
JSON-Serialisierung
Wenn Sie die JSON-Serialisierung verwenden möchten, fügen Sie Ihrer Gradle-Datei Folgendes hinzu:
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") }
Protobuf-Serialisierung
Wenn Sie die Protobuf-Serialisierung verwenden möchten, fügen Sie Ihrer Gradle-Datei Folgendes hinzu:
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
Ihr Feedback hilft uns, Jetpack zu verbessern. Wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben, lassen Sie es uns wissen. Bevor Sie ein neues Problem erstellen, sollten Sie sich jedoch die bereits gemeldeten Probleme in dieser Bibliothek ansehen. Wenn Sie sich einer Problemmeldung anschließen möchten, klicken Sie auf den Button mit dem Stern.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.3
Version 1.3.0
21. Oktober 2026
androidx.datastore:datastore-*:1.3.0 ist veröffentlicht. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit 1.2.0:
Neue Funktionen
Unterstützung für Webspeicher: Es wurden KMP-Webspeicheroptionen eingeführt, die eine flexible Datenpersistenz über Webziele hinweg ermöglichen:
sessionStorage(WebSessionStorage): Ermöglicht die temporäre Datenpersistenz innerhalb eines einzelnen Browsertabs.localStorage(WebLocalStorage): Ermöglicht nichtflüchtigen Speicher mit Ereignisbenachrichtigungen und Synchronisierung über mehrere Tabs hinweg.- Origin Private File System (
WebOpfsStorage): Bietet Dateisystemunterstützung über OPFS mit asynchroner Datei-E/A und tabübergreifenden Benachrichtigungen.
Verschlüsselungsunterstützung (
datastore-tink): Das neue Artefaktandroidx.datastore:datastore-tinkwurde hinzugefügt, das Verschlüsselungsunterstützung über die Tink-Bibliothek bietet. Es wirdAeadSerializereingeführt, um Daten mit Authenticated Encryption with Associated Data (AEAD) zu verschlüsseln und zu entschlüsseln.Tracing-Unterstützung: Unterstützung für
androidx.tracingauf der Android-Zielplattform hinzugefügt.DataStore.BuilderAPI:DataStore.Builder<T>wurde als moderne, skalierbare Alternative zuDataStoreFactoryeingeführt. Es ist einCoroutineContextanstelle einesCoroutineScopeerforderlich, um die strukturierte Nebenläufigkeit zu verbessern.Baseline-Profile:
datastorewurden Baseline-Profile hinzugefügt, um die Startleistung zu verbessern.
API-Änderungen
- Die APIs
DataStore.Builder,ReThrowCorruptionHandlerundInterProcessCoordinatorwurden aufpublicaktualisiert.
Fehlerkorrekturen und Verbesserungen
CorruptionException-Nachrichten wurden Informationen zum zugrunde liegenden Dateipfad hinzugefügt, um die Fehlerbehebung bei Parsing-Fehlern zu verbessern.Potenzieller Datenverlust in
GuavaDataStorewurde durch die Durchsetzung einer strikten FIFO-Reihenfolge (First-In-First-Out) für Aktualisierungen behoben.
Version 1.3.0-rc01
12. Oktober 2026
androidx.datastore:datastore-*:1.3.0-rc01 ist veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
API-Änderungen
WindowCompat#enableEdgeToEdge(Window)anstelle vonEdgeToEdge#enable()verwenden (Ibff3e)
Fehlerkorrekturen
- Die Abhängigkeit
androidx.lifecycle:lifecycle-runtimewurde auf 2.10.0 aktualisiert. Diese Version ist erforderlich, damit die Lint-Prüfungen für die gebündelte Lebenszyklus-Laufzeit mit AGP-Version 9.5.0-alpha04 oder höher ausgeführt werden können. (I99bfd, b/556807521)
Version 1.3.0-alpha11
9. September 2026
androidx.datastore:datastore-*:1.3.0-alpha11 ist veröffentlicht. Version 1.3.0-alpha11 enthält diese Commits.
Fehlerkorrekturen
- Der zugrunde liegende Dateipfad ist nicht in
CorruptionException-Nachrichten enthalten, die bei Fehlern beim Parsen vonDataStore-Einstellungen ausgegeben werden. (Ia9e8f)
Version 1.3.0-alpha10
29. Juli 2026
androidx.datastore:datastore-*:1.3.0-alpha10 ist veröffentlicht. Version 1.3.0-alpha10 enthält diese Commits.
API-Änderungen
GeneralSecurityException in AeadSerializer is now wrapped in CorruptionException for better CorruptionHandler integration.(I26e56, b/514941919)
Version 1.3.0-alpha09
6. Mai 2026
androidx.datastore:datastore-*:1.3.0-alpha09 ist veröffentlicht. Version 1.3.0-alpha09 enthält diese Commits.
API-Änderungen
ReThrowCorruptionHandlerveröffentlichen. (I137bb, b/427722902)- Lebenszyklus des Tracings mit dem System-Tracing konsistent machen. (Ib391b)
Version 1.3.0-alpha08
22. April 2026
androidx.datastore:datastore-*:1.3.0-alpha08 ist veröffentlicht. Version 1.3.0-alpha08 enthält diese Commits.
Neue Funktionen
- Unterstützung für Origin Private File System (OPFS) in DataStore für Webplattformen hinzugefügt. Diese Implementierung führt
WebOpfsStorageein und bietet architektonische Unterstützung für asynchrone Datei-E/A, tabübergreifende Benachrichtigungen über dieBroadcastChannelAPI und verteiltes Sperren über die nativeWeb Locks APIfür exklusiven Schreibzugriff. Id7f5807 b/316376114
API-Änderungen
- Die APIs
WebLocalStorageundWebSessionStoragewurden für die explizite Verwaltung von Speichertypen in Web-Umgebungen eingeführt. I35fa259b b/316376114
Version 1.3.0-alpha07
11. März 2026
androidx.datastore:datastore-*:1.3.0-alpha07 ist veröffentlicht. Version 1.3.0-alpha07 enthält diese Commits.
Neue Funktionen
- Verschlüsselungsunterstützung: Das neue Artefakt
androidx.datastore:datastore-tinkwurde eingeführt, das die Verschlüsselung Ihres Datenspeichers mit der Tink-Bibliothek unterstützt. In diesem Modul wird dieAeadSerializervorgestellt. Das ist eine neue Wrapper-Klasse, dieSerializer<T>implementiert und die authentifizierte Verschlüsselung mit verknüpften Daten (Authenticated Encryption with Associated Data, AEAD) von Tink verwendet, um Daten zu ver- und entschlüsseln.AeadSerializerist auf JVM- und Android-Zielplattformen verfügbar. - Neue
DataStoreBuilder API:DataStore.Builder<T>wurde als skalierbare Alternative zuDataStoreFactoryeingeführt. Mit dieser neuen API können Nutzer jetzt übersetCorruptionHandlerihre eigene Logik für die Beschädigung bereitstellen. Außerdem erfordert dieBuilderAPI, dass einDataStoremit einemCoroutineContextanstelle einesCoroutineScopeinitialisiert wird. Das ist eine Verbesserung für die strukturierte Nebenläufigkeit, da Aufrufer das Ausführungsverhalten (z. B. bestimmte Dispatcher) definieren können, ohne dassDataStoreden Lebenszyklus des Bereichs des Aufrufers unangemessen verwalten oder an ihn gebunden sein muss.Hinweis: Wir empfehlen allen Nutzern, von
DataStoreFactoryzu den neuenDataStore.BuilderAPIs zu migrieren. Da die API einenCoroutineContextanstelle einesCoroutineScopeerfordert, wird eine besser strukturierte Nebenläufigkeit erzwungen. So wird sichergestellt, dass DataStore-Vorgänge nicht an kurzlebige UI-Lebenszyklen (z.B.viewModelScope) gebunden sind, was vorzeitige Abbrüche und potenziellen Datenverlust verhindert.Warnung:Achten Sie darauf, dass der dem Builder bereitgestellte
CoroutineContexteinenJobhat und auf die Anwendung beschränkt ist. Wenn der Kontext abgebrochen wird, werden die internen Vorgänge vonDataStorevorzeitig beendet.
API-Änderungen
Das neue Artefakt
androidx.datastore:datastore-tinkfür die Unterstützung derDataStore-Verschlüsselung wurde eingeführt. (Ic106d, b/167697691)So verschlüsseln Sie Daten mit Tink:
Erstellen Sie einen Schlüssel mit Tink APIs:
val keysetHandle = AndroidKeysetManager.Builder() .withSharedPref(applicationContext, "keyset", "keyset_prefs") .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM)) .withMasterKeyUri("android-keystore://master_key") .build() .keysetHandleErstellen Sie einen
AeadSerializer, der einen vorhandenen Serializer umschließt: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(), )Verwenden Sie diesen
aeadSerializeranstelle Ihres Serializers, wenn Sie die Datenspeicherinstanz erstellen:val dataStore = dataStore( fileName = "settings.json", serializer = aeadSerializer, scope = scope, )
DataStore.Builder<T>wurde als moderne, skalierbare Alternative zuDataStoreFactoryeingeführt. (I3b110, b/267785821, b/400507108, b/368385681, b/427722902, b/370838564, b/167697691)
Version 1.3.0-alpha06
25. Februar 2026
androidx.datastore:datastore-*:1.3.0-alpha06 ist veröffentlicht. Version 1.3.0-alpha06 enthält diese Commits.
Neue Funktionen
DataStoreunterstützt jetztandroidx.tracingauf der Android-Zielplattform. Sie können einenDataStoremit Tracing erstellen, indem Sie der FunktionDataStoreFactory.createWithTracing()eineandroidx.tracing.Tracer-Instanz übergeben. (I71bc2, b/427722902)
Version 1.3.0-alpha05
28. Januar 2026
androidx.datastore:datastore-*:1.3.0-alpha05 ist veröffentlicht. Version 1.3.0-alpha05 enthält diese Commits.
Neue Funktionen
- Baseline-Profile wurden dem Datenspeicher hinzugefügt. (3916245,b/469127532).
- WASM/JS-Unterstützung in DataStore über
localStorageimplementieren. Dies bietet einen deutlichen Vorteil gegenüber der bestehendensessionStorage-Implementierung, da Ereignisbenachrichtigungen und Synchronisierung über mehrere Tabs hinweg möglich sind. (I67246, b/441511612)
Version 1.3.0-alpha04
14. Januar 2026
androidx.datastore:datastore-*:1.3.0-alpha04 ist veröffentlicht. Version 1.3.0-alpha04 enthält diese Commits.
API-Änderungen
- Es wurde eine Dienstfunktion zum Kopieren hinzugefügt, mit der Daten für die Einstellungen
DataStoreaktualisiert werden können. (I70a18, b/467120382)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Binärdaten während der Speicherung fehlerhaft sein konnten. Dazu wurde die UTF-8-String-Verarbeitung durch die Base64-Codierung für das Web ersetzt. (Ie3178, b/473790107)
Version 1.3.0-alpha03
17. Dezember 2025
androidx.datastore:datastore-*:1.3.0-alpha03 ist veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das die temporäre Datenspeicherdatei nicht umbenannt werden konnte. (I94f89, b/203087070)
- Ein Problem wurde behoben, um zu verhindern, dass Updates während gleichzeitiger Lese-/Schreibvorgänge verworfen werden. Es kann zu einer Race-Bedingung zwischen einem neuen Collector auf
DataStore.dataund einem gleichzeitigenupdateData-Aufruf kommen, sodass der Collector den neuen Wert nicht erfasst. (I6a427, b/431787506)
Version 1.3.0-alpha02
3. Dezember 2025
androidx.datastore:datastore-*:1.3.0-alpha02 ist veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Fügen Sie
androidx.datastoredas Ziel „js()“ hinzu. (I1f62b, b/441511612) - Erzwingen Sie die FIFO-Reihenfolge bei
GuavaDataStore-Updates. (I6fd00,b/451491257)
Version 1.3.0-alpha01
19. November 2025
androidx.datastore:datastore-*:1.3.0-alpha01 ist veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- KMP-Webunterstützung in
DataStoremithilfe dersessionStorageAPI hinzugefügt. Mit dieser Funktion kannDataStoreDaten vorübergehend in einem einzelnen Browsertab speichern. (I60fad, b/316376114)
Version 1.2
Version 1.2.1
11. März 2026
androidx.datastore:datastore-*:1.2.1 ist veröffentlicht. Version 1.2.1 enthält diese Commits.
Keine Änderungen
- Diese Version enthält kleinere Fehlerkorrekturen an der Infrastruktur und keine Änderungen an der DataStore API oder am Verhalten gegenüber Version 1.2.0.
Version 1.2.0
19. November 2025
androidx.datastore:datastore-*:1.2.0 ist veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
Java/Guava-Unterstützung:
- Das neue Modul
datastore-guavawurde hinzugefügt, um APIs, die für Java- und Guava-ListenableFuture-Nutzer geeignet sind, überGuavaDataStorebereitzustellen. - Unterstützung für mehrere Prozesse in
GuavaDataStorehinzugefügt. - Es wurde eine Überladung für
GuavaDataStore.fromhinzugefügt, die ein Java-Executor(anstelle einesCoroutineContext) akzeptiert undandroidx.core.util.Functionverwendet.
Unterstützung für den Direktstart:
- Die Verwendung von DataStore im Direktstartmodus wird jetzt unterstützt. Mit neuen APIs wie
createInDeviceProtectedStorage()inDataStoreFactoryunddeviceProtectedDataStore()inDataStoreDelegatekann der DataStore im gerätegeschützten Speicher erstellt werden.
Änderungen am Speicher und an der API:
PreferencesFileSerializerhinzugefügt, dasandroidx.datastore.core.Serializerfür die Verwendung mitFileStorageimplementiert.- Der Standardkonstruktor für
ReplaceFileCorruptionHandlerwurde für die allgemeine Codenutzung definiert.
Fehlerkorrekturen:
java.lang.UnsatisfiedLinkErrorwurde behoben, wennDataStorein einer mit R8 optimierten App verwendet wird, aber nicht die Standard-ProGuard-Datei verwendet wird.- Es wurde ein Problem behoben, bei dem
GuavaDataStore-Vorgänge fälschlicherweise im aufrufenden Thread (z.B. im Hauptthread) statt im angegebenen IO-Dispatcher ausgeführt werden konnten. - Ein
FileNotFoundException-Problem inOkioStoragebeim Start wurde behoben, indem ein zweiter Versuch zum Lesen von Daten im Falle einer Race-Bedingung hinzugefügt wurde.
Version 1.2.0-rc01
5. November 2025
androidx.datastore:datastore-*:1.2.0-rc01 ist veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
Version 1.2.0-beta01
22. Oktober 2025
androidx.datastore:datastore-*:1.2.0-beta01 ist veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
API-Änderungen
CorruptionHandlerveröffentlichen. (I9ac35, b/452406457)androidx.core.util.FunctioninGuavaDataStoreverwenden. (I71eae, b/448563999)- Fügen Sie eine Überladung für
GuavaDataStore.fromhinzu, die einen Executor anstelle einesCoroutineContextakzeptiert. (I989fa, b/448563183)
Fehlerkorrekturen
java.lang.UnsatisfiedLinkErrorwurde korrigiert, wennDataStorein einer App verwendet wird, die mit R8 optimiert ist, aber nichtgetDefaultProguardFile('android-proguard-optimize.txt')verwendet. (I27d0d, b/434696293)- Es wurde ein Problem behoben, bei dem
GuavaDataStore-Vorgänge fälschlicherweise im aufrufenden Thread (z.B. im Hauptthread) statt im angegebenen E/A-Dispatcher ausgeführt werden konnten. (Ic91ea,b/441801112)
Version 1.2.0-alpha02
7. Mai 2025
androidx.datastore:datastore-*:1.2.0-alpha02 ist veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.
API-Änderungen
- Unterstützung für mehrere Prozesse in
GuavaDataStorehinzugefügt. (e0d608a). - Es wurde eine Hilfsmethode hinzugefügt, um ein
GuavaDataStoreaus einemDataStorezu erstellen. (9af26f4) - Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich. (Idb6b5)
- Ersetzen Sie die vorhandene
datastore-Überladung durch eine Delegatmethode, um einen DataStore zu initialisieren, der beim Direktstart verwendet werden soll. (If71b9)
Version 1.2.0-alpha01
26. März 2025
androidx.datastore:datastore-*:1.2.0-alpha01 ist veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.
Neue Funktionen
- Das Modul
datastore-guavawurde hinzugefügt, um APIs, die für Java- und Guava-ListenableFuture-Nutzer geeignet sind, überGuavaDataStorebereitzustellen. (Iadd5e0) - Die Verwendung von
DataStoreimDirectBoot-Modus wird jetzt unterstützt. Wenn Sie einen Datenspeicher erstellen möchten, der im Direct Boot-Modus verwendet werden soll, muss er im gerätegeschützten Speicher erstellt werden. Dies kann mit den folgenden neuenDataStore-APIs erreicht werden:createInDeviceProtectedStorage()inDataStoreFactoryunddeviceProtectedDataStore()inDataStoreDelegate. (Ib90e56)
API-Änderungen
PreferencesFileSerializerhinzugefügt, das dieandroidx.datastore.core.Serializer-Schnittstelle für die Verwendung mitFileStorageimplementiert. (I4c71f3)
Fehlerkorrekturen
- Das Problem
FileNotFoundExceptioninOkioStoragebeim Start wurde behoben, indem ein zweiter Versuch zum Lesen von Daten im Falle einer Race-Bedingung hinzugefügt wurde. (I43b3fb, b/337870543) - Der Standardkonstruktor für
ReplaceFileCorruptionHandlerwurde für die allgemeine Codeverwendung definiert. (I795b05, b/358138957)
Version 1.1
Version 1.1.7
20. Mai 2025
androidx.datastore:datastore-*:1.1.7 ist veröffentlicht. Version 1.1.7 enthält diese Commits.
Fehlerkorrekturen
- Das Problem mit fehlenden Proguard-Regeln im Android-Artefakt von
datastore-preferences-corewurde behoben. (3f3f6e, b/413078297)
Version 1.1.6
7. Mai 2025
androidx.datastore:datastore-*:1.1.6 ist veröffentlicht. Version 1.1.6 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Gradle-Metadaten in Version
1.1.5fehlerhaft waren. Dieses Problem wurde durch einen Fehler in der neuen AGP-KMP-Plug-in-DSL verursacht, der verhinderte, dass Metadaten für alle Zielplattformen automatisch einbezogen wurden. Der Fehler führt dazu, dass einige DataStore-Android-Methoden in den Builds der Clients nicht mehr sichtbar sind. Die Lösung besteht darin, die ältereandroid-DSL inbuild.gradleanstelle vonandroidLibraryzu verwenden. (7801abf)
Version 1.1.5
23. April 2025
androidx.datastore:datastore-*:1.1.5 ist veröffentlicht. Version 1.1.5 enthält diese Commits.
Fehlerkorrekturen
- Um
CorruptionException-Probleme inPreferencesDataStorezu beheben, wurde der Standardspeicher vonOkioStorageinFileStoragegeändert. Diese Änderung wurde durch die Einführung einesPreferencesFileSerializerumgesetzt. b/346197747
Version 1.1.4
26. März 2025
androidx.datastore:datastore-*:1.1.4 ist veröffentlicht. Version 1.1.4 enthält diese Commits.
Fehlerkorrekturen
- Ersetzen Sie den Standardspeicher von
OkioStoragedurchFileStorage, um die Zuverlässigkeit zu verbessern, indem SieCorruptionExceptionreduzieren. (I71181, b/346197747)
Version 1.1.3
26. Februar 2025
androidx.datastore:datastore-*:1.1.3 ist veröffentlicht. Version 1.1.3 enthält diese Commits.
Fehlerkorrekturen
- Ein
FileNotFoundException-Problem inOkioStorage, das beim Starten der App aufgetreten ist, wurde behoben. Wenn der erste Versuch, die Datei zu lesen, fehlschlägt, wird ein zweiter Versuch unternommen, falls eine Race-Bedingung aufgetreten ist, weil die Datei während des ersten Lesevorgangs von einem anderen Prozess erstellt wurde. (I43b3f, b/337870543)
Version 1.1.2
15. Januar 2025
androidx.datastore:datastore-*:1.1.2 ist veröffentlicht. Version 1.1.2 enthält diese Commits.
Fehlerkorrekturen
- Verbesserung der Latenz beim Lesen von Warm-Daten (
DataStore.data.first()) um das Achtfache. (22b8a40) ReplaceFileCorruptionHandlerkann aus KMP-gemeinsamem Code erstellt werden. (7632e839)
Version 1.1.1
1. Mai 2024
androidx.datastore:datastore-*:1.1.1 ist veröffentlicht. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
- In einem Grenzfall, in dem mehrere
DataStore-Instanzen versuchen, aus verschiedenen Prozessen zu schreiben, wurde ein falscher Linux-Alarm für den Fehler „Resource deadlock would occur“ (Ressourcen-Deadlock würde auftreten) durch Zurücksetzen der Dateisperre behoben.
Version 1.1.0
17. April 2024
androidx.datastore:datastore-*:1.1.0 ist veröffentlicht. Version 1.1.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.0.0
Weitere Informationen finden Sie in den Versionshinweisen zu den Alpha- und Betaversionen von 1.1.0. Einige der wichtigsten Updates in 1.1.0 sind:
- DataStore unterstützt jetzt den Zugriff mehrerer Prozesse auf dieselbe Datei und bietet Unterstützung für die Beobachtbarkeit über Prozesse hinweg.
- Mit der neuen Storage-Schnittstelle können Sie anpassen, wie Ihre Datenmodelle gespeichert oder serialisiert werden.
- Sie können DataStore jetzt in Kotlin Multiplatform-Projekten verwenden.
Version 1.1.0-rc01
3. April 2024
androidx.datastore:datastore-*:1.1.0-rc01 ist veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem die Leistung beeinträchtigt wurde, weil
updateData-Aufrufe nicht für Laufwerksschreibvorgänge optimiert wurden, wenn die neuen Daten mit den alten Daten identisch sind (d64cfb5). - Es wurde eine Race-Bedingung behoben, bei der
MultiProcessDataStorewährend der Initialisierung möglicherweise ungültige Werte übersehen hat. ((b/326141553),(094c2dd))
Version 1.1.0-beta02
6. März 2024
androidx.datastore:datastore-*:1.1.0-beta02 ist veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Bei der Leistungsverbesserung für
DataStorewerden nur Update-Benachrichtigungen erfasst, wenn sie beobachtet werden. (b/267792241)- Beachten Sie, dass diese Änderung in Ihren Tests
UncompletedCoroutinesErrorauslösen kann, wenn Sie die Coroutines-Testbibliothek verwenden. Achten Sie darauf, dass Sie beim Initialisieren vonDataStorein Ihren Tests dieTestScope.backgroundScopeübergeben, um dieses Problem zu vermeiden.
- Beachten Sie, dass diese Änderung in Ihren Tests
- Das Problem, dass verschachtelte
updateData-Aufrufe auf derselben Instanz zu einem Deadlock führen, wurde behoben. (b/241760537) DataStorelöst nicht mehrIOExceptionsaus, wennSharedPreferenceswährend der Migration nicht gelöscht werden kann. (b/195553816)- Ein Problem wurde behoben, durch das das Umbenennen von Dateien während
updateDatain JVM-Umgebungen, die nicht Android sind, fehlschlug. (b/203087070) - Ein Problem wurde behoben, bei dem
CorruptionExceptionnach der Initialisierung vonDataStorenicht verarbeitet wird. (b/289582516)
Version 1.1.0-beta01
10. Januar 2024
androidx.datastore:datastore-*:1.1.0-beta01 wird ohne Änderungen seit 1.1.0-alpha07 veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.
Version 1.1.0-alpha07
29. November 2023
androidx.datastore:datastore-*:1.1.0-alpha07 ist veröffentlicht. Version 1.1.0-alpha07 enthält diese Commits.
API-Änderungen
MultiProcessDataStoreFactory-Methoden sind nicht mehr experimentell.Die Annotation@ExperimentalMultiProcessDataStorewurde vollständig entfernt. (Ieee54, I8e607)
Fehlerkorrekturen
- Entfernung von
@ExperimentalMultiProcessDataStore-Annotationen in 1.1.0-alpha07 eingeführt. (I8e607)
Version 1.1.0-alpha06
1. November 2023
androidx.datastore:datastore-*:1.1.0-alpha06 ist veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.
API-Änderungen
- Die Factory-Methode
createSingleProcessCoordinatorempfängt jetzt einen Dateipfad (String,java.io.Fileundokio.Path), um mitcreateMultiProcessCoordinatorkonsistent zu sein. (I211c8, b/305755935)
Version 1.1.0-alpha05
6. September 2023
androidx.datastore:datastore-*:1.1.0-alpha05 ist veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.
API-Änderungen
- Datastore
FileStorageist jetzt öffentlich verfügbar, sodass Clients benutzerdefinierte Parameter bereitstellen können. (Icb985) - Der
OkioStorage-Konstruktor wurde so geändert, dass er einInterProcessCoordinatorakzeptiert, damit er unter Android mitMultiProcessCoordinatorverwendet werden kann. (Iecea3)
Fehlerkorrekturen
- Fehler behoben, durch den
MultiProcessCoordinatornicht mehrere Dateien im selben Verzeichnis überwachen konnte. - Fehler behoben, bei dem doppelte Dateien nicht erkannt werden konnten, wenn Dateipfade nicht normalisiert waren.
- Falsche Werte, die von
RxDataStore#isDisposedzurückgegeben wurden, wurden korrigiert. - Fehlende ProGuard-Konfiguration für das Artefakt
datstore-preferences-corekorrigieren.
Version 1.1.0-alpha04
5. April 2023
androidx.datastore:datastore-*:1.1.0-alpha04 ist veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Die interne Implementierung wurde verbessert, um eine Race-Bedingung zu vermeiden, bei der der Datenfluss von
DataStorenach einem Update einen älteren Wert ausgeben könnte.
Version 1.1.0-alpha03
24. März 2023
androidx.datastore:datastore-*:1.1.0-alpha03 ist veröffentlicht.
Fehlerkorrekturen
- Abhängigkeitseinschränkungen wurden aus Maven-Artefakten entfernt, um ein Build-Problem in Kotlin Native Targets zu umgehen (b/274786186, KT-57531).
Version 1.1.0-alpha02
22. März 2023
androidx.datastore:datastore-*:1.1.0-alpha02 ist veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.
Hinweis
Diese Version enthält ein wichtiges internes Refactoring, bei dem die Implementierungen für Einzelprozess- und Multiprozess-DataStore zusammengeführt werden. Achte auf mögliche unbeabsichtigte Verhaltensänderungen (z.B. Zeitpunkt von Update-Benachrichtigungen). Sie können solche Änderungen über die Issue Tracker-Komponente melden.
Neue Funktionen
- Sie können
DataStorejetzt in KMM-Projekten verwenden. Beachten Sie, dass Nicht-Android-Ziele von DataStore noch experimentell sind. Wir haben uns jedoch entschieden, die Versionen zusammenzuführen, damit Entwickler sie leichter ausprobieren können. - Multiprozessfunktionen werden von
androidx.datastore.multiprocesszuandroidx.datastore.coreverschoben. - Fügen Sie in
androidx.datastore.core.MultiProcessDataStoreFactoryeine neue Factory-Methode hinzu, um DataStore-Instanzen mitStorage-Objekten für Dateioperationen zu erstellen. - Fügen Sie eine neue Schnittstelle
InterProcessCoordinatorhinzu, die mehreren DataStore-Instanzen die prozessübergreifende Kommunikation ermöglicht. Die Multiprozess-Implementierung vonInterProcessCoordinatorist nur auf Android-Geräten verfügbar.
API-Änderungen
InterProcessCoordinatorzuStorageConnectionin der datastore-core-Schnittstelle hinzugefügt (I555bb)- Ändern Sie die APIs in datastore-core
MultiProcessDataStoreFactory, um Storage zu verwenden. (Iac02f) - Öffentliche APIs in datastore-multiprocess werden nach datastore-core verschoben (I76d7c)
PreferencesSerializeraus datastore-preferences-core verfügbar gemacht (I4b788)- Annotation
@JvmDefaultWithCompatibilitywurde hinzugefügt. (I8f206)
Version 1.1.0-alpha01
9. November 2022
androidx.datastore:datastore-*:1.1.0-alpha01 ist veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
Neue Funktionen
- Unterstützung von Anwendungsfällen mit mehreren Prozessen, bei denen die Datenkonsistenz zwischen
DataStore-Instanzen über Prozesse hinweg gewährleistet ist. Fügen SieMultiProcessDataStoreFactory#createhinzu, um solcheDataStore-Instanzen zu erstellen. - Neue Storage-Schnittstelle, mit der der zugrunde liegende Speichermechanismus für
Datastoreausgetauscht werden kann. Implementierungen für java.io und okio werden bereitgestellt.DataStore-Factories haben neue Methoden, die dieses Storage-Objekt akzeptieren.
API-Änderungen
- Ändern Sie die APIs in datastore-core
MultiProcessDataStoreFactory, um Storage zu verwenden. (Iac02f) - Öffentliche APIs in datastore-multiprocess werden nach datastore-core verschoben (I76d7c)
PreferencesSerializeraus datastore-preferences-core verfügbar gemacht (I4b788)
Version 1.0.0
Version 1.0.0
4. August 2021
androidx.datastore:datastore-*:1.0.0 ist veröffentlicht. Version 1.0.0 enthält diese Commits.
Wichtige Funktionen von 1.0.0
Jetpack DataStore ist eine Datenspeicherlösung, mit der Sie Schlüssel/Wert-Paare oder typisierte Objekte mit Protokollzwischenspeichern speichern können. DataStore verwendet Kotlin-Koroutinen und Flow, um Daten asynchron, konsistent und transaktional zu speichern.
Version 1.0.0-rc02
21. Juli 2021
androidx.datastore:datastore-*:1.0.0-rc02 ist veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Stellen Sie klar, dass
SharedPreferencesMigrationnicht ausgeführt wird, wenn keine Schlüssel vorhanden sind. (Icfa32, b/192824325) - Es wurde ein Fehler behoben, bei dem
SharedPreferencesMigration, das mitMIGRATE_ALL_KEYSerstellt wurde, eine Ausnahme auslöste, wenn der angeforderte Schlüssel noch nicht vorhanden war. (Ie318a, b/192824325)
Version 1.0.0-rc01
30. Juni 2021
androidx.datastore:datastore-*:1.0.0-rc01 ist veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Fehler behoben, bei dem die .java-Datei versehentlich in die endgültige JAR-Datei eingefügt wurde (I65d96, b/188985637)
Version 1.0.0-beta02
16. Juni 2021
androidx.datastore:datastore-*:1.0.0-beta02 ist veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Fehler bei
ClassVerificationFailurekorrigiert (b/187450483)
Version 1.0.0-beta01
21. April 2021
androidx.datastore:datastore-*:1.0.0-beta01 ist veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
API-Änderungen
- JVM-Überladungen für reine Kotlin-Methoden entfernt (I2adc7)
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Datenspeicher-Delegierte zu Kontextlecks führen konnten (Ie96fc, b/184415662).
Version 1.0.0-alpha08
10. März 2021
androidx.datastore:datastore-*:1.0.0-alpha08 ist veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
API-Änderungen
- Sie können jetzt eine kontextabhängige Migration zu Ihrem
dataStore- undpreferencesDataStore-Property-Delegat hinzufügen. (I4ef69, b/173726702) - Fügt Hilfsfunktionen hinzu, um den Namen der Datei abzurufen, wenn Sie den Datenspeicher-Delegaten oder „context.createDataStore“ nicht mehr verwenden (I60f9a)
- Serializer „writeTo“ und „readFrom“ werden jetzt angehalten. Wenn Sie einen Serializer implementiert haben, müssen Sie Ihre Funktionen in „suspend“-Funktionen ändern. (I1e58e)
- Property-Delegates für RxDataStore-Nutzer hinzugefügt. (Ied768, b/173726702)
Fehlerkorrekturen
- Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
Version 1.0.0-alpha07
24. Februar 2021
androidx.datastore:datastore-*:1.0.0-alpha07 ist veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
API-Änderungen
Die Erweiterungsfunktion
Context.createDataStorewurde entfernt und durch den globalDataStore-Property-Delegaten ersetzt. Rufen Sie „globalDataStore“ einmal auf der obersten Ebene in Ihrer Kotlin-Datei auf. Beispiel:val Context.myDataStore by dataStore(...)Fügen Sie diese auf der obersten Ebene Ihrer Kotlin-Datei ein, damit es nur eine Instanz davon gibt. (I57215, b/173726702)
Die RxDataStore-Funktionen befinden sich jetzt in einer RxDataStore-Klasse und nicht mehr in Erweiterungsfunktionen in DataStore. (Idccdb, b/177691248)
Wenn ihr EncryptedSharedPreferences (oder Direct Boot SharedPreferences) zu DataStore migrieren möchtet, könnt ihr das jetzt mit dem neuen SharedPreferencesMigration-Konstruktor tun, mit dem ihr die SharedPreferences einfügen könnt. (I8e04e, b/177278510)
Fehlerkorrekturen
- DataStore löst jetzt eine Ausnahme aus, wenn mehrere aktive DataStores für dieselbe Datei vorhanden sind. Wenn Sie Ihren DataStore nicht als Singleton verwaltet oder nicht dafür gesorgt haben, dass nicht zwei Instanzen von DataStore gleichzeitig für eine Datei aktiv sind, werden beim Lesen oder Schreiben in DataStore möglicherweise Ausnahmen angezeigt. Diese Probleme können behoben werden, indem Sie Ihren DataStore als Singleton verwalten. (Ib43f4, b/177691248)
- Abbruchverhalten korrigieren, wenn der Aufruferbereich abgebrochen wird. (I2c7b3)
Version 1.0.0-alpha06
13. Januar 2021
androidx.datastore:datastore-*:1.0.0-alpha06 ist veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
Neue Funktionen
- RxJava-Wrapper für DataStore hinzugefügt. Die
datastore-rxjava2/3-Artefakte enthalten die Wrapper für die wichtigsten DataStore APIs (RxDataStore,RxDataStoreBuilderundRxDataMigration). Diedatastore-preferences-rxjava2/3-Artefakte enthalten einen Builder zum Erstellen eines Preferences DataStore.
API-Änderungen
- CorruptionHandler-Schnittstelle ausblenden. Es gab keinen Grund, sie öffentlich zu machen, da die DataStore-Factory nur einen ReplaceFileCorruptionHandler akzeptiert. (I0b3b3, b/176032264)
- Die Methode
preferencesKey<T>(name: String): Key<T>wurde entfernt und durch Methoden ersetzt, die für jeden unterstützten Typ spezifisch sind. Beispielsweise istpreferencesKey<Int>("int")jetztintPreferencesKey("int")(Ibcfac, b/170311106).
Fehlerkorrekturen
- Die Dokumentation zu DataStoreFactory wurde korrigiert. Es wurde nicht erwähnt, dass die Datenspeicherdatei im Unterverzeichnis „datastore/“ erstellt wird. (Ica222)
Version 1.0.0-alpha05
2. Dezember 2020
androidx.datastore:datastore-*:1.0.0-alpha05 ist veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Bessere Dokumentation und Ausnahmen für gleichzeitige Schreibvorgänge aus Datenspeichern hinzugefügt. (Ia98a2, b/173522155, b/173726702)
- Der an
Serializer.writeTo()übergebene OutputStream kann jetzt geschlossen werden, muss aber nicht. (I5c9bf, b/173037611)
Version 1.0.0-alpha04
17. November 2020
androidx.datastore:datastore-*:1.0.0-alpha04 ist veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Ein Paketproblem wurde behoben, das den folgenden Absturz in Preference Datastore
1.0.0-alpha03verursacht hat:java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences- Der Absturz wurde ursprünglich hier gemeldet: b/173036843
- (I4712d, b/173036843)
Version 1.0.0-alpha03
11. November 2020
androidx.datastore:datastore-*:1.0.0-alpha03 ist veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
Neue Funktionen
- Einstellungen unterstützen jetzt Double-Werte (was nützlich ist, wenn Sie mehr Genauigkeit als bei Gleitkommawerten benötigen) (I5be8f, b/169471808)
API-Änderungen
- Es wurde eine reine Kotlin-Abhängigkeit für Datastore erstellt, um eine schnellere Kompilierung zu ermöglichen.
androidx.datastore:datastore-coreenthält die reinen Kotlin-APIs undandroidx.datastore:datastoredie APIs, die von Android abhängen (einschließlich desSharedPreferencesMigration- und desContext.createDataStore-Konstruktors). (I42d75, b/168512698) - Ziele für den Datenspeicher für Einstellungen werden aufgeteilt, um die Kotlin-Kompilierung zu beschleunigen (Ia3c19)
Serialisierer erfordern jetzt ein neues Attribut für den Standardwert, der verwendet wird, wenn keine Daten auf dem Laufwerk vorhanden sind. Dies erleichtert die Implementierung benutzerdefinierter Serialisierer, sodass Nutzer keine Sonderfälle für leere Eingabeströme erstellen müssen (leere Eingabeströme werden nicht mit JSON geparst).
- Außerdem wird jetzt geprüft, ob der für „writeTo()“ bereitgestellte Ausgabestream nicht geschlossen ist. Wenn er geschlossen ist, werden Ausnahmen ausgelöst (I16e29).
Der Konstruktor für SharedPreferencesView wird als intern festgelegt. Ursprünglich war es öffentlich, um Tests zu ermöglichen. Stattdessen sollten Tests eine SharedPreferencesMigration erstellen und damit testen. (I93891)
Fehlerkorrekturen
- Der Parameter
produceFilefürDataStoreFactoryundPreferenceDataStoreFactoryist jetzt der letzte Parameter in der Liste, sodass Sie die Kotlin-Syntax für nachgestellte Lambdas verwenden können. (Ibe7f1, b/169425442) - Gemäß den neuen expliziten API-Anforderungen für Kotlin (I5ae1e)
Bekannte Probleme
- Preference Datastore stürzt mit
java.lang.NoClassDefFoundErrorab. (b/173036843)
Version 1.0.0-alpha02
14. Oktober 2020
androidx.datastore:datastore-core:1.0.0-alpha02 und androidx.datastore:datastore-preferences:1.0.0-alpha02 sind veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Schutz gegen Mutationen in datastore-core hinzugefügt. Mutation unterbricht die Datastore-Nutzung für Nutzer, die Datastore mit Nicht-Proto-/Nicht-Preferences-Typen verwenden (I6aa84)
- In Preferences.kt wurde die Methode
toStringhinzugefügt, um das Debugging des aktuellen Status zu vereinfachen (I96006). - Ausnahme zum Schutz vor Missbrauch von
DataStore.Preferenceshinzugefügt (I1134d) - Ein Fehler, der beim Starten der App zu einem Absturz führte, wurde behoben (I69237, b/168580258).
Version 1.0.0-alpha01
2. September 2020
androidx.datastore:datastore-core:1.0.0-alpha01 und androidx.datastore:datastore-preferences:1.0.0-alpha01 sind veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
Jetpack DataStore ist eine neue und verbesserte Datenspeicherlösung, die SharedPreferences ersetzen soll. DataStore basiert auf Kotlin-Koroutinen und Flow und bietet zwei verschiedene Implementierungen:
- Proto DataStore, mit dem Sie typisierte Objekte speichern können (unterstützt durch Protokollzwischenspeicher)
- Preferences DataStore, der Schlüssel/Wert-Paare speichert
Die Daten werden asynchron, konsistent und transaktional gespeichert, wodurch die meisten Nachteile von SharedPreferences vermieden werden.