Veri Deposu

Verileri eşzamansız, tutarlı ve işlemsel olarak depolayarak SharedPreferences'ın bazı dezavantajlarını ortadan kaldırın
Son Güncelleme Kararlı Sürüm Serbest Bırakma Adayı Beta Sürümü Alfa Sürümü
10 Ocak 2024 1.0.0 - 1.1.0-beta01 -

Bağımlılıkları bildirme

DataStore'da 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 serbest bağımlılıklar ekleyebilirsiniz.

Uygulamanızın veya modülünüz için build.gradle dosyasına, ihtiyaç duyduğunuz uygulamanın bağımlılıklarını 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 bildirimleriniz Jetpack'i iyileştirmemize yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı geliştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni hesap 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 Sorun İzleyici belgelerine bakın.

Sürüm 1.1

Sürüm 1.1.0-beta01

10 Ocak 2024

androidx.datastore:datastore-*:1.1.0-beta01, 1.1.0-alpha07 tarihinden bu yana hiçbir değişiklik olmadan yayınlandı. Sürüm 1.1.0-beta01 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 kaydetmeleri 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çıklamasını 1.1.0-alpha07 sürümünde kullanıma sunun. (I8e607)

Sürüm 1.1.0-alpha06

1 Kasım 2023

androidx.datastore:datastore-*:1.1.0-alpha06 yayınlandı. Sürüm 1.1.0-alpha06 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

  • Veri deposu 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 düzeltmesi.
  • Dosya yolları normalleştirilmezse yinelenen dosyaların algılanamadığını düzeltme.
  • 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 daha eski bir değer yayınlamasına yol açabilecek 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 Yerel Hedeflerindeki derleme sorununa geçici çözüm getirmek için Maven yapılarındaki bağımlılık kısıtlamaları (b/274786186, KT-57531) kaldırıldı.

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 kaydetmeleri içerir.

Not

Bu sürümün, tek işlem 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ışı hedeflerinin hâlâ deneysel olduğunu unutmayın. Ancak geliştiricilerin bunları denemelerini kolaylaştırmak için sürümleri birleştirmeye karar verdik.
  • Çoklu işlem özellikleri androidx.datastore.multiprocess ürününden androidx.datastore.core aboneliğine taşındı.
  • Dosya işlemleri için Storage nesneleriyle DataStore örnekleri oluşturmak üzere androidx.datastore.core.MultiProcessDataStoreFactory öğesine yeni bir fabrika yöntemi ekleyin.
  • Birden çok DataStore örneğinin işlemler arasında iletişim kurmasına yardımcı olan yeni bir arayüz InterProcessCoordinator 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-çekirdek MultiProcessDataStoreFactory API'lerini değiştirin. (Iac02f)
  • datastore-multiprocess'daki herkese açık API'leri datastore-core'a (I76d7c) taşıma
  • PreferencesSerializer datastore-preferences-core'da (I4b788) açığa çıktı
  • @JvmDefaultWithCompatibility notu 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. Bunun gibi 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 arayüzü. java.io ve okio uygulamaları sağlanmıştır. DataStore fabrikasında bu Storage nesnesini kabul eden yeni yöntemler var.

API Değişiklikleri

  • Storage'ı kullanmak için datastore-çekirdek MultiProcessDataStoreFactory API'lerini değiştirin. (Iac02f)
  • datastore-multiprocess'daki herkese açık API'leri datastore-core'a (I76d7c) taşıma
  • PreferencesSerializer datastore-preferences-core'da (I4b788) açığa çıktı

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 uygulamasını 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ı durumunda SharedPreferencesMigration ile oluşturulan MIGRATE_ALL_KEYS ürününün istisna oluşturduğu 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ı. Sürüm 1.0.0-rc01 bu kayıtları içerir.

Hata Düzeltmeleri

  • .java dosyasının yanlışlıkla son jar'a 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 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 yetkilerinin 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 delege veyacontext.createDataStore'u (I60f9a) kullanmıyorsanız dosyanın adını almak için yardımcı işlevler ekler.
  • Serializer writeTo ve readFrom artık askıya alınıyor. Serileştirici kullandıysanız, işlevlerinizi askıya alma işlevleri olacak şekilde güncellemeniz gerekir. (I1e58e)
  • RxDataStore kullanıcıları için mülk için 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. Örneğin:

    val Context.myDataStore by dataStore(...)
    

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

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

  • EncryptedSharedPreferences'ı (veya doğrudan paylaşılan kaynakları) DataStore'a taşımak istiyorsanız artık bunu, SharedPreferences'ı eklemenize izin veren yeni SharedPreferencesMigration oluşturucusu ile yapabilirsiniz. (I8e04e, b/177278510)

Hata Düzeltmeleri

  • Aynı dosya için birden çok etkin DataStore varsa DataStore artık bir istisna oluşturur. DataStore'u bir Singleton olarak yönetmediyseniz 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 bir Singleton olarak yöneterek düzeltebilirsiniz. (Ib43f4, b/177691248)
  • Arayan kapsamı iptal edildiğinde iptal davranışını düzeltin. (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'lerinin (RxDataStore, RxDataStoreBuilder ve RxDataMigration) sarmalayıcılarını 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 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)

Hata Düzeltmeleri

  • DataStoreFactory'de bulunan, datastore dosyasının "datastore/" alt dizininde oluşturulduğu gerçeğini göz ardı eden 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 ExitStream'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ı. 1.0.0-alpha04 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • 1.0.0-alpha03 Tercih Deposu'nda aşağıdaki 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ı. Sürüm 1.0.0-alpha03 bu kayıtları içerir.

Yeni Özellikler

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

API Değişiklikleri

  • Daha hızlı derlemeye olanak tanımak amacıyla veri deposu için saf 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 oluşturucu dahil) içerir(I42d75, b/168512698)
  • Daha hızlı kotlin derlemesi için tercihler veri deposuna ait hedefleri ayırma (Ia3c19)
  • Serileştiriciler artık diskte 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, 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, writeTo() işlevine sağlanan çıkış akışının kapatılmadığını ve kapalıysa istisnalara yol açtığını doğrulayan bir kontrol bulunmaktadır (I16e29)
  • SharedPreferencesView dahili oluşturucuyu oluşturma. İlk başta, test yapılabilmesi için herkese açık olmuştur. Testler bunun yerine bir SharedPreferencesMigration oluşturmalı ve bunu test etmelidir. (I93891)

Hata Düzeltmeleri

  • DataStoreFactory ve PreferenceDataStoreFactory üzerindeki produceFile parametresi artık listedeki son parametre olduğundan kotlin'in sonundaki lambda söz dizimini kullanabilmenizi sağlar. (Ibe7f1, b/169425442)
  • Kotlin için yeni açık API gereksinimlerine 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. Değişiklik, proto/tercih dışı türde (I6aa84) veri deposu kullanan kişilerin veri deposu kullanımını kesintiye uğratıyor
  • Mevcut durumun hata ayıklamasını kolaylaştırmak için Preferred.kt'ye toString yöntemi eklendi (I96006)
  • DataStore.Preferences ürününün kötüye kullanımına karşı koruma sağlamak için istisna eklendi (I1134d)
  • Uygulamanın başlangıçta 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ı. Sürüm 1.0.0-alpha01 bu kayıtları içerir.

Yeni Özellikler

Jetpack DataStore, SharedPreferences'ın yerini alacak yeni ve iyileştirilmiş bir veri depolama çözümüdür. Kotlin eş yordamları ve Flow üzerinde geliştirilen 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 ortadan kalkar.