Datastore

Daten asynchron, konsistent und transaktional speichern und so einige der Nachteile von SharedPreferences überwinden
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.

Neues Problem melden

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 von EdgeToEdge#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 von DataStore-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

  • ReThrowCorruptionHandler verö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 WebOpfsStorage ein und bietet architektonische Unterstützung für asynchrone Datei-E/A, tabübergreifende Benachrichtigungen über die BroadcastChannel API und verteiltes Sperren über die native Web Locks API für exklusiven Schreibzugriff. Id7f5807 b/316376114

API-Änderungen

  • Die APIs WebLocalStorage und WebSessionStorage wurden 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-tink wurde eingeführt, das die Verschlüsselung Ihres Datenspeichers mit der Tink-Bibliothek unterstützt. In diesem Modul wird die AeadSerializer vorgestellt, eine neue Wrapper-Klasse, die Serializer<T> implementiert und die AEAD-Verschlüsselung (Authenticated Encryption with Associated Data) von Tink zum Ver- und Entschlüsseln von Daten verwendet. AeadSerializer ist auf JVM- und Android-Zielplattformen verfügbar.
  • Neue DataStore Builder API: DataStore.Builder<T> wurde als skalierbare Alternative zu DataStoreFactory eingeführt. Mit dieser neuen API können Nutzer jetzt über setCorruptionHandler ihre eigene Logik für die Beschädigung von Daten bereitstellen. Außerdem erfordert die Builder API, dass eine DataStore mit einer CoroutineContext anstelle einer CoroutineScope initialisiert wird. Dies ist eine Verbesserung für die strukturierte Nebenläufigkeit, da Aufrufer das Ausführungsverhalten (z. B. bestimmte Dispatcher) definieren können, ohne dass DataStore den Lebenszyklus des Bereichs des Aufrufers unangemessen verwalten oder daran gebunden sein muss.

    Hinweis: Wir empfehlen allen Nutzern, von DataStoreFactory zu den neuen DataStore.Builder APIs zu migrieren. Da die API eine CoroutineContext anstelle einer CoroutineScope erfordert, 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, eine Job hat und dass sie auf die Anwendung beschränkt ist. Wenn der Kontext abgebrochen wird, werden die internen Vorgänge von DataStore vorzeitig beendet.

API-Änderungen

  • Das neue Artefakt androidx.datastore:datastore-tink für die Unterstützung der DataStore-Verschlüsselung wurde eingeführt. (Ic106d, b/167697691)

    So verschlüsseln Sie Daten mit Tink:

    1. 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()
              .keysetHandle
      
    2. Erstellen 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(),
      )
      
    3. Verwenden Sie diesen aeadSerializer anstelle 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 zu DataStoreFactory eingefü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

  • DataStore unterstützt jetzt androidx.tracing auf der Android-Zielplattform. Sie können einen DataStore mit Tracing erstellen, indem Sie der Funktion DataStoreFactory.createWithTracing() eine androidx.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 localStorage implementieren. Dies bietet einen deutlichen Vorteil gegenüber der bestehenden sessionStorage-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 DataStore aktualisiert 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.data und einem gleichzeitigen updateData-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

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 DataStore mithilfe der sessionStorage API hinzugefügt. Mit dieser Funktion kann DataStore Daten 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-guava wurde hinzugefügt, um APIs, die für Java- und Guava-ListenableFuture-Nutzer geeignet sind, über GuavaDataStore bereitzustellen.
  • Unterstützung für mehrere Prozesse in GuavaDataStore hinzugefügt.
  • Es wurde eine Überladung für GuavaDataStore.from hinzugefügt, die ein Java-Executor (anstelle eines CoroutineContext) akzeptiert und androidx.core.util.Function verwendet.

Direct Boot-Unterstützung:

  • Die Verwendung von DataStore im Direktstartmodus wird jetzt unterstützt. Mit neuen APIs wie createInDeviceProtectedStorage() in DataStoreFactory und deviceProtectedDataStore() in DataStoreDelegate kann der DataStore im Device Protected Storage erstellt werden.

Änderungen bei Speicher und APIs:

  • PreferencesFileSerializer hinzugefügt, das androidx.datastore.core.Serializer zur Verwendung mit FileStorage implementiert.
  • Der Standardkonstruktor für ReplaceFileCorruptionHandler wurde für die allgemeine Verwendung von Code definiert.

Fehlerkorrekturen:

  • java.lang.UnsatisfiedLinkError wurde behoben, wenn DataStore in 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 in OkioStorage beim 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

  • CorruptionHandler veröffentlichen. (I9ac35, b/452406457)
  • androidx.core.util.Function in GuavaDataStore verwenden. (I71eae, b/448563999)
  • Fügen Sie eine Überladung für GuavaDataStore.from hinzu, die einen Executor anstelle eines CoroutineContext akzeptiert. (I989fa, b/448563183)

