DataStore

SharedPreferences'ın bazı dezavantajlarını ortadan kaldırarak verileri eşzamansız, tutarlı ve işlemsel olarak depolama
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta Sürümü Alfa Sürümü
12 Ekim 2026 1.2.1 1.3.0-rc01 - -

Bağımlılıkları bildirme

DataStore'a bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposu sayfasını okuyun.

DataStore, serileştirme için farklı seçenekler sunar. Bunlardan birini seçin. Ayrıca her iki uygulamaya da Android içermeyen bağımlılıklar ekleyebilirsiniz.

Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan uygulamanın bağımlılıklarını ekleyin:

Preferences DataStore

Gradle dosyanızın bağımlılıklar bölümüne aşağıdaki satırları ekleyin:

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")
    }
    

İsteğe bağlı RxJava desteği eklemek için aşağıdaki bağımlılıkları ekleyin:

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

Gradle dosyanızın bağımlılıklar bölümüne aşağıdaki satırları ekleyin:

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")
    }
    

RxJava desteği için aşağıdaki isteğe bağlı bağımlılıkları ekleyin:

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")
    }
    

İçeriği serileştirmek için Protocol Buffers veya JSON serileştirme bağımlılıklarını ekleyin.

JSON serileştirme

JSON serileştirmeyi kullanmak için Gradle dosyanıza aşağıdakileri ekleyin:

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 serileştirme

Protobuf serileştirmeyi kullanmak için Gradle dosyanıza aşağıdakileri ekleyin:

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")
                }
            }
        }
    }
    

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Issue Tracker belgelerine bakın.

Sürüm 1.3

Sürüm 1.3.0-rc01

12 Ekim 2026

androidx.datastore:datastore-*:1.3.0-rc01 yayınlandı. 1.3.0-rc01 sürümü bu kayıtları içerir.

API değişiklikleri

  • EdgeToEdge#enable() (Ibff3e) yerine WindowCompat#enableEdgeToEdge(Window) kullanın

Hata Düzeltmeleri

  • androidx.lifecycle:lifecycle-runtime bağımlılığı 2.10.0 olarak güncellendi. Bu sürüm, paket halinde sunulan yaşam döngüsü çalışma zamanı lint kontrollerinin AGP 9.5.0-alpha04 veya sonraki sürümlerle çalışması için gereklidir. (I99bfd, b/556807521)

Sürüm 1.3.0-alpha11

9 Eylül 2026

androidx.datastore:datastore-*:1.3.0-alpha11 yayınlandı. 1.3.0-alpha11 sürümü bu kayıtları içerir.

Hata düzeltmeleri

  • Temel dosya yolu, DataStore tercihi ayrıştırma hataları sırasında oluşturulan CorruptionException mesajlarına dahil edilmez. (Ia9e8f)

Sürüm 1.3.0-alpha10

29 Temmuz 2026

androidx.datastore:datastore-*:1.3.0-alpha10 yayınlandı. 1.3.0-alpha10 sürümü bu kayıtları içerir.

API Değişiklikleri

  • GeneralSecurityException in AeadSerializer is now wrapped in CorruptionException for better CorruptionHandler integration. (I26e56, b/514941919)

Sürüm 1.3.0-alpha09

6 Mayıs 2026

androidx.datastore:datastore-*:1.3.0-alpha09 yayınlandı. 1.3.0-alpha09 sürümü bu commit'leri içerir.

API Değişiklikleri

  • ReThrowCorruptionHandler adlı öğeyi herkese açık yapın. (I137bb, b/427722902)
  • İzleme yaşam döngüsünü sistem izleme ile tutarlı hale getirin. (Ib391b)

Sürüm 1.3.0-alpha08

22 Nisan 2026

androidx.datastore:datastore-*:1.3.0-alpha08 yayınlandı. 1.3.0-alpha08 sürümü bu kayıtları içerir.

Yeni özellikler

  • Web platformları için DataStore'da Origin Private File System (OPFS) desteği eklendi. Bu uygulama, WebOpfsStorage özelliğini sunar ve eşzamansız dosya G/Ç, BroadcastChannel API'yi kullanan sekmeler arası bildirimler ve özel yazma erişimi için yerel Web Locks API aracılığıyla dağıtılmış kilitleme için mimari destek içerir. Id7f5807 b/316376114

API değişiklikleri

  • Web ortamlarında açık depolama alanı türü yönetimi için WebLocalStorage ve WebSessionStorage API'leri kullanıma sunuldu. I35fa259b b/316376114

Sürüm 1.3.0-alpha07

11 Mart 2026

androidx.datastore:datastore-*:1.3.0-alpha07 yayınlandı. 1.3.0-alpha07 sürümü bu commit'leri içerir.

