Veri Deposu
Son Güncelleme | Kararlı Sürüm | Serbest Bırakma Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
1 Mayıs 2024 | 1.1.1 | - | - | - |
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 Veri Deposu
Modern
// Preferences DataStore (SharedPreferences like APIs) dependencies { implementation "androidx.datastore:datastore-preferences:1.1.1" // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.1.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.1.1" } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation "androidx.datastore:datastore-preferences-core:1.1.1" }
Kotlin
// Preferences DataStore (SharedPreferences like APIs) dependencies { implementation("androidx.datastore:datastore-preferences:1.1.1") // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.1.1") } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation("androidx.datastore:datastore-preferences-core:1.1.1") }
Proto Veri Deposu
Modern
// Typed DataStore (Typed API surface, such as Proto) dependencies { implementation "androidx.datastore:datastore:1.1.1" // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.1.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.1.1" } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation "androidx.datastore:datastore-core:1.1.1" }
Kotlin
// Typed DataStore (Typed API surface, such as Proto) dependencies { implementation("androidx.datastore:datastore:1.1.1") // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.1.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.1.1") } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation("androidx.datastore:datastore-core:1.1.1") }
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.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 1.1
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 kayıtları içerir.
Hata Düzeltmeleri
- Birden fazla
DataStore
örneği, dosya kilidini devre dışı bırakarak farklı işlemlerden yazmaya çalışıyorsa "Kaynak kilitlenmesi oluşur" hatasındaki 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 kayıtları içerir.
1.0.0 sürümünden bu yana yapılan önemli değişiklikler
Daha fazla bilgi için lütfen 1.1.0'ın alfa ve beta sürümleriyle ilgili sürüm notlarını inceleyin. 1.1.0'daki önemli güncellemelerden bazıları şunlardır:
- DataStore artık işlemler genelinde gözlemlenebilirlik desteğiyle aynı dosyaya erişen birden çok işlemi destekliyor.
- Yeni depolama arayüzü, veri modellerinizi nasıl depolayacağınızı veya serilayacağınızı özelleştirmenize olanak tanır.
- DataStore'u artık Kotlin Çoklu Platform projelerinde 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ı 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 testlerinizdeDataStore
uygulamasını başlatırkenTestScope.backgroundScope
testi başarılı olmalıdır.
- Coroutines test kitaplığını kullanıyorsanız bu değişikliğin testlerinizde
- 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
silemezseDataStore
artıkIOExceptions
öğ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 sonraCorruptionException
öğ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ı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
- Datastore
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
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
'tenandroidx.datastore.core
'a taşındı. - Dosya işlemleri için
Storage
nesneleriyle DataStore örnekleri oluşturmak üzereandroidx.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
öğesineInterProcessCoordinator
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ürDataStore
örnekleri oluşturmak içinMultiProcessDataStoreFactory#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ünMIGRATE_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
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 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, örneğin yalnızca bir tane olsun. (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
veRxDataMigration
) 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ıkintPreferencesKey("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
- 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ı. 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
veContext.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
vePreferenceDataStoreFactory
üzerindekiproduceFile
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.