Datastore

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

Neues Problem melden

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 Artefakt androidx.datastore:datastore-tink wurde hinzugefügt, das Verschlüsselungsunterstützung über die Tink-Bibliothek bietet. Es wird AeadSerializer eingefü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.tracing auf der Android-Zielplattform hinzugefügt.

  • DataStore.Builder API: DataStore.Builder<T> wurde als moderne, skalierbare Alternative zu DataStoreFactory eingeführt. Es ist ein CoroutineContext anstelle eines CoroutineScope erforderlich, um die strukturierte Nebenläufigkeit zu verbessern.

  • Baseline-Profile:datastore wurden Baseline-Profile hinzugefügt, um die Startleistung zu verbessern.

API-Änderungen

  • Die APIs DataStore.Builder, ReThrowCorruptionHandler und InterProcessCoordinator wurden auf public aktualisiert.

Fehlerkorrekturen und Verbesserungen

  • CorruptionException-Nachrichten wurden Informationen zum zugrunde liegenden Dateipfad hinzugefügt, um die Fehlerbehebung bei Parsing-Fehlern zu verbessern.

  • Potenzieller Datenverlust in GuavaDataStore wurde 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 von EdgeToEdge#enable() verwenden (Ibff3e)

Fehlerkorrekturen

  • Die Abhängigkeit androidx.lifecycle:lifecycle-runtime wurde 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 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 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-tink wurde eingeführt, das die Verschlüsselung Ihres Datenspeichers mit der Tink-Bibliothek unterstützt. In diesem Modul wird die AeadSerializer vorgestellt. Das ist eine neue Wrapper-Klasse, die Serializer<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. 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 bereitstellen. Außerdem erfordert die Builder API, dass ein DataStore mit einem CoroutineContext anstelle eines CoroutineScope initialisiert wird. Das 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 an ihn gebunden sein muss.

    Hinweis: Wir empfehlen allen Nutzern, von DataStoreFactory zu den neuen DataStore.Builder APIs zu migrieren. Da die API einen CoroutineContext anstelle eines CoroutineScope erfordert, 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 CoroutineContext einen Job hat und 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 ü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 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)

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.data und einem gleichzeitigen updateData-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

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 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-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.

Unterstützung für den Direktstart:

  • 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 gerätegeschützten Speicher erstellt werden.

Änderungen am Speicher und an der API:

  • PreferencesFileSerializer hinzugefügt, das androidx.datastore.core.Serializer für die Verwendung mit FileStorage implementiert.
  • Der Standardkonstruktor für ReplaceFileCorruptionHandler wurde für die allgemeine Codenutzung 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.
  • 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 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)

Fehlerkorrekturen

  • java.lang.UnsatisfiedLinkError wurde korrigiert, 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. 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 GuavaDataStore hinzugefügt. (e0d608a).
  • Es wurde eine Hilfsmethode hinzugefügt, um ein GuavaDataStore aus einem DataStore zu 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-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ätegeschützten Speicher erstellt werden. Dies kann mit den folgenden neuen DataStore-APIs erreicht werden: createInDeviceProtectedStorage() in DataStoreFactory und deviceProtectedDataStore() in DataStoreDelegate. (Ib90e56)

API-Änderungen

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

Fehlerkorrekturen

  • Das Problem FileNotFoundException in OkioStorage beim 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 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.

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.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Gradle-Metadaten in Version 1.1.5 fehlerhaft 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 ä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 beheben, 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.

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 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)
  • 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.

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 MultiProcess DataStore wä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 DataStore werden nur Update-Benachrichtigungen 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)
  • Ein Problem wurde behoben, durch das das Umbenennen von Dateien während updateData in JVM-Umgebungen, die nicht Android sind, fehlschlug. (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 Annotation @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)

Fehlerkorrekturen

  • Fehler behoben, durch den MultiProcessCoordinator nicht 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#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ä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 DataStore jetzt 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.multiprocess zu 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 Multiprozess-Implementierung von InterProcessCoordinator ist nur auf Android-Geräten verfügbar.

API-Änderungen

  • InterProcessCoordinator zu StorageConnection in 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)
  • 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 die APIs in datastore-core MultiProcessDataStoreFactory, um Storage zu verwenden. (Iac02f)
  • Öffentliche APIs in datastore-multiprocess werden nach datastore-core verschoben (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 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 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.

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 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, 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- 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)
  • 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.createDataStore wurde 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, 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 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-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 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-core enthält die reinen Kotlin-APIs und androidx.datastore:datastore die APIs, die von Android abhängen (einschließlich des SharedPreferencesMigration- und des Context.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 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.

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 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.