Yeni özellikler

  • Şifreleme Desteği: Tink kitaplığını kullanarak veri deponuzun şifrelenmesini destekleyen yeni androidx.datastore:datastore-tink yapısı kullanıma sunuldu. Bu modülde, Serializer<T>'yi uygulayan ve verileri şifrelemek ve şifresini çözmek için Tink'in İlişkili Verilerle Kimliği Doğrulanmış Şifreleme (AEAD) özelliğini kullanan yeni bir sarmalayıcı sınıf olan AeadSerializer tanıtılmaktadır. AeadSerializer, JVM ve Android hedef platformlarında kullanılabilir.
  • Yeni DataStore Builder API: DataStoreFactory'ye ölçeklenebilir bir alternatif olarak DataStore.Builder<T> kullanıma sunuldu. Bu yeni API ile kullanıcılar artık setCorruptionHandler üzerinden kendi bozulma mantıklarını sağlayabilir. Ayrıca, Builder API'si, DataStore'nin CoroutineScope yerine CoroutineContext kullanılarak başlatılmasını gerektirir. Bu, yapılandırılmış eşzamanlılık için bir iyileştirmedir. Çünkü arayanların, DataStore'yi arayanın kapsamının yaşam döngüsünü uygunsuz şekilde yönetmeye veya bu yaşam döngüsüne bağlı olmaya zorlamadan yürütme davranışını (ör. belirli Dispatcher'lar) tanımlamasına olanak tanır.

    Not: Tüm kullanıcıların DataStoreFactory API'lerinden yeni DataStore.Builder API'lerine geçmelerini öneririz. API, CoroutineScope yerine CoroutineContext gerektirerek daha iyi yapılandırılmış eşzamanlılığı zorunlu kılar. Bu sayede DataStore işlemleri kısa ömürlü kullanıcı arayüzü yaşam döngülerine (ör. viewModelScope) bağlı olmaz ve erken iptal ile olası veri kaybı önlenir.

    Uyarı: Oluşturucu'ya sağlanan CoroutineContext değerinin Job içerdiğinden ve uygulama kapsamlı olduğundan emin olun. Bağlam iptal edilirse DataStore adlı aracın dahili işlemleri erken sonlandırılır.

API değişiklikleri

  • DataStore şifreleme desteği için yeni androidx.datastore:datastore-tink yapısı kullanıma sunuldu. (Ic106d, b/167697691)

    Tink'i kullanarak verileri şifrelemek için aşağıdaki adımları uygulayın:

    1. Tink API'lerini kullanarak anahtar oluşturma:

      val keysetHandle =
          AndroidKeysetManager.Builder()
              .withSharedPref(applicationContext, "keyset", "keyset_prefs")
              .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM))
              .withMasterKeyUri("android-keystore://master_key")
              .build()
              .keysetHandle
      
    2. Mevcut bir serileştiriciyi sarmalayan bir AeadSerializer oluşturun:

      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. Datastore örneğini oluştururken serileştiricinizin yerine bu aeadSerializer öğesini kullanın:

      val dataStore = dataStore(
          fileName = "settings.json",
          serializer = aeadSerializer,
          scope = scope,
      )
      
  • DataStoreFactory yerine modern ve ölçeklenebilir bir alternatif olarak DataStore.Builder<T>'ı kullanıma sunduk. (I3b110, b/267785821, b/400507108, b/368385681, b/427722902, b/370838564, b/167697691)

Sürüm 1.3.0-alpha06

25 Şubat 2026

androidx.datastore:datastore-*:1.3.0-alpha06 yayınlandı. 1.3.0-alpha06 sürümü bu commit'leri içerir.

Yeni Özellikler

  • DataStore artık Android hedef platformunda androidx.tracing özelliğini destekliyor. DataStoreFactory.createWithTracing() işlevine bir androidx.tracing.Tracer örneği sağlayarak izleme özellikli bir DataStore oluşturabilirsiniz. (I71bc2, b/427722902)

Sürüm 1.3.0-alpha05

28 Ocak 2026

androidx.datastore:datastore-*:1.3.0-alpha05 yayınlandı. 1.3.0-alpha05 sürümü bu kayıtları içerir.

Yeni Özellikler

  • Temel profiller veri deposuna eklendi. (3916245,b/469127532).
  • localStorage aracılığıyla DataStore'da WASM/JS desteği uygulayın. Bu, sekmeler arası etkinlik bildirimlerini ve senkronizasyonu etkinleştirerek mevcut sessionStorage uygulamasına göre belirgin bir avantaj sağlar. (I67246, b/441511612)

Sürüm 1.3.0-alpha04

14 Ocak 2026

androidx.datastore:datastore-*:1.3.0-alpha04 yayınlandı. 1.3.0-alpha04 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Tercihler DataStore için verileri güncellemek üzere kullanılabilecek bir yardımcı kopyalama işlevi eklendi. (I70a18, b/467120382)

Hata Düzeltmeleri

  • Web için UTF-8 dize işleme yerine Base64 kodlaması kullanılarak, depolama sırasında ikili verilerin hatalı biçimlendirilmesine neden olan sorun çözüldü. (Ie3178, b/473790107)

Sürüm 1.3.0-alpha03

17 Aralık 2025

androidx.datastore:datastore-*:1.3.0-alpha03 yayınlandı. 1.3.0-alpha03 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Geçici veri deposu dosyasının yeniden adlandırılamaması sorunu düzeltildi. (I94f89, b/203087070)
  • Eşzamanlı okuma/yazma sırasında güncellemelerin bırakılmasını önlemek için sorun düzeltildi. DataStore.data üzerinde yeni bir toplayıcı ile eşzamanlı bir updateData çağrısı arasında yarışma durumu oluşabilir ve bu durum, toplayıcının yeni değeri kaçırmasına neden olabilir. (I6a427, b/431787506)

