Veri Deposu

SharedPreferences'ın bazı dezavantajlarını kaldırarak verileri eşzamansız, tutarlı ve işlemsel olarak depolayın
Son Güncelleme Kararlı Sürüm Serbest Bırakma Adayı Beta Sürümü Alfa Sürümü
3 Nisan 2024 1.0.0 1.1.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 deposunu okuyun.

İki DataStore uygulaması vardır: Tercihler ve Proto. İkisinden birini seçin. Her iki uygulamaya da Android içermeyen bağımlılıklar ekleyebilirsiniz.

İhtiyacınız olan uygulama için bağımlılıkları, uygulamanızın veya modülünüzün build.gradle dosyasına ekleyin:

Tercihler DataStore

Modern

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation "androidx.datastore:datastore-preferences:1.0.0"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-preferences-rxjava2:1.0.0"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-preferences-rxjava3:1.0.0"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-preferences-core:1.0.0"
    }
    

Kotlin

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation("androidx.datastore:datastore-preferences:1.0.0")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-preferences-rxjava2:1.0.0")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-preferences-rxjava3:1.0.0")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-preferences-core:1.0.0")
    }
    

Proto Veri Deposu

Modern

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation "androidx.datastore:datastore:1.0.0"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-rxjava2:1.0.0"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-rxjava3:1.0.0"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-core:1.0.0"
    }
    

Kotlin

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation("androidx.datastore:datastore:1.0.0")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.0.0")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-rxjava3:1.0.0")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-core:1.0.0")
    }
    

Geri bildirim

Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Yeni sorunlar keşfederseniz veya bu kitaplığı nasıl geliştirebileceğimizle ilgili fikirleriniz varsa 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 sayı oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerine bakın.

Sürüm 1.1

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ı olduğunda updateData çağrılarının disk yazma işlemlerinde optimize edilmediği performans düşüşü düzeltildi (d64cfb5)
  • Başlatma sırasında MultiProcess DataStore öğesinin geçersiz kılmaları kaçırabileceği bir yarış 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 üzerindeki 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'yi tetikleyebileceğini unutmayın. Bu sorunu önlemek için testlerinizde DataStore uygulamasını başlatırken TestScope.backgroundScope testi başarılı olmalıdır.
  • Aynı örnekte iç içe yerleştirilmiş updateData çağrılarının kilitlenmesi sorunu düzeltildi. (b/241760537)
  • Taşıma sırasında SharedPreferences silemezse DataStore artık IOExceptions öğesini yayınlamaz. (b/195553816)
  • Android olmayan JVM ortamlarında updateData işlemi sırasında dosya yeniden adlandırma işleminin başarısız olması sorunu düzeltildi. (b/203087070)
  • DataStore öğesinin başlatılmasından sonra CorruptionException öğesinin işlenmemesi sorunu 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 olmadan 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ı. Sürüm 1.1.0-alpha07 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ı olacak bir dosya yolu (String, java.io.File ve okio.Path) alıyor. (I211c8, b/305755935)

Sürüm 1.1.0-alpha05

6 Eylül 2023

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

API Değişiklikleri

  • Datastore FileStorage şu anda herkesin kullanımına açıktır. Böylece, istemciler özel parametreler sağlayabilir. (Icb985)
  • OkioStorage kurucusu, Android'de MultiProcessCoordinator ile kullanılabilmesi için bir InterProcessCoordinator kabul edecek şekilde değiştirildi. (Iecea3)

Hata Düzeltmeleri

  • Aynı dizindeki birden fazla dosyayı izleyemeyen MultiProcessCoordinator sorununu düzeltin.
  • Dosya yolları normalleştirilmezse yinelenen dosyaların algılanamaması sorunu düzeltildi.
  • RxDataStore#isDisposed öğesinden 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ı. Sürüm 1.1.0-alpha04 bu kayıtları içerir.

Hata Düzeltmeleri

  • Güncelleme sonrasında DataStore veri akışının eski bir değeri ortaya çıkarabileceği bir yarış durumundan kaçınmak 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 Yerel Hedeflerindeki bir derleme sorununu geçici olarak çözmek için Maven yapılarındaki 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ı. Sürüm 1.1.0-alpha02 bu kayıtları içerir.

Not

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

