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ü
21 Ekim 2026 1.3.0 - - -

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

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

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

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

İç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 sorun için oy verebilirsiniz.

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

21 Ekim 2026

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

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

Yeni Özellikler

  • Web depolama desteği: KMP web depolama seçenekleri kullanıma sunuldu. Bu sayede web hedeflerinde esnek veri kalıcılığı sağlanır:

    • sessionStorage (WebSessionStorage): Tek bir tarayıcı sekmesinde geçici veri kalıcılığına izin verir.
    • localStorage (WebLocalStorage): Sekmeler arası etkinlik bildirimleri ve senkronizasyon ile kalıcı depolama alanını etkinleştirir.
    • Origin Private File System (WebOpfsStorage): OPFS aracılığıyla dosya sistemi desteği sağlar. Eşzamansız dosya G/Ç ve sekmeler arası bildirimler içerir.
  • Şifreleme Desteği (datastore-tink): Tink kitaplığını kullanarak şifreleme desteği sağlayan yeni androidx.datastore:datastore-tink yapısı eklendi. İlişkili Verilerle Kimliği Doğrulanmış Şifreleme (AEAD) kullanarak verileri şifrelemek ve şifrelerini çözmek için AeadSerializer'i kullanıma sunar.

  • İzleme desteği: Android hedef platformunda androidx.tracing için destek eklendi.

  • DataStore.Builder API: DataStoreFactory için modern ve ölçeklenebilir bir alternatif olarak DataStore.Builder<T> kullanıma sunuldu. Daha iyi yapılandırılmış eşzamanlılık için CoroutineScope yerine CoroutineContext gerekir.

  • Temel Profiller: Başlatma performansını artırmak için datastore uygulamasına temel profiller eklendi.

API Değişiklikleri

  • DataStore.Builder, ReThrowCorruptionHandler ve InterProcessCoordinator API'leri public sürümüne güncellendi.

Hata Düzeltmeleri ve İyileştirmeler

  • Ayrıştırma hataları sırasında hata ayıklama özelliğini iyileştirmek için CorruptionException mesajlarına temel dosya yolu bilgileri eklendi.

  • Güncellemeler için katı bir ilk giren ilk çıkar (FIFO) sıralaması uygulayarak GuavaDataStore uygulamasındaki olası veri kaybı düzeltildi.

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. Paketlenmiş yaşam döngüsü çalışma zamanı lint kontrollerinin AGP 9.5.0-alpha04 veya sonraki sürümlerle çalışması için bu sürüm 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 tercih 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 kayıtları 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'yı kullanıma 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

1.3.0-alpha07 sürümü

11 Mart 2026