Sürüm 1.3.0-alpha02

3 Aralık 2025

androidx.datastore:datastore-*:1.3.0-alpha02 yayınlandı. 1.3.0-alpha02 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

Sürüm 1.3.0-alpha01

19 Kasım 2025

androidx.datastore:datastore-*:1.3.0-alpha01 yayınlandı. 1.3.0-alpha01 sürümü bu kayıtları içerir.

Yeni Özellikler

  • DataStore API'si kullanılarak sessionStorage'de KMP Web desteği eklendi. Bu özellik, DataStore uygulamasının tek bir tarayıcı sekmesinde verileri geçici olarak saklamasına olanak tanır. (I60fad, b/316376114)

Sürüm 1.2

Sürüm 1.2.1

11 Mart 2026

androidx.datastore:datastore-*:1.2.1 yayınlandı. 1.2.1 sürümü bu commit'leri içerir.

Değişiklik yok

  • Bu sürümde, altyapıyla ilgili küçük hata düzeltmeleri yapılmıştır. Sürüm 1.2.0'dan itibaren DataStore API veya davranış değişiklikleri içermez.

Sürüm 1.2.0

19 Kasım 2025

androidx.datastore:datastore-*:1.2.0 yayınlandı. 1.2.0 sürümü bu commit'leri içerir.

1.1.0 sürümünden bu yana yapılan önemli değişiklikler

Java/Guava Desteği:

  • Java ve Guava ListenableFuture kullanıcılarına uygun API'leri GuavaDataStore aracılığıyla kullanıma sunmak için yeni datastore-guava modülü eklendi.
  • GuavaDataStore'da çoklu işlem desteği eklendi.
  • GuavaDataStore.from için CoroutineContext yerine Java Executor kabul eden ve androidx.core.util.Function kullanan bir aşırı yükleme eklendi.

Doğrudan Başlatma Desteği:

  • Doğrudan başlatma modu sırasında DataStore kullanımı artık destekleniyor. DataStoreFactory içinde createInDeviceProtectedStorage() ve DataStoreDelegate içinde deviceProtectedDataStore() gibi yeni API'ler, DataStore'un cihaz korumalı depolama alanında oluşturulmasına olanak tanır.

Depolama ve API değişiklikleri:

  • FileStorage ile kullanılmak üzere androidx.datastore.core.Serializer uygulayan PreferencesFileSerializer eklendi.
  • Ortak kod kullanımı için ReplaceFileCorruptionHandler öğesinin varsayılan oluşturucusunu tanımladı.

Hata düzeltmeleri:

  • R8 ile optimize edilmiş ancak standart ProGuard dosyası kullanılmayan bir uygulamada DataStore kullanılırken java.lang.UnsatisfiedLinkError sorunu düzeltildi.
  • GuavaDataStore işlemlerinin, belirtilen G/Ç dağıtıcısı yerine yanlışlıkla çağrı iş parçacığında (ör. ana iş parçacığı) çalıştırılmasına neden olan sorun düzeltildi.
  • Başlangıçta OkioStorage içinde FileNotFoundException sorununa neden olan yarışma durumu için veri okumaya ikinci bir deneme eklenerek sorun çözüldü.

Sürüm 1.2.0-rc01

5 Kasım 2025

androidx.datastore:datastore-*:1.2.0-rc01 yayınlandı. 1.2.0-rc01 sürümü bu kayıtları içerir.

Sürüm 1.2.0-beta01

22 Ekim 2025

androidx.datastore:datastore-*:1.2.0-beta01 yayınlandı. 1.2.0-beta01 sürümü bu kayıtları içerir.

API Değişiklikleri

  • CorruptionHandler herkese açık hâle getirin. (I9ac35, b/452406457)
  • GuavaDataStore uygulamasında androidx.core.util.Function hesabını kullanın. (I71eae, b/448563999)
  • GuavaDataStore.from için CoroutineContext yerine Executor alan bir aşırı yükleme ekleyin. (I989fa, b/448563183)

Hata düzeltmeleri

  • R8 ile optimize edilmiş ancak getDefaultProguardFile('android-proguard-optimize.txt') kullanmayan bir uygulamada DataStore kullanılırken oluşan java.lang.UnsatisfiedLinkError hatası düzeltildi. (I27d0d, b/434696293)
  • GuavaDataStore işlemlerinin, belirtilen G/Ç dağıtıcı yerine çağıran iş parçacığında (ör. ana iş parçacığı) yanlışlıkla çalışmasına neden olan sorun düzeltildi. (Ic91ea,b/441801112)

Sürüm 1.2.0-alpha02

7 Mayıs 2025

androidx.datastore:datastore-*:1.2.0-alpha02 yayınlandı. 1.2.0-alpha02 sürümü bu commit'leri içerir.