Yeni Özellikler

  • Artık DataStore uygulamasını KMM projelerinde kullanabilirsiniz. DataStore'un Android dışı hedefleri hâlâ deneysel olsa da geliştiricilerin denemesini kolaylaştırmak için sürümleri birleştirmeye karar verdik.
  • Çok işlemli özellikler androidx.datastore.multiprocess'ten androidx.datastore.core'a taşındı.
  • Dosya işlemleri için Storage nesneleriyle DataStore örnekleri oluşturmak üzere androidx.datastore.core.MultiProcessDataStoreFactory ürününe yeni bir fabrika yöntemi ekleyin.
  • Birden çok DataStore örneğinin işlemler arasında iletişim kurmasına yardımcı olan yeni bir InterProcessCoordinator arayüzü ekleyin. InterProcessCoordinator için Çok İşlemli uygulamanın yalnızca Android'de kullanılabildiğini unutmayın.

API Değişiklikleri

  • Veri deposu çekirdek arayüzünde (I555bb) StorageConnection öğesine InterProcessCoordinator ekleyin
  • Storage'ı kullanmak için Datastore-core MultiProcessDataStoreFactory API'lerini değiştirin. (Iac02f)
  • datastore-multiprocess'daki herkese açık API'leri datastore-core'a (I76d7c) taşıyın
  • datastore-preferences-core'dan (I4b788) ortaya çıkan PreferencesSerializer
  • @JvmDefaultWithCompatibility ek açıklaması ekleniyor (I8f206)

Sürüm 1.1.0-alpha01

9 Kasım 2022

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

Yeni Özellikler

  • İşlemler genelinde DataStore örnekleri arasında veri tutarlılığının garanti edildiği çok işlemli kullanım alanlarını destekleyin. Bu tür DataStore örnekleri oluşturmak için MultiProcessDataStoreFactory#create öğesini ekleyin.
  • Datastore için temel depolama mekanizmasının değiştirilmesini sağlayan yeni Depolama arayüzü. java.io ve okio uygulamaları hakkında bilgi edinebilirsiniz. DataStore fabrikada bu Storage nesnesini kabul eden yeni yöntemler var.

API Değişiklikleri

  • Storage'ı kullanmak için Datastore-core MultiProcessDataStoreFactory API'lerini değiştirin. (Iac02f)
  • datastore-multiprocess'daki herkese açık API'leri datastore-core'a (I76d7c) taşıyın
  • datastore-preferences-core'dan (I4b788) ortaya çıkan PreferencesSerializer

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 kayıtları içerir.

1.0.0'ın temel özellikleri

Jetpack DataStore, protokol arabellekleriyle anahtar/değer çiftlerini veya yazılan 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 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 ürününün çalışmayacağını belirtin. (Icfa32, b/192824325)
  • İstenen anahtarın henüz mevcut olmaması halinde SharedPreferencesMigration ürününün MIGRATE_ALL_KEYS ile oluşturulan bir istisna teşkil etmesi hatasını düzeltin. (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 son jar'a eklenmesine neden olan hatayı düzeltir (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 sorununu 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üklemelerini kaldırın (I2adc7)

Hata Düzeltmeleri

  • Veri deposu yetkililerinin bağlam sızıntısına neden olmasına neden olan 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ü bu kayıtları içerir.

API Değişiklikleri

  • Artık dataStore ve preferencesDataStore mülkü için yetki verdiğiniz kullanıcıya bağlama dayalı bir taşıma işlemi ekleyebilirsiniz. (I4ef69, b/173726702)
  • Artık datastore yetkisini veya bağlam.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. Serileştirici uyguladıysanız, fonksiyonlarınızı askıya alma işlevleri olacak şekilde güncellemeniz gerekir. (I1e58e)
  • RxDataStore kullanıcıları için mülkle ilgili yetki verilmiş kullanıcılar eklendi. (Ied768, b/173726702)

Hata Düzeltmeleri

  • Deneysel API'lerin herkese açık kullanımında kısıtlamalar uygula (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 bunun yerine globalDataStore mülk yetkisi verildi. GlobalDataStore'u kotlin dosyanızda en üst düzeyde bir kez çağırın. Örnek:

    val Context.myDataStore by dataStore(...)
    

    Bunu kotlin dosyanızın en üst düzeyine koyun, böylece yalnızca bir tane olacaktır. (I57215, b/173726702)

  • RxDataStore işlevleri artık DataStore'da uzantı işlevleri yerine RxDataStore sınıfında bulunmaktadır. (Idccdb, b/177691248)

  • EncryptedSharedPreferences'ı (veya doğrudan SharedPreferences'ı) DataStore'a taşımak istiyorsanız bunu artık yeni SharedPreferencesMigration oluşturucusu ile yapabilirsiniz. Bu araç, SharedPreferences'ı eklemenize olanak tanır. (I8e04e, b/177278510)