androidx.datastore:datastore-*:1.3.0-alpha07 yayınlandı. 1.3.0-alpha07 sürümü bu kayıtları 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 için ölçeklenebilir bir alternatif olarak DataStore.Builder<T> kullanıma sunuldu. Bu yeni API sayesinde kullanıcılar artık setCorruptionHandler aracılığıyla 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 bir şekilde yönetmeye veya bu yaşam döngüsüne bağlı olmaya zorlamadan yürütme davranışını (belirli Dispatcher'lar gibi) tanımlamasına olanak tanır.

    Not: Tüm kullanıcıların DataStoreFactory API'lerinden yeni DataStore.Builder API'lerine geçiş yapmasını ö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 süreli kullanıcı arayüzü yaşam döngülerine (ör.viewModelScope) bağlı olmaz. Böylece erken iptal ve olası veri kaybı önlenir.

    Uyarı: Oluşturucu'ya sağlanan CoroutineContext öğesinin bir Job içerdiğinden ve uygulama kapsamlı olduğundan emin olun. Bağlam iptal edilirse DataStore adlı aracın dahili işlemleri zamanından önce 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. Veri deposu örneğini oluştururken serileştiriciniz yerine bu aeadSerializer öğesini kullanın:

      val dataStore = dataStore(
          fileName = "settings.json",
          serializer = aeadSerializer,
          scope = scope,
      )
      
  • DataStoreFactory için modern ve ölçeklenebilir bir alternatif olarak DataStore.Builder<T> kullanıma sunuldu. (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ğini 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 verilerini güncellemek için 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 bir 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 silinmesini ö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 commit'leri 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 commit'leri içerir.

Yeni özellikler

  • sessionStorage API'sini kullanarak DataStore için KMP Web desteği eklendi. Bu özellik, DataStore uygulamasının verileri tek bir tarayıcı sekmesinde 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. 1.2.0 sürümünden 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:

  • GuavaDataStore aracılığıyla Java ve Guava ListenableFuture kullanıcılarına uygun API'leri kullanıma sunmak için yeni datastore-guava modülü eklendi.
  • GuavaDataStore içinde ç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 desteklenmektedir. 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 Alanı ve API Değişiklikleri:

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

Hata düzeltmeleri:

  • R8 ile optimize edilmiş ancak standart ProGuard dosyasını kullanmayan bir uygulamada DataStore kullanılırken oluşan java.lang.UnsatisfiedLinkError sorunu düzeltildi.
  • GuavaDataStore işlemlerinin, belirtilen G/Ç dağıtıcısı yerine çağıran iş parçacığında (ör. ana iş parçacığı) yanlış şekilde çalıştırılmasına neden olan sorun düzeltildi.
  • Yarışma durumu olması halinde verileri okumak için ikinci bir deneme eklenerek başlangıçta OkioStorage içindeki FileNotFoundException sorunu çö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 adlı öğeyi herkese açık yapın. (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ı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. (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 kayıtları 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 kayıtları 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

  • Başlangıçta OkioStorage uygulamasındaki FileNotFoundException sorunu, yarışma durumu olması halinde verileri okumak için ikinci bir deneme eklenerek çö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 bozuk olmasıyla ilgili 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 istemcilerin 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 Storage 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 commit'leri içerir.

Hata Düzeltmeleri

  • Yeni veriler eski verilerle aynıysa updateData çağrılarının disk yazma işlemlerinde optimizasyon yapmadığı performans düşüşü düzeltildi (d64cfb5).
  • Başlatma sırasında MultiProcess DataStore'nin geçersiz kılma işlemlerini kaçırmasına neden olabilen 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 kayıtları içerir.

Hata Düzeltmeleri

  • DataStore ile ilgili performans iyileştirmesi, yalnızca gözlemlendiğinde güncelleme bildirimlerini toplar. (b/267792241)
    • Coroutines test kitaplığını kullanıyorsanız bu değişikliğin testlerinizde UncompletedCoroutinesError hatasını 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 dışı JVM ortamlarında updateData sırasında dosya yeniden adlandırma işleminin 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ü bu kayıtları içerir.

API Değişiklikleri

  • MultiProcessDataStoreFactory yöntemleri artık deneysel değil.@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ü bu kayıtları 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 taahhütleri 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ştirilmediğinde 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ısı 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 veri akışının bir güncellemeden sonra daha eski bir değer yayınlayabileceği bir 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 hedeflerindeki bir derleme sorununu (b/274786186, KT-57531) çözmek için Maven yapıları üzerindeki bağımlılık kısıtlamaları kaldırıldı.

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 istenmeyen olası 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 kullanabilirsiniz. DataStore'un Android dışı hedefleri hâlâ deneyseldir ancak geliştiricilerin bunları denemesini kolaylaştırmak için sürümleri birleştirmeye karar verdik.
  • Çoklu işlem özellikleri androidx.datastore.multiprocess konumundan androidx.datastore.core konumuna taşındı.
  • Dosya işlemleri için Storage nesneleriyle DataStore örnekleri oluşturmak üzere androidx.datastore.core.MultiProcessDataStoreFactory sınıfına 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'nin çoklu işlem uygulamasının yalnızca Android'de kullanılabildiğini unutmayın.

API Değişiklikleri

  • datastore-core arayüzünde InterProcessCoordinator öğesini StorageConnection öğesine ekleyin (I555bb)
  • datastore-core MultiProcessDataStoreFactory içindeki API'leri Storage'ı kullanacak şekilde değiştirin. (Iac02f)
  • datastore-multiprocess'teki herkese açık 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 kayıtları içerir.

Yeni özellikler

  • Süreçler genelinde DataStore örnekleri arasında veri tutarlılığının garanti edildiği çoklu süreç kullanım alanlarını destekler. 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 herkese açık 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ü bu commit'leri içerir.

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

Jetpack DataStore, anahtar/değer çiftlerini veya yazılı nesneleri protokol arabellekleriyle 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ü bu kayıtları içerir.

Hata Düzeltmeleri

  • Anahtar yoksa SharedPreferencesMigration komutunun çalışmayacağını açıklayın. (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ü bu kayıtları 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 olabileceğ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 yetkilinize 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. Serializer uyguladıysanız işlevlerinizi askıya alma işlevleri olacak şekilde güncellemeniz gerekir. (I1e58e)
  • RxDataStore kullanıcıları için mülk temsilcileri eklendi. (Ied768, b/173726702)

Hata Düzeltmeleri

  • Deneysel API'lerin herkese açık kullanımına kısıtlamalar getirildi (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 globalDataStore özellik temsilcisiyle değiştirildi. Kotlin dosyanızın üst düzeyinde globalDataStore'u bir kez çağırın. Örneğin:

    val Context.myDataStore by dataStore(...)
    

    Bunu Kotlin dosyanızın en üst düzeyine yerleştirin. Böylece yalnızca bir örneği olur. (I57215, b/173726702)

  • RxDataStore işlevleri artık DataStore'daki uzantı işlevleri yerine bir 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 SharedPreferences'i eklemenize olanak tanıyan yeni SharedPreferencesMigration oluşturucuyu kullanabilirsiniz. (I8e04e, b/177278510)

Hata Düzeltmeleri

  • DataStore artık aynı dosya için birden fazla etkin DataStore varsa istisna oluşturur. DataStore'unuzu Singleton olarak yönetmiyorsanız veya bir dosya için aynı anda iki DataStore örneğinin etkin olmadığından emin değilseniz artık DataStore'u okurken veya yazarken istisnalar görebilirsiniz. Bu sorunlar, DataStore'unuzu Singleton olarak yöneterek düzeltilebilir. (Ib43f4, b/177691248)
  • Arayan kapsamı iptal edildiğinde iptal davranışı düzeltildi. (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 taahhütleri içerir:

Yeni özellikler

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

API Değişiklikleri

  • CorruptionHandler arayüzünü gizleyin. DataStore fabrikası yalnızca ReplaceFileCorruptionHandler'ı kabul ettiği için herkese açık olmasına gerek yoktu. (I0b3b3, b/176032264)
  • preferencesKey<T>(name: String): Key<T> yöntemi kaldırıldı ve desteklenen her türe özel 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 bilgisi eksikti. Bu bilgi eklendi. (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() yöntemine iletilen OutputStream'in kapatılmasına izin veriyoruz (ancak bunu zorunlu kılmıyoruz). (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

  • Preference Datastore'da 1.0.0-alpha03 şu kilitlenmeye neden olan bir paketleme sorunu düzeltildi: 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ü bu kayıtları 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 veri deposuna yönelik saf bir 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ştiriciler daha kolay uygulanabilir. Böylece kullanıcıların boş giriş akışları için özel durumlar 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. Kapalıysa istisnalar (I16e29) oluşturulur.
  • SharedPreferencesView için oluşturucuyu dahili yapma. Başlangıçta test için herkese açık olarak yayınlanmış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'in sondaki lambda söz dizimini kullanmanıza olanak tanır. (Ibe7f1, b/169425442)
  • Kotlin için yeni açık API şartlarına uyma (I5ae1e)

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ü şu taahhütleri 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 özelliğinin kötüye kullanımını önlemek için bir istisna eklendi (I1134d)
  • 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ü bu kayıtları 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:

  • Yazılı nesneleri (protokol arabellekleri tarafından desteklenir) depolamanıza olanak tanıyan Proto DataStore
  • Anahtar/değer çiftlerini depolayan Preferences DataStore

Veriler eşzamansız, tutarlı ve işlemsel olarak depolanır. Bu sayede SharedPreferences'ın dezavantajlarının çoğu ortadan kalkar.