API Değişiklikleri

  • GuavaDataStore sürümünde çoklu işlem desteği eklendi. (e0d608a).
  • DataStore öğesinden GuavaDataStore oluşturmak için yardımcı bir yöntem eklendi. (9af26f4)
  • Kotlin 2.0 ile yayınlanan projelerin kullanılabilmesi için KGP 2.0.0 veya daha yeni bir sürüm gerekir. (Idb6b5)
  • Mevcut datastore aşırı yüklemesini, doğrudan başlatma sırasında kullanılacak bir DataStore'u ilk kullanıma hazırlamak için bir temsilci yöntemiyle değiştirin. (If71b9)

Sürüm 1.2.0-alpha01

26 Mart 2025

androidx.datastore:datastore-*:1.2.0-alpha01 yayınlandı. 1.2.0-alpha01 sürümü bu commit'leri içerir.

Yeni özellikler

  • Java ve Guava ListenableFuture kullanıcılarına uygun API'leri GuavaDataStore aracılığıyla kullanıma sunmak için datastore-guava modülü eklendi. (Iadd5e0)
  • DirectBoot modunda DataStore kullanımı artık destekleniyor. Doğrudan başlatma modunda kullanılacak bir veri deposu oluşturmak için bu veri deposunun cihaz korumalı depolama alanında oluşturulması gerekir. Bu işlem, şu yeni DataStore API'leri ile yapılabilir: DataStoreFactory içinde createInDeviceProtectedStorage() ve DataStoreDelegate içinde deviceProtectedDataStore(). (Ib90e56)

API değişiklikleri

  • FileStorage ile kullanılmak üzere androidx.datastore.core.Serializer arayüzünü uygulayan PreferencesFileSerializer eklendi. (I4c71f3)

Hata Düzeltmeleri

  • Yarışma durumu söz konusu olduğunda verileri okumak için ikinci bir deneme eklenerek OkioStorage uygulamasında başlangıçta yaşanan FileNotFoundException sorunu çözüldü. (I43b3fb, b/337870543)
  • Ortak kod kullanımı için ReplaceFileCorruptionHandler öğesinin varsayılan kurucusu tanımlandı. (I795b05, b/358138957)

Sürüm 1.1

Sürüm 1.1.7

20 Mayıs 2025

androidx.datastore:datastore-*:1.1.7 yayınlandı. 1.1.7 sürümü bu commit'leri içerir.

Hata düzeltmeleri

  • datastore-preferences-core ürününün Android yapısında eksik Proguard kuralları sorunu düzeltildi. (3f3f6e, b/413078297)

Sürüm 1.1.6

7 Mayıs 2025

androidx.datastore:datastore-*:1.1.6 yayınlandı. 1.1.6 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • 1.1.5 sürümünde Gradle meta verilerinin bozulmasına neden olan sorun çözüldü. Bu sorun, yeni AGP KMP eklentisi DSL'deki bir hatadan kaynaklanıyordu. Bu hata, tüm hedef platformların meta verilerinin otomatik olarak dahil edilmesini engelliyordu. Bu hata, bazı DataStore Android yöntemlerinin artık müşterilerin derlemelerinde görünmemesine neden oluyor. Düzeltme, androidLibrary yerine build.gradle içinde eski android DSL'nin kullanılmasını içerir. (7801abf)

Sürüm 1.1.5

23 Nisan 2025

androidx.datastore:datastore-*:1.1.5 yayınlandı. 1.1.5 sürümü bu commit'leri içerir.

Hata düzeltmeleri

  • PreferencesDataStore uygulamasındaki CorruptionException sorunlarını azaltmak için varsayılan depolama alanı OkioStorage yerine FileStorage olarak değiştirildi. Bu değişiklik, PreferencesFileSerializer ile uygulanmıştır. b/346197747

Sürüm 1.1.4

26 Mart 2025

androidx.datastore:datastore-*:1.1.4 yayınlandı. 1.1.4 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • CorruptionException değerini azaltarak güvenilirliği artırmak için varsayılan depolama alanını OkioStorage yerine FileStorage olarak değiştirin. (I71181, b/346197747)

Sürüm 1.1.3

26 Şubat 2025

androidx.datastore:datastore-*:1.1.3 yayınlandı. 1.1.3 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Uygulama başlatılırken OkioStorage sürümünde karşılaşılan FileNotFoundException sorunu çözüldü. İlk dosya okuma denemesi başarısız olursa ilk okuma sırasında dosyanın farklı bir işlem tarafından oluşturulması nedeniyle bir yarışma durumu oluşmuşsa ikinci bir deneme yapılır. (I43b3f, b/337870543)

Sürüm 1.1.2

15 Ocak 2025

androidx.datastore:datastore-*:1.1.2 yayınlandı. 1.1.2 sürümü bu commit'leri içerir.

Hata düzeltmeleri

  • Sıcak okuma gecikmesini (DataStore.data.first()) 8 kat iyileştirin. (22b8a40)
  • ReplaceFileCorruptionHandler, KMP ortak kodundan oluşturulabilir. (7632e839)

Sürüm 1.1.1

1 Mayıs 2024

androidx.datastore:datastore-*:1.1.1 yayınlandı. 1.1.1 sürümü bu commit'leri içerir.