Hata Düzeltmeleri

  • Aynı dosya için birden fazla etkin DataStore varsa DataStore artık bir istisna atar. 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'da okuma ve yazma sırasında istisnalar görebilirsiniz. Bu sorunları, DataStore'u Singleton olarak yöneterek giderebilirsiniz. (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ü bu kayıtları 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ı, Tercihler DataStore oluşturmak için bir oluşturucu içerir.

API Değişiklikleri

  • CorruptionHandler arayüzünü gizleyin. DataStore fabrikası yalnızca ChangeFileCorruptionHandler fonksiyonunu kabul ettiğinden herkese açık olması için bir neden yoktu. (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) oldu

Hata Düzeltmeleri

  • DataStoreFactory'de bulunan ve datastore dosyasının "datastore/" alt dizininde oluşturulduğu gerçeğinin belirtildiği dokümanları düzeltir. (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 belgeler ve istisnalar ekleyin. (Ia98a2, b/173522155, b/173726702)
  • Artık Serializer.writeTo() öğesine iletilen ÇıktıStream'in kapatılmasına izin veriyoruz (ancak bunu zorunlu tutmuyoruz). (I5c9bf, b/173037611)

Sürüm 1.0.0-alpha04

17 Kasım 2020

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

Hata Düzeltmeleri

  • Preference Datastore'da şu 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ü bu kayıtları içerir.

Yeni Özellikler

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

API Değişiklikleri

  • Daha hızlı derleme sağlamak amacıyla Datastore için pure kotlin bağımlılığı oluşturuldu. androidx.datastore:datastore-core yalnızca kotlin çekirdek API'lerini, androidx.datastore:datastore ise Android'e bağlı API'leri (SharedPreferencesMigration ve Context.createDataStore kurucusu dahil) içerir (I42d75, b/168512698)
  • Daha hızlı kotlin derlemesi için tercihler veri deposuna yönelik hedefleri ayırma (Ia3c19)
  • Serileştiriciler artık, diskte hiç veri olmadığında kullanılacak varsayılan değer için yeni bir özellik gerektiriyor. Bu, özel serileştiricilerin uygulanmasını kolaylaştırır ve böylece kullanıcıların özel büyük/küçük harf boş giriş akışlarına gerek kalmaz (boş giriş akışları json ile ayrıştırılmaz).

    • Ayrıca artık, writeTo() işlevine sağlanan çıkış akışının kapatılmadığını onaylayan bir kontrol de bulunmaktadır. Bu denetim, kapatılırsa istisnalar atar (I16e29)
  • SharedPreferencesView için oluşturucuyu dahili hale getirme. Test yapılabilmesi için başlangıçta herkese açık durumdaydı. Testler bunun yerine bir SharedPreferencesMigration oluşturmalı ve bunu temel alarak test etmelidir. (I93891)

Hata Düzeltmeleri

  • DataStoreFactory ve PreferenceDataStoreFactory üzerindeki produceFile parametresi artık listedeki son parametre olduğundan kotlin son lambda söz dizimini kullanabilmenizi sağlar. (Ibe7f1, b/169425442)
  • Kotlin için yeni açık API şartlarına uyma (I5ae1e)

Bilinen Sorunlar

  • Tercih edilen 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ı. Sürüm 1.0.0-alpha02 bu kayıtları içerir.

Hata Düzeltmeleri

  • Veri deposu çekirdeğinde mutasyona karşı bir koruma eklendi. Mutasyon, proto olmayan/tercih olmayan türlerle veri deposu kullanan kişilerin veri deposu kullanımını bozuyor (I6aa84)
  • Geçerli durumun hata ayıklamasını kolaylaştırmak için Tercihleri.kt'ye bir toString yöntemi eklendi (I96006)
  • DataStore.Preferences (I1134d) kötüye kullanımına karşı koruma sağlamak için istisna eklendi
  • Uygulamanın başlatılırken 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 Akış üzerine kurulu DataStore iki farklı uygulama sunar:

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

Veriler eş zamansız, tutarlı ve işlemsel olarak depolanır. Böylece SharedPreferences'ın dezavantajlarının çoğu gider.