Diverse Fehlerkorrekturen

  • java.lang.UnsatisfiedLinkError wurde behoben, wenn DataStore in einer App verwendet wird, die mit R8 optimiert ist, aber nicht getDefaultProguardFile('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 GuavaDataStore hinzugefügt. (e0d608a).
  • Es wurde eine Hilfsmethode zum Erstellen eines GuavaDataStore aus einem DataStore hinzugefü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-guava wurde hinzugefügt, um APIs, die für Java- und Guava-ListenableFuture-Nutzer geeignet sind, über GuavaDataStore bereitzustellen. (Iadd5e0)
  • Die Verwendung von DataStore im DirectBoot-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 neuen DataStore-APIs möglich: createInDeviceProtectedStorage() in DataStoreFactory und deviceProtectedDataStore() in DataStoreDelegate. (Ib90e56)

API-Änderungen

  • PreferencesFileSerializer hinzugefügt, das die androidx.datastore.core.Serializer-Schnittstelle zur Verwendung mit FileStorage implementiert. (I4c71f3)

Diverse Fehlerkorrekturen

  • Das Problem FileNotFoundException in OkioStorage beim 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 ReplaceFileCorruptionHandler wurde 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-core wurde 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.5 beschä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 ältere android-DSL in build.gradle anstelle von androidLibrary zu 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 in PreferencesDataStore zu minimieren, wurde der Standardspeicher von OkioStorage in FileStorage geändert. Diese Änderung wurde durch die Einführung eines PreferencesFileSerializer umgesetzt. 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 OkioStorage durch FileStorage, um die Zuverlässigkeit zu verbessern, indem Sie CorruptionException reduzieren. (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 in OkioStorage, 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)
  • ReplaceFileCorruptionHandler kann 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 MultiProcess DataStore wä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 DataStore werden nur Updatebenachrichtigungen erfasst, wenn sie beobachtet werden. (b/267792241)
    • Beachten Sie, dass diese Änderung in Ihren Tests UncompletedCoroutinesError auslösen kann, wenn Sie die Coroutines-Testbibliothek verwenden. Achten Sie darauf, dass Sie beim Initialisieren von DataStore in Ihren Tests die TestScope.backgroundScope übergeben, um dieses Problem zu vermeiden.
  • ​Das Problem, dass verschachtelte updateData-Aufrufe auf derselben Instanz zu einem Deadlock führen, wurde behoben. (b/241760537)
  • DataStore löst nicht mehr IOExceptions aus, wenn SharedPreferences während der Migration nicht gelöscht werden kann. (b/195553816)
  • Das Problem wurde behoben, bei dem das Umbenennen von Dateien während updateData in Nicht-Android-JVM-Umgebungen fehlschlägt. (b/203087070)
  • Ein Problem wurde behoben, bei dem CorruptionException nach der Initialisierung von DataStore nicht 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 createSingleProcessCoordinator empfängt jetzt einen Dateipfad (String, java.io.File und okio.Path), um mit createMultiProcessCoordinator konsistent 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 FileStorage ist jetzt öffentlich verfügbar, sodass Clients benutzerdefinierte Parameter bereitstellen können. (Icb985)
  • Der OkioStorage-Konstruktor wurde so geändert, dass er ein InterProcessCoordinator akzeptiert, damit er unter Android mit MultiProcessCoordinator verwendet werden kann. (Iecea3)

Diverse Fehlerkorrekturen

  • Das Problem, dass MultiProcessCoordinator nicht 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#isDisposed zurückgegeben wurden, wurden korrigiert.
  • Fehlende ProGuard-Konfiguration für das Artefakt datstore-preferences-core korrigieren.

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 DataStore nach 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 DataStore jetzt 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.multiprocess nach androidx.datastore.core verschoben.
  • Fügen Sie in androidx.datastore.core.MultiProcessDataStoreFactory eine neue Factory-Methode hinzu, um DataStore-Instanzen mit Storage-Objekten für Dateioperationen zu erstellen.
  • Fügen Sie eine neue Schnittstelle InterProcessCoordinator hinzu, die mehreren DataStore-Instanzen die prozessübergreifende Kommunikation ermöglicht. Die Multi-Process-Implementierung von InterProcessCoordinator ist nur auf Android verfügbar.

API-Änderungen

  • InterProcessCoordinator zu StorageConnection in 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).
  • PreferencesSerializer aus datastore-preferences-core verfügbar gemacht (I4b788)
  • Annotation @JvmDefaultWithCompatibility wurde 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 Sie MultiProcessDataStoreFactory#create hinzu, um solche DataStore-Instanzen zu erstellen.
  • Neue Storage-Schnittstelle, mit der der zugrunde liegende Speichermechanismus für Datastore ausgetauscht 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)
  • PreferencesSerializer aus 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 SharedPreferencesMigration nicht ausgeführt wird, wenn keine Schlüssel vorhanden sind. (Icfa32, b/192824325)
  • Es wurde ein Fehler behoben, bei dem SharedPreferencesMigration, das mit MIGRATE_ALL_KEYS erstellt 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 ClassVerificationFailure korrigiert (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- und preferencesDataStore-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.createDataStore wurde 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, RxDataStoreBuilder und RxDataMigration). Die datastore-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 ist preferencesKey<Int>("int") jetzt intPreferencesKey("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-alpha03 verursacht hat: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

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-core enthält die reinen Kotlin-Kern-APIs und androidx.datastore:datastore die APIs, die von Android abhängen (einschließlich des SharedPreferencesMigration- und des Context.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 produceFile für DataStoreFactory und PreferenceDataStoreFactory ist 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.NoClassDefFoundError ab. (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 toString hinzugefügt, um das Debugging des aktuellen Status zu vereinfachen (I96006).
  • Ausnahme zum Schutz vor Missbrauch von DataStore.Preferences hinzugefü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.