Hata düzeltmeleri

  • Birden fazla DataStore örneğinin farklı işlemlerden yazmaya çalıştığı uç bir durumda, dosya kilidini kaldırarak "Kaynak kilitlenmesi meydana gelebilir" hatasıyla ilgili Linux yanlış alarmı azaltıldı.

Sürüm 1.1.0

17 Nisan 2024

androidx.datastore:datastore-*:1.1.0 yayınlandı. 1.1.0 sürümü bu commit'leri içerir.

1.0.0 sürümünden sonra yapılan önemli değişiklikler

Daha fazla bilgi için lütfen 1.1.0'ın alfa ve beta sürümlerinin sürüm notlarını inceleyin. 1.1.0'daki önemli güncellemelerden bazıları şunlardır:

  • DataStore artık aynı dosyaya erişen birden fazla işlemi destekliyor ve işlemler arasında gözlemlenebilirlik desteği sunuyor.
  • Yeni depolama arayüzü, veri modellerinizi nasıl depolayacağınızı veya serileştireceğinizi özelleştirmenize olanak tanır.
  • Artık Kotlin Multiplatform projelerinde DataStore'u kullanabilirsiniz.

Sürüm 1.1.0-rc01

3 Nisan 2024

androidx.datastore:datastore-*:1.1.0-rc01 yayınlandı. 1.1.0-rc01 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Yeni veriler eski verilerle aynıysa updateData çağrılarının disk yazma işlemlerini optimize etmediği performans düşüşü düzeltildi (d64cfb5).
  • Başlatma sırasında MultiProcess DataStore'nin geçersiz kılma işlemlerini kaçırmasına neden olabilecek bir yarışma durumu düzeltildi. ((b/326141553),(094c2dd))

Sürüm 1.1.0-beta02

6 Mart 2024

androidx.datastore:datastore-*:1.1.0-beta02 yayınlandı. 1.1.0-beta02 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • DataStore ile ilgili performans iyileştirmesi, yalnızca gözlemlendiğinde güncelleme bildirimlerini toplar. (b/267792241)
    • Bu değişikliğin, Coroutines test kitaplığını kullanıyorsanız testlerinizde UncompletedCoroutinesError tetikleyebileceğini unutmayın. Bu sorunu önlemek için testlerinizde DataStore başlatılırken TestScope.backgroundScope değerini ilettiğinizden emin olun.
  • ​Aynı örnekte iç içe yerleştirilmiş updateData çağrılarının kilitlenmesine neden olan sorun düzeltildi. (b/241760537)
  • Taşıma sırasında SharedPreferences silinemezse DataStore artık IOExceptions hatası vermeyecek. (b/195553816)
  • Android olmayan JVM ortamlarında updateData sırasında dosya yeniden adlandırmanın başarısız olmasına neden olan sorun düzeltildi. (b/203087070)
  • DataStore başlatıldıktan sonra CorruptionException öğesinin işlenmemesine neden olan sorun düzeltildi. (b/289582516)

Sürüm 1.1.0-beta01

10 Ocak 2024

androidx.datastore:datastore-*:1.1.0-beta01, 1.1.0-alpha07 tarihinden bu yana herhangi bir değişiklik yapılmadan yayınlandı. 1.1.0-beta01 sürümü bu kayıtları içerir.

Sürüm 1.1.0-alpha07

29 Kasım 2023

androidx.datastore:datastore-*:1.1.0-alpha07 yayınlandı. 1.1.0-alpha07 sürümü şu commit'leri içerir.

API Değişiklikleri

  • MultiProcessDataStoreFactory yöntemleri artık deneysel değildir.@ExperimentalMultiProcessDataStore ek açıklaması tamamen kaldırıldı. (Ieee54, I8e607)

Hata Düzeltmeleri

  • @ExperimentalMultiProcessDataStore ek açıklamalarının kaldırılması 1.1.0-alpha07 sürümünde kullanıma sunuldu. (I8e607)

Sürüm 1.1.0-alpha06

1 Kasım 2023

androidx.datastore:datastore-*:1.1.0-alpha06 yayınlandı. 1.1.0-alpha06 sürümü şu commit'leri içerir.

API Değişiklikleri

  • createSingleProcessCoordinator fabrika yöntemi artık createMultiProcessCoordinator ile tutarlı olması için bir dosya yolu (String, java.io.File ve okio.Path) alır. (I211c8, b/305755935)

Sürüm 1.1.0-alpha05

6 Eylül 2023

androidx.datastore:datastore-*:1.1.0-alpha05 yayınlandı. 1.1.0-alpha05 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Datastore FileStorage artık herkese açık olduğundan müşteriler özel parametreler sağlayabilir. (Icb985)
  • OkioStorage oluşturucu, InterProcessCoordinator kabul edecek şekilde değiştirildi. Böylece Android'de MultiProcessCoordinator ile kullanılabilir. (Iecea3)

Hata Düzeltmeleri

  • MultiProcessCoordinator aracının aynı dizindeki birden fazla dosyayı izleyememesi sorunu düzeltildi.
  • Dosya yolları normalleştirilmemişse yinelenen dosyaların algılanamaması sorunu düzeltildi.
  • RxDataStore#isDisposed tarafından döndürülen yanlış değerleri düzeltin.
  • datstore-preferences-core yapıtı için eksik ProGuard yapılandırmasını düzeltin.

