Datastore
| Letzte Aktualisierung | Stabile Release | Releasekandidat | Beta-Release | Alpha-Release |
|---|---|---|---|---|
| 12. Oktober 2026 | 1.2.1 | 1.3.0-rc01 | - | - |
Abhängigkeiten deklarieren
Für eine Abhängigkeit von DataStore musst du deinem 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.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") }
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.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
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.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") }
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.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") }
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-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
- Verwenden Sie
WindowCompat#enableEdgeToEdge(Window)anstelle vonEdgeToEdge#enable()(Ibff3e).
Diverse Fehlerkorrekturen
- Die
androidx.lifecycle:lifecycle-runtime-Abhängigkeit wurde auf 2.10.0 aktualisiert. Diese Version ist erforderlich, damit die gebündelten Lint-Prüfungen für die 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.
Diverse 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 des Speichertyps in Webumgebungen 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, eine neue Wrapper-Klasse, dieSerializer<T>implementiert und die AEAD-Verschlüsselung (Authenticated Encryption with Associated Data) von Tink zum Ver- und Entschlüsseln von Daten verwendet.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 von Daten bereitstellen. Außerdem erfordert dieBuilderAPI, dass eineDataStoremit einerCoroutineContextanstelle einerCoroutineScopeinitialisiert wird. Dies 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 daran gebunden sein muss.Hinweis: Wir empfehlen allen Nutzern, von
DataStoreFactoryzu den neuenDataStore.BuilderAPIs zu migrieren. Da die API eineCoroutineContextanstelle einerCoroutineScopeerfordert, wird eine besser strukturierte Parallelität erzwungen. So wird sichergestellt, dass DataStore-Vorgänge nicht an kurzlebige UI-Lebenszyklen (z.B.viewModelScope) gebunden sind, wodurch vorzeitige Abbrüche und potenzieller Datenverlust verhindert werden.Warnung:Achten Sie darauf, dass die
CoroutineContext, die dem Builder bereitgestellt wird, eineJobhat und dass sie 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 bereitstellen. (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
- Dem Datenspeicher hinzugefügte Baseline-Profile. (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)
Diverse 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.
Diverse Fehlerkorrekturen
- Ein Problem wurde behoben, durch das das Umbenennen einer temporären Datenspeicherdatei fehlschlug. (I94f89, b/203087070)
- Ein Problem wurde behoben, das dazu geführt hat, dass Updates bei gleichzeitigem Lesen und Schreiben verloren gegangen sind. Zwischen einem neuen Collector auf
DataStore.dataund einem gleichzeitigenupdateData-Aufruf kann eine Race-Bedingung auftreten, 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 im Vergleich zu 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.
Direct Boot-Unterstützung:
- Die Verwendung von DataStore im Direktstartmodus wird jetzt unterstützt. Mit neuen APIs wie
createInDeviceProtectedStorage()inDataStoreFactoryunddeviceProtectedDataStore()inDataStoreDelegatekann der DataStore im Device Protected Storage erstellt werden.
Änderungen bei Speicher und APIs:
PreferencesFileSerializerhinzugefügt, dasandroidx.datastore.core.Serializerzur Verwendung mitFileStorageimplementiert.- Der Standardkonstruktor für
ReplaceFileCorruptionHandlerwurde für die allgemeine Verwendung von Code definiert.
Fehlerkorrekturen:
java.lang.UnsatisfiedLinkErrorwurde behoben, wennDataStorein einer mit R8 optimierten App verwendet wird, aber nicht die Standard-ProGuard-Datei verwendet wird.- Ein Problem wurde behoben, bei dem
GuavaDataStore-Vorgänge fälschlicherweise im aufrufenden Thread (z.B. dem Hauptthread) anstelle des angegebenen E/A-Dispatchers 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)
Diverse Fehlerkorrekturen
java.lang.UnsatisfiedLinkErrorwurde behoben, 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. dem Hauptthread) anstelle des angegebenen IO-Dispatchers 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 zum Erstellen eines
GuavaDataStoreaus einemDataStorehinzugefügt. (9af26f4) - Projekte, die mit Kotlin 2.0 veröffentlicht wurden, erfordern KGP 2.0.0 oder höher. (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äteschutzgesicherten Speicher erstellt werden. Dies ist mit den folgenden neuenDataStore-APIs möglich:createInDeviceProtectedStorage()inDataStoreFactoryunddeviceProtectedDataStore()inDataStoreDelegate. (Ib90e56)
API-Änderungen
PreferencesFileSerializerhinzugefügt, das dieandroidx.datastore.core.Serializer-Schnittstelle zur Verwendung mitFileStorageimplementiert. (I4c71f3)
Diverse Fehlerkorrekturen
- Das Problem
FileNotFoundExceptioninOkioStoragebeim Start wurde behoben, indem im Fall einer Race-Bedingung ein zweiter Versuch zum Lesen von Daten 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.
Diverse 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.
Diverse Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem die Gradle-Metadaten in Version
1.1.5beschädigt waren. Dieses Problem wurde durch einen Fehler in der DSL des neuen AGP-KMP-Plug-ins verursacht, der verhinderte, dass Metadaten für alle Zielplattformen automatisch einbezogen wurden. Aufgrund des Fehlers sind einige DataStore-Android-Methoden in den Builds von Kunden nicht mehr sichtbar. 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 minimieren, 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.
Diverse 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 es aufgrund der Tatsache, dass die Datei während des ersten Lesens von einem anderen Prozess erstellt wurde, zu einer Race-Bedingung gekommen ist. (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.
Diverse Fehlerkorrekturen
- Falscher Alarm unter Linux bei der Fehlermeldung „Resource deadlock would occur“ (Ressourcen-Deadlock würde auftreten) in einem Grenzfall behoben, in dem mehrere
DataStore-Instanzen versuchen, aus verschiedenen Prozessen zu schreiben, indem sie die Dateisperre zurückziehen.
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 für die Alpha- und Betaversionen von 1.1.0. Einige der wichtigsten Updates in Version 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.
Diverse Fehlerkorrekturen
- Die Leistungseinbußen wurden behoben, die auftraten, wenn
updateData-Aufrufe die Schreibvorgänge auf der Festplatte nicht optimierten, wenn die neuen Daten mit den alten Daten identisch waren (d64cfb5). - Es wurde eine Race-Bedingung behoben, bei der
MultiProcessDataStorewährend der Initialisierung möglicherweise Invalidierungen verpasst 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.
Diverse Fehlerkorrekturen
- Bei der Leistungsverbesserung für
DataStorewerden nur Updatebenachrichtigungen 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)- Das Problem wurde behoben, bei dem das Umbenennen von Dateien während
updateDatain Nicht-Android-JVM-Umgebungen fehlschlägt. (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 Anmerkung „@ExperimentalMultiProcessDataStore“ wurde 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)
Diverse Fehlerkorrekturen
- Das Problem, dass
MultiProcessCoordinatornicht mehrere Dateien im selben Verzeichnis überwachen konnte, wurde behoben. - Es wurde ein Fehler behoben, der dazu führte, dass doppelte Dateien nicht erkannt wurden, wenn Dateipfade nicht normalisiert wurden.
- 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ängigkeitsbeschränkungen 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 DataStore mit einem und mehreren Prozessen zusammengeführt werden. Achte auf mögliche unbeabsichtigte Verhaltensänderungen (z.B. Zeitpunkt von Update-Benachrichtigungen). Sie können die Issue Tracker-Komponente verwenden, um solche Änderungen zu melden.
Neue Funktionen
- Sie können
DataStorejetzt in KMM-Projekten verwenden. Nicht für Android bestimmte Ziele von DataStore sind weiterhin experimentell. Wir haben uns jedoch entschieden, die Versionen zusammenzuführen, um Entwicklern das Testen zu erleichtern. - Funktionen mit mehreren Prozessen werden von
androidx.datastore.multiprocessnachandroidx.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 Multi-Process-Implementierung vonInterProcessCoordinatorist nur auf Android verfügbar.
API-Änderungen
InterProcessCoordinatorzuStorageConnectionin der datastore-core-Schnittstelle hinzufügen (I555bb)- Ändern Sie die APIs in datastore-core
MultiProcessDataStoreFactory, um Storage zu verwenden. (Iac02f) - Öffentliche APIs in „datastore-multiprocess“ wurden 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
DataStoreInstanzen ü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 APIs in datastore-core
MultiProcessDataStoreFactory, um Storage zu verwenden. (Iac02f) - Öffentliche APIs in „datastore-multiprocess“ in „datastore-core“ verschieben (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 Version 1.0.0
Jetpack DataStore ist eine Datenspeicherlösung, mit der Sie Schlüssel/Wert-Paare oder typisierte Objekte mit Protocol Buffers 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
- Klarstellen, 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.
Diverse Fehlerkorrekturen
- Fehler behoben, bei dem die .java-Datei versehentlich der endgültigen JAR-Datei hinzugefü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, durch den Datenspeicher-Delegaten 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)
- Die Serializer-Funktionen „writeTo“ und „readFrom“ werden jetzt angehalten. Wenn Sie einen Serializer implementiert haben, müssen Sie Ihre Funktionen in „suspend“-Funktionen umwandeln. (I1e58e)
- Property-Delegates für RxDataStore-Nutzer hinzugefügt. (Ied768, b/173726702)
Diverse 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 Property-Delegate „globalDataStore“ ersetzt. Rufen Sie „globalDataStore“ einmal auf der obersten Ebene in Ihrer Kotlin-Datei auf. Beispiel:val Context.myDataStore by dataStore(...)Füge sie auf der obersten Ebene deiner Kotlin-Datei ein, damit es nur eine Instanz davon gibt. (I57215, b/173726702)
Die RxDataStore-Funktionen befinden sich jetzt in einer RxDataStore-Klasse anstelle von Erweiterungsfunktionen für DataStore. (Idccdb, b/177691248)
Wenn Sie EncryptedSharedPreferences (oder SharedPreferences für den Direktstart) zu DataStore migrieren möchten, können Sie dies jetzt mit dem neuen SharedPreferencesMigration-Konstruktor tun, mit dem Sie die SharedPreferences einfügen können. (I8e04e, b/177278510)
Diverse 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 bisher 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.
Diverse 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 es 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.
Diverse Fehlerkorrekturen
- Ein Paketproblem wurde behoben, das den folgenden Absturz im 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 doppelte Werte (was nützlich ist, wenn Sie mehr Genauigkeit als Gleitkommazahlen 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-Kern-APIs undandroidx.datastore:datastoredie APIs, die von Android abhängen (einschließlich desSharedPreferencesMigration- und desContext.createDataStore-Konstruktors). (I42d75, b/168512698) - Aufteilen von Zielen für den Datenspeicher für Einstellungen, um die Kotlin-Kompilierung zu beschleunigen (Ia3c19)
Serialisierer benötigen jetzt eine neue Eigenschaft für den Standardwert, der verwendet wird, wenn keine Daten auf der Festplatte 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. Sie war ursprünglich ö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.
Diverse Fehlerkorrekturen
- Es wurde ein Schutz gegen Mutationen in datastore-core hinzugefügt. Mutation unterbricht die Datenspeichernutzung für Nutzer, die den Datenspeicher mit Nicht-Proto-/Nicht-Präferenztypen 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.