Veri Deposu
Son Güncelleme | Kararlı Sürüm | Serbest Bırakma Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
29 Kasım 2023 | 1.0.0 | - | - | 1.1.0-alfa07 |
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.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 1.1
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
@ExperimentalMultiProcessDataStore
ek açıklamasını kaldırarakMultiProcessDataStoreFactory
yönteminin artık deneysel olmamasını sağlayın. (Ieee54)
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ıkcreateMultiProcessCoordinator
ile tutarlı olacak bir dosya yolu (String
,java.io.File
veokio.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'deMultiProcessCoordinator
ile kullanılabilmesi için birInterProcessCoordinator
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ündenandroidx.datastore.core
aboneliğine taşındı. - Dosya işlemleri için
Storage
nesneleriyle DataStore örnekleri oluşturmak üzereandroidx.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
öğesineInterProcessCoordinator
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 gibiDataStore
örnekleri oluşturmak içinMultiProcessDataStoreFactory#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şturulanMIGRATE_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
vepreferencesDataStore
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
veRxDataMigration
) 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ğinpreferencesKey<Int>("int")
artıkintPreferencesKey("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
- Kilitlenme ilk olarak şurada bildirildi: b/173036843
- (I4712d, b/173036843)
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
veContext.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
vePreferenceDataStoreFactory
üzerindekiproduceFile
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.