Sürüm 1.1.0-alpha04

5 Nisan 2023

androidx.datastore:datastore-*:1.1.0-alpha04 yayınlandı. 1.1.0-alpha04 sürümü bu kayıtları içerir.

Hata düzeltmeleri

  • DataStore'nın veri akışının güncellemeden sonra eski bir değer yayınlayabileceği yarışma durumunu önlemek için dahili uygulamayı iyileştirin.

Sürüm 1.1.0-alpha03

24 Mart 2023

androidx.datastore:datastore-*:1.1.0-alpha03 yayınlandı.

Hata Düzeltmeleri

  • Kotlin Native Targets'taki bir derleme sorununu geçici olarak çözmek için Maven yapılarından bağımlılık kısıtlamaları kaldırıldı (b/274786186, KT-57531).

Sürüm 1.1.0-alpha02

22 Mart 2023

androidx.datastore:datastore-*:1.1.0-alpha02 yayınlandı. 1.1.0-alpha02 sürümü şu commit'leri içerir.

Not

Bu sürümde, tek işlemli ve çok işlemli DataStore uygulamalarını birleştiren önemli bir dahili yeniden düzenleme yapılmıştır. Lütfen olası istenmeyen davranış değişikliklerine (ör. güncelleme bildirimlerinin zamanlaması) dikkat edin. Bu tür değişiklikleri bildirmek için Issue Tracker bileşenini kullanabilirsiniz.

Yeni Özellikler

  • Artık KMM projelerinde DataStore özelliğini kullanabilirsiniz. DataStore'un Android dışı hedeflerinin hâlâ deneysel olduğunu ancak geliştiricilerin bunları denemesini kolaylaştırmak için sürümleri birleştirmeye karar verdiğimizi unutmayın.
  • Çoklu işlem özellikleri androidx.datastore.multiprocess yerine androidx.datastore.core konumuna taşındı.
  • Dosya işlemleri için Storage nesneleriyle DataStore örnekleri oluşturmak üzere androidx.datastore.core.MultiProcessDataStoreFactory'ya yeni bir fabrika yöntemi ekleyin.
  • Birden fazla DataStore örneğinin işlemler arasında iletişim kurmasına yardımcı olan yeni bir arayüz InterProcessCoordinator ekleyin. InterProcessCoordinator'nın çoklu işlem uygulamasının yalnızca Android'de kullanılabildiğini unutmayın.

API Değişiklikleri

  • datastore-core arayüzünde (I555bb) StorageConnection öğesine InterProcessCoordinator ekleyin
  • Veri deposu çekirdeğindeki MultiProcessDataStoreFactory API'leri Storage'ı kullanacak şekilde değiştirin. (Iac02f)
  • datastore-multiprocess'teki genel API'ler datastore-core'a taşındı (I76d7c).
  • datastore-preferences-core'dan PreferencesSerializer kullanıma sunuldu (I4b788)
  • @JvmDefaultWithCompatibility notu ekleniyor (I8f206)

Sürüm 1.1.0-alpha01

9 Kasım 2022

androidx.datastore:datastore-*:1.1.0-alpha01 yayınlandı. 1.1.0-alpha01 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Veri tutarlılığının süreçler genelinde DataStore örnekleri arasında garanti edildiği çok süreçli kullanım alanlarını destekleyin. Bu tür DataStore örnekleri oluşturmak için MultiProcessDataStoreFactory#create ekleyin.
  • Datastore için temel depolama mekanizmasının değiştirilmesine olanak tanıyan yeni depolama alanı arayüzü. java.io ve okio için uygulamalar sağlanır. DataStore fabrikalarında bu Storage nesnesini kabul eden yeni yöntemler vardır.

API Değişiklikleri

  • datastore-core MultiProcessDataStoreFactory içindeki API'leri Storage'ı kullanacak şekilde değiştirin. (Iac02f)
  • datastore-multiprocess'teki genel API'leri datastore-core'a taşıma (I76d7c)
  • datastore-preferences-core'dan PreferencesSerializer kullanıma sunuldu (I4b788)

Sürüm 1.0.0

Sürüm 1.0.0

4 Ağustos 2021

androidx.datastore:datastore-*:1.0.0 yayınlandı. 1.0.0 sürümü şu commit'leri içerir.

1.0.0 sürümünün temel özellikleri

Jetpack DataStore, protokol arabellekleriyle anahtar/değer çiftlerini veya türü belirlenmiş nesneleri depolamanıza olanak tanıyan bir veri depolama çözümüdür. DataStore, verileri eşzamansız, tutarlı ve işlemsel olarak depolamak için Kotlin eş yordamlarını ve Flow'u kullanır.

Sürüm 1.0.0-rc02

21 Temmuz 2021

androidx.datastore:datastore-*:1.0.0-rc02 yayınlandı. 1.0.0-rc02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Anahtar yoksa SharedPreferencesMigration'nın çalışmadığını netleştirin. (Icfa32, b/192824325)
  • MIGRATE_ALL_KEYS ile oluşturulan SharedPreferencesMigration öğesinin, istenen anahtar henüz mevcut değilse istisna oluşturmasına neden olan hata düzeltildi. (Ie318a, b/192824325)

