Veri Deposu
Son Güncelleme | Kararlı Sürüm | Yayın 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 Google Maven deposunu belirler. Google'ın Maven deposunu okuyun konulu videomuzu izleyin.
DataStore'un iki uygulaması vardır: Tercihler ve Protokol. İkisinden birini seçin. İsterseniz bazı ipuçları vereceğim.
İhtiyacınız olan uygulama için bağımlılıkları build.gradle
dosyasına ekleyin.
uygulamanız veya modülünüz için:
Preferences DataStore
Groovy
// 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 DataStore
Groovy
// 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 iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.
Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.
Sürüm 1.1
Sürüm 1.1.1
1 Mayıs 2024
androidx.datastore:datastore-*:1.1.1
yayınlandı. Sürüm 1.1.1 bu taahhütleri içerir.
Hata Düzeltmeleri
- "Kaynak kilitlenmesi meydana gelir" yazan yanlış Linux alarmı azaltıldı bir köşede hata mesajı gösteriliyor. Birden fazla
DataStore
örneği, dosya kilidini geri alarak farklı işlemlerden yazmaya çalışıyor.
Sürüm 1.1.0
17 Nisan 2024
androidx.datastore:datastore-*:1.1.0
yayınlandı. Sürüm 1.1.0 bu kaydetmeleri 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ümlerinin sürüm notlarını inceleyin. 1.1.0'daki önemli güncellemelerden bazıları şunlardır:
- DataStore, işlemler genelinde gözlemlenebilirlik desteğiyle artık aynı dosyaya erişen birden çok işlemi desteklemektedir.
- Yeni Storage arayüzü, veri modellerinizi nasıl depolayacağınızı veya serileştireceğinizi özelleştirmenize olanak tanır.
- Artık DataStore'u Kotlin Multiplatform projelerinde kullanabilirsiniz.
Sürüm 1.1.0-rc01
3 Nisan 2024
androidx.datastore:datastore-*:1.1.0-rc01
yayınlandı. Sürüm 1.1.0-rc01 bu kayıtları içerir.
Hata Düzeltmeleri
- Yeni veriler eski verilerle aynıysa (d64cfb5)
updateData
çağrılarının disk yazma işlemlerinde optimize edilmediği performans düşüşü düzeltildi - 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ı. Sürüm 1.1.0-beta02 bu kayıtları içerir.
Hata Düzeltmeleri
DataStore
ürününün performans iyileştirmesi yalnızca fark edildiğinde güncelleme bildirimleri toplar. (b/267792241)- Eş yordamlar test kitaplığını kullanıyorsanız bu değişikliğin testlerinizde
UncompletedCoroutinesError
öğesini tetikleyebileceğini unutmayın. Bu sorunu önlemek için testlerinizdeDataStore
öğesini ilk kullanıma hazırlarkenTestScope.backgroundScope
testlerini geçtiğinizden emin olun.
- Eş yordamlar 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
dosyası silemezseDataStore
uygulaması artıkIOExceptions
öğesini tetiklemez. (b/195553816) - Android dışı JVM ortamlarında
updateData
sırasında dosya yeniden adlandırma işleminin başarısız olması sorunu düzeltildi. (b/203087070) DataStore
başlatma işleminden 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 hiçbir değişiklik yapılmadan yayınlandı. Sürüm 1.1.0-beta01 bu kaydetmeleri 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 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çıklamalarının kaldırılmasını 1.1.0-alpha07 sürümüne sunun. (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 kaydetmeleri içerir.
API Değişiklikleri
createSingleProcessCoordinator
fabrika yöntemi,createMultiProcessCoordinator
ile tutarlı olması için artık 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ı. 1.1.0-alpha05 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Datastore
FileStorage
şu anda herkese açık olduğu için istemciler özel parametreler sağlayabilir. (Icb985) OkioStorage
oluşturucusu, Android'deMultiProcessCoordinator
ile kullanılabilmesi içinInterProcessCoordinator
kabul edecek şekilde değiştirildi. (Iecea3)
Hata Düzeltmeleri
- Aynı dizinde birden fazla dosyayı izleyemeyen
MultiProcessCoordinator
sorununu düzeltme. - Dosya yolları normalleştirilmezse düzeltme, yinelenen dosyaları algılayamıyor.
RxDataStore#isDisposed
öğesinden döndürülen yanlış değerleri düzeltin.datstore-preferences-core
yapı 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 kaydetmeleri içerir.
Hata Düzeltmeleri
DataStore
veri akışının bir güncelleme sonrasında eski bir değer yayınlayabileceği bir yarış 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 Hedeflerinde bir derleme sorununu çö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ı. 1.1.0-alpha02 sürümü bu kaydetmeleri içerir.
Not
Bu sürümün, tek işlem ve çok işlemli DataStore uygulamalarının uygulamalarını 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
DataStore
özelliğini artık KMM projelerinde kullanabilirsiniz. DataStore'un Android dışı hedeflerin hâlâ deneme aşamasında olduğunu, ancak geliştiricilerin denemelerini kolaylaştırmak için sürümleri birleştirmeye karar verdik.- Çok işlemli özellikler
androidx.datastore.multiprocess
kuruluş birimindenandroidx.datastore.core
kuruluş birimine taşındı. - Dosya işlemleri için
Storage
nesneyle DataStore örnekleri oluşturmak üzereandroidx.datastore.core.MultiProcessDataStoreFactory
uygulaması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
InterProcessCoordinator
arayüzü ekleyin.InterProcessCoordinator
uygulamasının Çok İşlemli uygulamasının yalnızca Android'de kullanılabildiğini unutmayın.
API Değişiklikleri
- Veri deposu çekirdek arayüzünde (I555bb)
InterProcessCoordinator
öğesiniStorageConnection
konumuna ekleyin - Depolama alanını kullanmak için veri deposu çekirdeğindeki (
MultiProcessDataStoreFactory
) API'leri değiştirin. (Iac02f) - Veri deposu çoklu süreçte herkese açık API'leri, veri deposu çekirdeğine (I76d7c) taşıma
PreferencesSerializer
, datastore-preferences-core'da (I4b788) kullanıma sunuldu@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 kaydetmeleri içerir.
Yeni Özellikler
- Süreçler genelinde
DataStore
örnekleri arasında veri tutarlılığının garanti edildiği çok işlemli kullanım alanları desteklenir. BöyleDataStore
örnekler oluşturmak içinMultiProcessDataStoreFactory#create
ekleyin. Datastore
için temel depolama mekanizmasının kapatılmasına olanak tanıyan yeni Depolama arayüzü. java.io ve okio uygulamaları sağlanır.DataStore
fabrikalar bu Storage nesnesini kabul eden yeni yöntemlere sahip.
API Değişiklikleri
- Depolama alanını kullanmak için veri deposu çekirdeğindeki (
MultiProcessDataStoreFactory
) API'leri değiştirin. (Iac02f) - Veri deposu çoklu süreçte herkese açık API'leri, veri deposu çekirdeğine (I76d7c) taşıma
PreferencesSerializer
, datastore-preferences-core'da (I4b788) kullanıma sunuldu
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 kaydetmeleri içerir.
1.0.0'ın temel özellikleri
Jetpack DataStore, protokol arabelleklerine sahip 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'u kullanır.
Sürüm 1.0.0-rc02
21 Temmuz 2021
androidx.datastore:datastore-*:1.0.0-rc02
yayınlandı. Sürüm 1.0.0-rc02 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Anahtar olmadığında
SharedPreferencesMigration
işlevinin çalışmayacağını belirtin. (Icfa32, b/192824325) - İstenen anahtar henüz mevcut değilse
SharedPreferencesMigration
öğesininMIGRATE_ALL_KEYS
ile oluşturulan hata düzeltmesi. (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 kaydetmeleri içerir.
Hata Düzeltmeleri
- .java dosyasının yanlışlıkla nihai 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ı. Sürüm 1.0.0-beta02 bu kaydetmeleri 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ı. Sürüm 1.0.0-beta01 bu kaydetmeleri içerir.
API Değişiklikleri
- Yalnızca kotlin yöntemleri için JVM aşırı yüklemelerini kaldırma (I2adc7)
Hata Düzeltmeleri
- Veri deposu yetki verilmiş kullanıcılarınızın 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ü bu kaydetmeleri içerir.
API Değişiklikleri
- Artık
dataStore
vepreferencesDataStore
mülkü temsilcinize bağlama dayalı bir taşıma işlemi ekleyebilirsiniz. (I4ef69, b/173726702) - Artık datastore delegesi veyacontext.createDataStore (I60f9a) kullanmıyorsanız dosyanın adını almak için yardımcı işlevler ekler.
- Serileştirici WriteTo ve ReadFrom şu anda askıya alınıyor. Serileştirici uyguladıysanız işlevlerinizi askıya alma işlevleri olarak güncellemeniz gerekir. (I1e58e)
- RxDataStore kullanıcıları için mülk yetkileri eklendi. (Ied768, b/173726702)
Hata Düzeltmeleri
- Deneysel API'lerin herkese açık kullanımıyla ilgili kısıtlamaları zorunlu kılın (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 kaydetmeleri içerir.
API Değişiklikleri
Context.createDataStore
uzantı işlevi kaldırıldı ve globalDataStore mülk temsilcisiyle değiştirildi. GlobalDataStore'u, kotlin dosyanızdaki üst düzeyde bir kez çağırın. Örnek:val Context.myDataStore by dataStore(...)
Yalnızca bir örneği olması için bunu kotlin dosyanızın en üst düzeyine yerleştirin. (I57215, b/173726702)
RxDataStore işlevleri artık DataStore'daki uzantı işlevleri yerine bir RxDataStore sınıfındadır. (Idccdb, b/177691248)
EncryptedSharedPreferences'ı (veya doğrudan önyükleme SharedPreferences'ı) DataStore'a taşımak istiyorsanız bunu artık SharedPreferencesPreferences'i yerleştirmenize izin veren yeni SharedPreferencesPreferencesMigration oluşturucusuyla yapabilirsiniz. (I8e04e, b/177278510)
Hata Düzeltmeleri
- Aynı dosya için birden fazla etkin DataStore varsa DataStore artık istisna oluşturacaktır. 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 ya da yazma sırasında istisnalar görebilirsiniz. Bu sorunlar, DataStore'u bir Singleton olarak yöneterek düzeltilebilir. (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 kaydetmeleri içerir.
Yeni Özellikler
- DataStore için RxJava sarmalayıcıları eklendi.
datastore-rxjava2/3
yapıları, temel DataStore API'lere yönelik sarmalayıcıları (RxDataStore
,RxDataStoreBuilder
veRxDataMigration
) 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 SwitchFileCorruptionHandler kabul edildiğinden herkese açık olması için bir neden olmadı. (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ıkintPreferencesKey("int")
(Ibcfac, b/170311106) olarak değiştirildi
Hata Düzeltmeleri
- DataStoreFactory'de, datastore dosyasının "datastore/" alt dizininde oluşturulduğu gerçeği ortadan kaldıran 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 kaydetmeleri 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 kaydetmeleri 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 kaydetmeleri içerir.
Yeni Özellikler
- Tercihler artık çift değerleri destekliyor (bu özellik, kayanlardan daha fazla hassasiyete ihtiyacınız olduğunda kullanışlıdır) (I5be8f, b/169471808)
API Değişiklikleri
- Daha hızlı derleme sağlamak amacıyla veri deposu için tam 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
veContext.createDataStore
oluşturucusu dahil) içerir.(I42d75, b/168512698) - Daha hızlı kotlin derlemesi için tercihler veri deposunun hedeflerini ayırma (Ia3c19)
Serileştiriciler, artık diskte veri yoksa kullanılacak varsayılan değer için yeni bir özellik gerektirir. Bu sayede, kullanıcıların boş giriş akışları için özel durum oluşturmak zorunda kalmaması için özel serileştiriciler daha kolay uygulanabilir (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ı doğrulayan bir kontrol de var. Kapatılırsa istisnalar da uyguluyor (I16e29)
SharedPreferencesView oluşturucusunu dahili yapma. Başlangıçta test için herkese açıktı. Testler, bunun yerine bir SharedPreferencesPreferencesMigration oluşturmalı ve buna göre test yapmalıdır. (I93891)
Hata Düzeltmeleri
DataStoreFactory
vePreferenceDataStoreFactory
üzerindekiproduceFile
parametresi artık listedeki son parametre olduğundan kotlin izleyen lambda söz dizimini kullanmanıza olanak tanıyor. (Ibe7f1, b/169425442)- Kotlin için yeni açık API şartlarına uyma (I5ae1e)
Bilinen Sorunlar
- Datastore'un
java.lang.NoClassDefFoundError
ile kilitlenmesi tercih edilir. (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
serbest bırakıldı. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Datastore-çekirdekteki mutasyona karşı koruma önlemi eklendi. Mutasyon, proto olmayan/tercih dışı türlerle veri deposu kullanan kişilerin veri deposu kullanımını böler (I6aa84)
- Mevcut durumun hata ayıklamasını kolaylaştırmak için Preferences.kt'ye bir
toString
yöntemi eklendi (I96006) DataStore.Preferences
ürününün (I1134d) kötüye kullanımına karşı koruma sağlamak için bir istisna eklendi- Uygulamanın başlangıçta kilitlenmesine neden olabilecek 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
serbest bırakıldı. 1.0.0-alpha01 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
Jetpack DataStore, SharedPreferences'ın yerini almayı amaçlayan yeni ve iyileştirilmiş bir veri depolama çözümüdür. Kotlin eş yordamları ve Akışı temel alınarak geliştirilen DataStore, iki farklı uygulama sunar:
- Yazılan nesneleri (protokol arabellekleri tarafından desteklenir) saklamanızı sağlayan Proto DataStore
- Anahtar/değer çiftlerini depolayan Preferences DataStore
Veriler eşzamansız, tutarlı ve işlemsel olarak depolanarak SharedPreferences'ın dezavantajlarının çoğu aşılır.