Sürüm 1.0.0-rc01

30 Haziran 2021

androidx.datastore:datastore-*:1.0.0-rc01 yayınlandı. 1.0.0-rc01 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • .java dosyasının yanlışlıkla nihai jar dosyasına eklenmesine neden olan hata düzeltildi (I65d96, b/188985637).

Sürüm 1.0.0-beta02

16 Haziran 2021

androidx.datastore:datastore-*:1.0.0-beta02 yayınlandı. 1.0.0-beta02 sürümü bu kayıtları içerir.

Hata düzeltmeleri

  • ClassVerificationFailure ile ilgili sorunları düzeltin (b/187450483)

Sürüm 1.0.0-beta01

21 Nisan 2021

androidx.datastore:datastore-*:1.0.0-beta01 yayınlandı. 1.0.0-beta01 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Yalnızca Kotlin yöntemleri için JVM aşırı yüklemeleri kaldırıldı (I2adc7).

Hata düzeltmeleri

  • Veri deposu temsilcilerinin bağlam sızıntısına neden olabildiği bir hata düzeltildi (Ie96fc, b/184415662).

Sürüm 1.0.0-alpha08

10 Mart 2021

androidx.datastore:datastore-*:1.0.0-alpha08 yayınlandı. 1.0.0-alpha08 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Artık dataStore ve preferencesDataStore mülk temsilcinize bağlama bağlı bir taşıma işlemi ekleyebilirsiniz. (I4ef69, b/173726702)
  • Artık datastore temsilcisini veya context.createDataStore'u kullanmıyorsanız dosyanın adını almak için yardımcı işlevler ekler (I60f9a).
  • Serializer writeTo ve readFrom artık askıya alınıyor. Bir Serializer uyguladıysanız işlevlerinizi askıya alma işlevleri olacak şekilde güncellemeniz gerekir. (I1e58e)
  • RxDataStore kullanıcıları için özellik temsilcileri eklendi. (Ied768, b/173726702)

Hata Düzeltmeleri

  • Deneysel API'lerin herkese açık kullanımına kısıtlamalar getirme (I6aa29, b/174531520)

Sürüm 1.0.0-alpha07

24 Şubat 2021

androidx.datastore:datastore-*:1.0.0-alpha07 yayınlandı. 1.0.0-alpha07 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Context.createDataStore uzantı işlevi kaldırıldı ve yerine globalDataStore özelliği temsilcisi eklendi. Kotlin dosyanızın en üst düzeyinde globalDataStore'u bir kez çağırın. Örneğin:

    val Context.myDataStore by dataStore(...)
    

    Yalnızca bir örneği olması için bunu Kotlin dosyanızın en üst düzeyine yerleştirin. (I57215, b/173726702)

  • RxDataStore işlevleri artık DataStore'daki uzantı işlevleri yerine RxDataStore sınıfında yer alıyor. (Idccdb, b/177691248)

  • EncryptedSharedPreferences'i (veya doğrudan başlatma SharedPreferences'i) DataStore'a taşımak istiyorsanız artık SharedPreferences'i eklemenize olanak tanıyan yeni SharedPreferencesMigration oluşturucu ile bunu yapabilirsiniz. (I8e04e, b/177278510)

Hata düzeltmeleri

  • DataStore, aynı dosya için birden fazla etkin DataStore varsa artık istisna oluşturacak. DataStore'unuzu Singleton olarak yönetmiyorsanız veya bir dosya için DataStore'un iki örneğinin aynı anda etkin olmamasını sağlamıyorsanız artık DataStore'a okuma veya yazma işlemi yaparken istisnalar görebilirsiniz. Bunlar, DataStore'unuzu Singleton olarak yöneterek düzeltilebilir. (Ib43f4, b/177691248)
  • Arayan kapsamı iptal edildiğinde iptal davranışını düzeltir. (I2c7b3)

Sürüm 1.0.0-alpha06

13 Ocak 2021

androidx.datastore:datastore-*:1.0.0-alpha06 yayınlandı. 1.0.0-alpha06 sürümü şu commit'leri içerir.

Yeni özellikler

  • DataStore için RxJava sarmalayıcıları eklendi. datastore-rxjava2/3 yapıtları, temel DataStore API'lerinin (RxDataStore, RxDataStoreBuilder ve RxDataMigration) sarmalayıcılarını içerir. datastore-preferences-rxjava2/3 yapıtları, Preferences DataStore oluşturmak için bir oluşturucu içerir.

API değişiklikleri

  • CorruptionHandler arayüzünü gizleyin. DataStore fabrikası yalnızca ReplaceFileCorruptionHandler'ı kabul ettiği için bunun herkese açık olması gerekmiyordu. (I0b3b3, b/176032264)
  • preferencesKey<T>(name: String): Key<T> yöntemi kaldırıldı ve desteklenen her türe özgü yöntemlerle değiştirildi. Örneğin, preferencesKey<Int>("int") artık intPreferencesKey("int") (Ibcfac, b/170311106)

Hata düzeltmeleri

  • DataStoreFactory ile ilgili dokümanlarda, veri deposu dosyasının "datastore/" alt dizininde oluşturulduğu bilgisinin eksik olması düzeltildi. (Ica222)

Sürüm 1.0.0-alpha05

2 Aralık 2020

androidx.datastore:datastore-*:1.0.0-alpha05 yayınlandı. 1.0.0-alpha05 sürümü bu kayıtları içerir.

Hata düzeltmeleri

  • Veri depolarından eşzamanlı yazma işlemleriyle ilgili daha iyi dokümanlar ve istisnalar ekleyin. (Ia98a2, b/173522155, b/173726702)
  • Artık Serializer.writeTo()'ya iletilen OutputStream'in kapatılmasına izin veriyoruz (ancak bu zorunlu değildir). (I5c9bf, b/173037611)

Sürüm 1.0.0-alpha04

17 Kasım 2020

androidx.datastore:datastore-*:1.0.0-alpha04 yayınlandı. 1.0.0-alpha04 sürümü bu kayıtları içerir.

Hata düzeltmeleri

  • Tercih veri deposunda aşağıdaki kilitlenmeye neden olan bir paketleme sorunu düzeltildi 1.0.0-alpha03: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

Sürüm 1.0.0-alpha03

11 Kasım 2020

androidx.datastore:datastore-*:1.0.0-alpha03 yayınlandı. 1.0.0-alpha03 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Tercihler artık çift değerleri destekliyor (kayan değerlerden daha fazla hassasiyete ihtiyacınız varsa kullanışlıdır) (I5be8f, b/169471808)

API Değişiklikleri

  • Daha hızlı derleme için DataStore'a yönelik saf Kotlin bağımlılığı oluşturuldu. androidx.datastore:datastore-core yalnızca temel Kotlin API'lerini, androidx.datastore:datastore ise Android'e bağlı API'leri (SharedPreferencesMigration ve Context.createDataStore oluşturucu dahil) içerir.(I42d75, b/168512698)
  • Daha hızlı Kotlin derlemesi için tercihler veri deposu hedeflerini bölme (Ia3c19)
  • Serileştiriciler artık diskte veri yoksa kullanılacak varsayılan değer için yeni bir özellik gerektiriyor. Bu sayede özel serileştiricilerin uygulanması kolaylaşır. Böylece kullanıcıların boş giriş akışları için özel durum oluşturması gerekmez (boş giriş akışları JSON ile ayrıştırılmaz).

    • Ayrıca, writeTo() yöntemine sağlanan çıkış akışının kapalı olmadığını onaylayan bir kontrol de eklendi. Bu akış kapalıysa istisnalar (I16e29) oluşturulur.
  • SharedPreferencesView için oluşturucuyu dahili yapma. Başlangıçta test yapılmasına olanak tanımak için herkese açık olarak ayarlanmıştı. Testler bunun yerine bir SharedPreferencesMigration oluşturmalı ve buna göre test edilmelidir. (I93891)

Hata düzeltmeleri

  • DataStoreFactory ve PreferenceDataStoreFactory için produceFile parametresi artık listedeki son parametre olduğundan Kotlin sondaki lambda söz dizimini kullanmanıza olanak tanır. (Ibe7f1, b/169425442)
  • Kotlin için yeni açık API koşullarına (I5ae1e) uyma

Bilinen Sorunlar

  • Preference Datastore, java.lang.NoClassDefFoundError ile kilitleniyor. (b/173036843)

Sürüm 1.0.0-alpha02

14 Ekim 2020

androidx.datastore:datastore-core:1.0.0-alpha02 ve androidx.datastore:datastore-preferences:1.0.0-alpha02 yayınlandı. 1.0.0-alpha02 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • datastore-core'da mutasyona karşı bir koruma eklendi. Değişiklik, veri deposunu proto/tercih dışı türlerle kullanan kişiler için veri deposu kullanımını bozar (I6aa84).
  • Mevcut durumun hata ayıklamasını kolaylaştırmak için Preferences.kt'ye bir toString yöntemi eklendi (I96006).
  • DataStore.Preferences (I1134d) özelliğinin kötüye kullanımına karşı koruma sağlamak için bir istisna eklendi.
  • Uygulamanın başlatma sırasında kilitlenmesine neden olan bir hata düzeltildi (I69237, b/168580258)

Sürüm 1.0.0-alpha01

2 Eylül 2020

androidx.datastore:datastore-core:1.0.0-alpha01 ve androidx.datastore:datastore-preferences:1.0.0-alpha01 yayınlandı. 1.0.0-alpha01 sürümü şu commit'leri içerir.

Yeni özellikler

Jetpack DataStore, SharedPreferences'ın yerini alması amaçlanan yeni ve geliştirilmiş bir veri depolama çözümüdür. Kotlin eş yordamları ve Flow üzerine inşa edilen DataStore, iki farklı uygulama sunar:

  • Proto DataStore, türü belirlenmiş nesneleri (protokol arabellekleri tarafından desteklenir) depolamanıza olanak tanır.
  • Anahtar-değer çiftlerini depolayan Preferences DataStore

Veriler, SharedPreferences'ın çoğu dezavantajını ortadan kaldırarak eşzamansız, tutarlı ve işlemsel olarak depolanır.