Room
Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
11 Aralık 2024 | 2.6.1 | - | - | 2.7.0-alpha12 |
Bağımlılıkları beyan etme
Room bağımlılığı eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu inceleyin.
Room'un bağımlılıkları arasında Room taşıma işlemlerini test etme ve Room RxJava yer alır.
Uygulamanızın veya modülünüzün build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:
Kotlin
dependencies { val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP) // See Add the KSP plugin to your project ksp("androidx.room:room-compiler:$room_version") // If this project only uses Java source, use the Java annotationProcessor // No additional plugins are necessary annotationProcessor("androidx.room:room-compiler:$room_version") // optional - Kotlin Extensions and Coroutines support for Room implementation("androidx.room:room-ktx:$room_version") // optional - RxJava2 support for Room implementation("androidx.room:room-rxjava2:$room_version") // optional - RxJava3 support for Room implementation("androidx.room:room-rxjava3:$room_version") // optional - Guava support for Room, including Optional and ListenableFuture implementation("androidx.room:room-guava:$room_version") // optional - Test helpers testImplementation("androidx.room:room-testing:$room_version") // optional - Paging 3 Integration implementation("androidx.room:room-paging:$room_version") }
Groovy
dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP) // See KSP Quickstart to add KSP to your build ksp "androidx.room:room-compiler:$room_version" // If this project only uses Java source, use the Java annotationProcessor // No additional plugins are necessary annotationProcessor "androidx.room:room-compiler:$room_version" // optional - RxJava2 support for Room implementation "androidx.room:room-rxjava2:$room_version" // optional - RxJava3 support for Room implementation "androidx.room:room-rxjava3:$room_version" // optional - Guava support for Room, including Optional and ListenableFuture implementation "androidx.room:room-guava:$room_version" // optional - Test helpers testImplementation "androidx.room:room-testing:$room_version" // optional - Paging 3 Integration implementation "androidx.room:room-paging:$room_version" }
KAPT eklentisini kullanma hakkında bilgi edinmek için KAPT belgelerine bakın.
KSP eklentisini kullanma hakkında bilgi edinmek için KSP hızlı başlangıç dokümanlarına bakın.
Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx dokümanlarını inceleyin.
Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.
İsteğe bağlı olarak, Android dışı kitaplıklar (ör. yalnızca Java veya Kotlin Gradle modülleri) için Room ek açıklamalarını kullanmak üzere androidx.room:room-common
'ten yararlanabilirsiniz.
Derleyici Seçenekleri'ni yapılandırma
Oda, aşağıdaki ek açıklama işleyici seçeneklerine sahiptir.
room.schemaLocation |
directory
Veritabanı şemalarının, belirtilen dizindeki JSON dosyalarına aktarılmasını sağlar. Daha fazla bilgi için Oda taşıma işlemleri başlıklı makaleyi inceleyin. |
room.incremental |
boolean
Gradle artımlı ek açıklama işleyicisini etkinleştirir. Varsayılan değer true 'tür.
|
room.generateKotlin |
boolean
Java yerine Kotlin kaynak dosyaları oluşturun. KSP gerekir. Varsayılan değer false 'tür.
Daha fazla bilgi için 2.6.0 sürümü notlarına bakın.
|
Room Gradle eklentisini kullanma
Room 2.6.0 ve sonraki sürümlerde, Room derleyicisinin seçeneklerini yapılandırmak için Room Gradle eklentisini kullanabilirsiniz. Bu eklenti, oluşturulan şemaların (derleme görevlerinin bir çıktısı olan ve otomatik taşıma işlemleri için kullanılan) yeniden üretilebilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru şekilde yapılandırılacak şekilde projeyi yapılandırır.
Eklentiyi eklemek için üst düzey Gradle derleme dosyanızda eklentiyi ve sürümünü tanımlayın.
Groovy
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
Modül düzeyindeki Gradle derleme dosyasında eklentiyi uygulayın ve room
uzantısından yararlanın.
Groovy
plugins { id 'androidx.room' } android { ... room { schemaDirectory "$projectDir/schemas" } }
Kotlin
plugins { id("androidx.room") } android { ... room { schemaDirectory("$projectDir/schemas") } }
Room Gradle eklentisi kullanılırken schemaDirectory
ayarlanması gerekir. Bu, Room derleyicisini ve çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) şema dosyalarını schemas/flavorOneDebug/com.package.MyDatabase/1.json
gibi özelleştirilmiş klasörlere verecek şekilde yapılandırır. Bu dosyalar, doğrulama ve otomatik taşıma işlemleri için kullanılmak üzere depoya eklenmelidir.
Bazı seçenekler, Room derleyicisi tarafından desteklenmesine rağmen Room Gradle eklentisinin tüm sürümlerinde yapılandırılamaz. Aşağıdaki tabloda her seçenek listelenmiş ve room
uzantısını kullanarak bu seçeneği yapılandırma desteğini ekleyen Room Gradle eklentisinin sürümü gösterilmiştir. Sürümünüz daha eskiyse veya bu seçenek henüz desteklenmediyse bunun yerine not ekleme işlemci seçeneklerini kullanabilirsiniz.
Option | Sürümden itibaren |
---|---|
room.schemaLocation (zorunlu) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
Ek açıklama işleyici seçeneklerini kullanma
Room Gradle eklentisini kullanmıyorsanız veya istediğiniz seçenek, eklentinin sürümünüz tarafından desteklenmiyorsa Derleme bağımlılıkları ekleme bölümünde açıklandığı gibi ek açıklama işleyici seçeneklerini kullanarak Room'u yapılandırabilirsiniz. Not ekleme seçeneklerini nasıl belirteceğiniz, Room için KSP mi yoksa KAPT mi kullandığınıza bağlıdır.
Groovy
// For KSP ksp { arg("option_name", "option_value") // other otions... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += [ "option_name":"option_value", // other options... ] } } } }
Kotlin
// For KSP ksp { arg("option_name", "option_value") // other options... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += mapOf( "option_name" to "option_value", // other options... ) } } } }
room.schemaLocation
, ilkel bir tür değil, dizindir. Bu nedenle, Gradle'ın güncelleme kontrolleri yaparken bu dizin hakkında bilgi sahibi olması için bu seçeneği eklerken CommandLineArgumentsProvider
kullanılması gerekir.
Room veritabanınızı taşıma, şema konumunu sağlayan CommandLineArgumentsProvider
'nin tam bir uygulamasını gösterir.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 2.7
Sürüm 2.7.0-alpha12
11 Aralık 2024
androidx.room:room-*:2.7.0-alpha12
yayınlanır. 2.7.0-alpha12 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Room'un geçersiz kılma takibi için bellek içi tablo kullanıp kullanmayacağını yapılandırmak üzere deneysel API
RoomDatabase.Builder.setInMemoryTrackingMode()
'ü ekleyin. (I2a9b2, b/185414040)
Hata Düzeltmeleri
- Yıkıcı taşıma işlemleri artık görünümlerin yeniden oluşturulmasını sağlamak için görünümleri bırakır. Böylece, allowDestructiveMigrationForAllTables
AÇIK (KMP varsayılan) olduğunda davranış, KAPALI olduğunda mevcut davranışla uyumlu hale getirilir. (0a3e83, b/381518941)
Sürüm 2.7.0-alpha11
30 Ekim 2024
androidx.room:room-*:2.7.0-alpha11
yayınlanır. 2.7.0-alpha11 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Yeni eklenen
convertRows()
yöntem imzasını, oda araması içinRawRoomQuery
alan bir askıya alma işlevi olacak şekilde tekrar ziyaret edin. (Ie57b5, b/369136627)
Hata Düzeltmeleri
@Relation
ile birliktePagingSource
kullanıldığında geçersiz kod oluşturulmasına neden olan oda sayfalama sorunu düzeltildi.
Sürüm 2.7.0-alpha10
16 Ekim 2024
androidx.room:room-*:2.7.0-alpha10
yayınlanır. 2.7.0-alpha10 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Android ve JVM dışı platformlarda
ByteBuffer
ile ilişkileri desteklemek için dahiliByteArrayWrapper
sınıfı oluşturun. (I75543, b/367205685) - Bir sütunun veri türünü almak için çeşitli
SQLITE_DATA_*
sonuç sabitleriyle birlikteSQLiteStatement.getColumnType()
ekleyin. (I1985c, b/369636251)
Sürüm 2.7.0-alpha09
2 Ekim 2024
androidx.room:room-*:2.7.0-alpha09
yayınlanır. 2.7.0-alpha09 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Okuma bağlantısında yazma işlemi başlatılması nedeniyle
room-paging
KMP uygulamasıyla ilgiliError code: 8, message: attempt to write a readonly database
'e neden olan bir sorun düzeltildi. (b/368380988)
Sürüm 2.7.0-alpha08
18 Eylül 2024
androidx.room:room-*:2.7.0-alpha08
yayınlanır. 2.7.0-alpha08 sürümü bu taahhütleri içerir.
Yeni Özellikler
room-paging
yapıları, KMP uyumlu olacak şekilde taşındı. (Ib8756, b/339934824)invalidationTrackerFlow()
API'si,InvalidationTracker.createFlow()
olarak birinci taraf API olarak yaygınlaştırıldı ve artık KMP projelerindeki Android dışı kaynak kümeleri için kullanılabilir. (I1fbfa, (I8fb29), b/329291639, b/329315924)
API Değişiklikleri
Cursor
artık Room'un KMP sürümünde kullanılacak doğru bir genel terim olmadığından, Room'daCursor
kelimesinin kullanıldığı tüm uyarılar ve hata mesajları kaldırıldı veya değiştirildi. (Id8cd9, b/334087492)
Hata Düzeltmeleri
- Room KMP'nin, JVM dışı platformlar için
UUID
kullanarak kod yayınlamaya çalışması sorunu düzeltildi. (b/362994709) - Room Gradle eklentisinde, Compose Multiplatform ile bir KMP projesinde kullanıldığında "Dönüşüm için kilitlendikten sonra yapılandırma özelliklerini değiştiremezsiniz" gibi bir hataya neden olan sorun düzeltildi. (b/343408758)
Sürüm 2.7.0-alpha07
21 Ağustos 2024
androidx.room:room-*:2.7.0-alpha07
yayınlanır. 2.7.0-alpha07 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Room Gradle eklentisi artık dışa aktarılan şemaları
MigrationTestHelper
tarafından kullanılabilmesi için Android Enstrümantasyon Testi kaynak kaynaklarına otomatik olarak ekler.
Hata Düzeltmeleri
- "expect" beyanında da geçersiz kılınmışsa
RoomDatabaseConstructor
işlevinin oluşturulan "actual" değerindeinitialize
işlevinde "actual" değiştiricisinin eksik olmasıyla ilgili bir sorun düzeltildi. (359631627) RoomDatabaseConstructor
için oluşturulan "actual" değerinin "expect" beyanının görünürlüğüyle eşleşmemesiyle ilgili sorun düzeltildi. (358138953)
Sürüm 2.7.0-alpha06
7 Ağustos 2024
androidx.room:room-*:2.7.0-alpha06
yayınlanır. 2.7.0-alpha06 sürümü bu taahhütleri içerir.
API Değişiklikleri
- KMP projesinde bir
RoomDatabase
için örnek oluşturma ayarını değiştirin.
Kotlin 2.0 derleme modeli nedeniyle, instantiateImpl()
adlı oluşturulacak bir işleve referans verme stratejisi artık geçerli değildir. instantiateImpl()
stratejisinin yerini alan iki yeni API (@ConstructedBy
ve RoomDatabaseConstructor
) kullanıma sunulmuştur. Yeni strateji şu şekildedir:
RoomDatabaseConstructor
uygulayan bir expect nesnesi tanımlayınexpect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
Nesneyi
@ConstructedBy
kullanarak@Database
beyanı ile bağlayın@Database(...) @ConstructedBy(MyDatabaseCtor::class) // NEW abstract class MyDatabase : RoomDatabase
Fabrika bağımsız değişkeni iletmeden yeni bir veritabanı örneği oluşturma
fun createNewDatabase(path: String) = Room.databaseBuilder<AppDatabase>(name = path) .setDriver(BundledSQLiteDriver()) .setQueryCoroutineContext(Dispatchers.IO) .build()
b/316978491, b/338446862 ve b/342905180 ile ilgili düzeltmeler
- Ham SQL dizesini tutma ve bağımsız değişkenleri bir ifadeye bağlama işlevi açısından
SupportSQLiteQuery
'ye benzerRoomRawQuery
adlı yeni bir API ekleyerek Room KMP'de@RawQuery
desteği.@RawQuery
ek açıklamalı işlevler artık tek parametreleri olarakRoomRawQuery
değerini kabul edebilir. (Iea844, b/330586815) setQueryCallback()
içinCoroutineContext
kabul eden bir aşırı yükleme ekleyin. (Id66ff, b/309996304)linuxArm64
Kotlin çok platformlu hedefleri için destek eklendi (I139d3, b/338268719)
Hata Düzeltmeleri
- Room'un Android dışı hedeflerde yanlışlıkla
recursiveFetchArrayMap
çağrısı oluşturmasına neden olan sorun düzeltildi. (710c36, b/352482325) - Room'un, KMP projesinde bazen "Bağlantı kurma girişimi zaman aşımına uğradı" hatası vermesine neden olan sorun düzeltildi. (fa72d0, b/347737870)
- Otomatik taşıma işlemlerinde, diğer tablolar şemalarını yeni yabancı anahtarlara uygun olacak şekilde değiştirmeden önce yabancı anahtarları çok erken kontrol eden bir sorun düzeltildi. (7672c0, b/352085724)
Sürüm 2.7.0-alpha05
10 Temmuz 2024
androidx.room:room-*:2.7.0-alpha05
yayınlanır. 2.7.0-alpha05 sürümü bu taahhütleri içerir.
API Değişiklikleri
SQLiteKt
,SQLite
olarak veBundledSQLiteKt
,BundledSQLite
olarak yeniden adlandırıldı. (I8b501)
Hata Düzeltmeleri
AndroidSQLiteDriver
kullanırkenRoomDatabase
'ün kilitlenmesine veya bağlantı zaman aşımı nedeniyle hataya neden olan hata düzeltildi.
Sürüm 2.7.0-alpha04
12 Haziran 2024
androidx.room:room-*:2.7.0-alpha04
yayınlanır. 2.7.0-alpha04 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- DAO'da birden çok harita döndürme türü tanımlandığında Room'un ek açıklama işleyicisinin uyumsuz KMP kodu oluşturmasına neden olan sorun düzeltildi. (b/340983093)
@Database
notu eklenmiş sınıfın paketi yoksa Room'un oluşturulan veritabanı uygulamasını bulamadığı sorun düzeltildi. (b/342097292)- Otomatik kapatma ve çoklu örnek geçersiz kılma özelliklerinin etkinleştirilmesinin, veritabanı boş olduğu için otomatik olarak kapatıldığında bazen
ConcurrentModificationException
hatasına neden olduğu sorun düzeltildi.
Sürüm 2.7.0-alpha03
29 Mayıs 2024
androidx.room:room-*:2.7.0-alpha03
yayınlanır. 2.7.0-alpha03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Kotlin 2.0 ve KSP 2.0 ile ilgili çeşitli sorunlar düzeltildi. KSP 2 desteğine sahip Kotlin 2.0'ın henüz tamamlanmadığını ve ekibin yeni derleyicideki çeşitli API'ler ve davranış değişiklikleri üzerinde çalıştığını unutmayın. (b/314151707)
Sürüm 2.7.0-alpha02
14 Mayıs 2024
androidx.room:room-*:2.7.0-alpha02
yayınlanır. 2.7.0-alpha02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Çeşitli KSP sorunları düzeltildi.
Sürüm 2.7.0-alpha01
1 Mayıs 2024
androidx.room:room-*:2.7.0-alpha01
yayınlanır. 2.7.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Kotlin Çok Platformlu (KMP) Desteği: Bu sürümde Room, Kotlin Çok Platformlu (KMP) kitaplığı olacak şekilde yeniden yapılandırıldı. Yapılacak bazı çalışmalar olsa da bu sürümde, işlevlerin çoğunun "ortaklaştırıldığı" (çoklu platformlu hale getirildiği) yeni bir Room sürümü kullanıma sunulmaktadır. Şu anda desteklenen platformlar Android, iOS, JVM (masaüstü), yerel Mac ve yerel Linux'tur. Yeni desteklenen platformlarda eksik olan işlevler, sonraki Room sürümlerinde "tam özellikli" hale getirilecektir.
Room KMP'yi kullanmaya başlama hakkında daha fazla bilgi için lütfen Room KMP'nin resmi belgelerine bakın.
- İşleme KSP üzerinden yapılıyorsa KSP'de Kotlin Kodu Oluşturma varsayılan olarak AÇIK durumdadır. KAPT veya yalnızca Java projeleri için Room, Java kaynaklarını oluşturmaya devam eder.
API Değişiklikleri
- Oluşturulan
RoomDatabase
uygulamasını örneklendirirken yansıma kullanılmasını önlemek için Room tarafından oluşturulan bir işlevle kullanılması amaçlanan bir lambda parametresi alanRoom.databaseBuilder()
aşırı yüklemesi eklendi. Örnek kullanım:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
CoroutineContext
içeren bir oda yapılandırmaya yönelik bir API, oluşturucuya eklendi:RoomDatabase.Builder.setQueryCoroutineContext
. BirRoomDatabase
'ün yalnızcasetQueryExecutor
kullanan yürütücülerle veya bir Coroutine bağlamıyla yapılandırabileceğini, ancak ikisini birden kullanamayacağını unutmayın.- Room'u
SQLite
sürücüsüyle yapılandırma API'si eklendi:RoomDatabase.Builder.setDriver()
.SQLite
Sürücü API'si hakkında daha fazla bilgi için SQLite KMP belgelerine bakın. - Sürücü API'lerinden temel
SQLiteConnection
'e erişmek için API'ler eklendi:RoomDatabase.useReaderConnection
veRoomDatabase.useWriterConnection
. - Varios Room ile ilgili geri çağırma çağrılarının artık
SupportSQLiteDatabase
yerineSQLiteConnection
alan aşırı yüklenmiş bir sürümü var. Bunlar, KMP projesine taşınırken geçersiz kılınmak üzere tasarlanmıştır. Android uygulamasındaki Room kullanımlarını ortak bir KMP modülüne taşıma hakkında daha fazla bilgi için taşıma rehberine bakın. Geri aramalar:Migration.migrate(SQLiteConnection)
AutoMigrationSpec.onPostMigrate(SQLiteConnection)
RoomDatabase.Callback.onCreate(SQLiteConnection)
RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
RoomDatabase.Callback.onOpen(SQLiteConnection)
- KTX yapı
androidx.room:room-ktx
, tüm API'leriyle birlikteandroidx.room:room-runtime
ile birleştirildi. Yapı artık boş. Lütfen bu paketi bağımlılık listenizden kaldırın.
Sürüm 2.6
Sürüm 2.6.1
29 Kasım 2023
androidx.room:room-*:2.6.1
yayınlanır. 2.6.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Oluşturulan kodda,
EntityCursorConverter
içindeki çift sütunların varsayılan değerinin 0,0 yerine 0 olarak ayarlanması sorunu düzeltildi. Ayrıca, kayan nokta türü sütunlar için benzer bir uç durumla ilgili olası bir düzeltme de eklendi. (Id75f5, b/304584179) PagingSource
yüklemelerinden atılan istisnalar artık Throwable içerenLoadResult.Error
LoadStateUpdate
olarak dağıtılacak. Bu hata durumuPagingDataAdapter.loadStateFlow(Views)
veyaLazyPagingItems.loadState(Compose)
üzerinden gözlemlenebilir. Bu durumun, geçmişte yükleme hatalarının, yüklemeyi tetikleyen dao yöntemi tarafından oluşturulan bir Exception olarak gösterildiği davranış değişikliğini işaret ettiğini unutmayın. (I93887, b/302708983)
2.6.0 sürümü
18 Ekim 2023
androidx.room:room-*:2.6.0
yayınlanır. 2.6.0 sürümü bu taahhütleri içerir.
2.5.0 sürümünden beri yapılan önemli değişiklikler
- Kotlin kod oluşturma (veya "Kotlin CodeGen") özelliği artık Room KSP'de kullanılabilir. (4297ec0). Room'da Kotlin CodeGen'i etkinleştirmek için KSP'deki işlemci seçeneklerinize
room.generateKotlin
seçenek adını ekleyin. KSP için işlemci seçeneklerinin nasıl iletileceği hakkında daha fazla bilgi için KSP dokümanlarına bakın.
Not: Kotlin CodeGen kullanılırken ek kısıtlamalar eklendiğini unutmayın. Kotlin CodeGen'de DAO alıcıları veya DAO sorguları olarak soyut mülklere izin verilmez. Bunun yerine, mülk değerinin değiştirilemez olduğu ve sabit bir depolanmış sonuca sahip olduğu yanlış fikrini önlemek için işlev olarak yeniden yazılmaları beklenir. Eklenen bir diğer kısıtlama da, Kotlin CodeGen için Room'da artık boş koleksiyon döndürme türlerine izin verilmemesidir.
Uyarı: Kotlin CodeGen'i kullanırken projelerinizin boşluk kabul etme durumu açısından daha katı olduğunu fark edebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerinin boş olup olmadığı önemlidir. Java'da ise bu genellikle yoksayılır. Örneğin, "Flow<foo\>" dönüş türünü kullandığınız ve tablonun boş olduğunu varsayalım. Java CodeGen'de bu durum herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de hata alırsınız. Bunu önlemek için, null değerinin yayınlandığı varsayılarak "Flow<foo?\>" kullanmanız gerekir. </foo?\></foo\>
- Room Gradle eklentisinin yeni yapısını
androidx.room
kimliğiyle Room'a ekledik. Bu yapı, Room'da Gradle ek açıklama işleyicisi seçenekleri aracılığıyla şema girişleri ve çıkışları elde etmeyle ilgili mevcut çeşitli sorunları çözer. Daha fazla bilgi için Room 2.6.0-alpha02 sürüm notlarına göz atın. - Oda varlıklarındaki değer sınıfları artık KSP için desteklenmektedir. (4194095)
- DAO işlevlerindeki iç içe yerleştirilmiş harita döndürme türleri artık Room'da destekleniyor. (I13f48, 203008711)
Sürüm 2.6.0-rc01
20 Eylül 2023
androidx.room:room-*:2.6.0-rc01
yayınlanır. 2.6.0-rc01 sürümü bu taahhütleri içerir.
Sürüm 2.6.0-beta01
23 Ağustos 2023
androidx.room:room-*:2.6.0-beta01
yayınlanır. 2.6.0-beta01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Bir ekleme sırasında
2067 SQLITE_CONSTRAINT_UNIQUE
istisnası atıldığında karşılaşılan özel durumSQLite
istisnası ele alınırken ekleme işlemi bir güncelleme gerçekleştirmelidir. (If2849, b/243039555)
Sürüm 2.6.0-alpha03
9 Ağustos 2023
androidx.room:room-*:2.6.0-alpha03
yayınlanır. 2.6.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
- DAO işlevlerindeki iç içe yerleştirilmiş harita döndürme türleri artık Room'da destekleniyor. (I13f48, 203008711)
API Değişiklikleri
- Artık desteği sonlandırılan
@MapInfo
yerine@MapColumn
adlı yeni bir tür ek açıklaması oluşturuldu. Bir@MapInfo
ek açıklamalarında sağlanan her sütun adı (keyColumnName
,valueColumnName
veya her ikisi) için yalnızcacolumnName
içeren bir@MapColumn
ek açıklaması belirtmeniz ve DAO işlevinin döndürülen türündeki referans verilen belirli tür bağımsız değişkeninde (Map'in anahtarı veya değeri) ek açıklamayı kullanmanız gerekir. Bunun nedeni,@MapColumn
ek açıklamasının@MapInfo
gibi işlevin kendisinde değil, doğrudan bir DAO işlevinin döndürülen türündeki tür bağımsız değişkeninde kullanılmasıdır. Daha fazla bilgi için lütfen@MapColumn
dokümanlarına bakın. (Ib0305, b/203008711) - API dosyaları, uyumluluğu engellemeyle ilgili not eklemek için güncellendi (I8e87a, b/287516207)
- Room Gradle eklentisi API'leri, her zaman varyant başına yapılandırma gerektirmeyecek şekilde güncellendi. Bu sayede eklenti, birden fazla dizin oluşturmadan tüm varyantlar için global bir konumu kabul edebilir. Böylece daha sorunsuz taşımalar sağlar. Ayrıca, eklentinin avantajlarını (yeniden üretilebilir ve önbelleğe alınabilir derlemeler) korurken lezzetleri veya derleme türü şemalarını manuel olarak yapılandıracak kadar esnektir. (I09d6f, b/278266663)
Hata Düzeltmeleri
QueryInterceptorStatement
'teki olası bellek sızıntısı güvenlik açığı düzeltildi. (I193d1)QueryInterceptorDatabase execSQL()
işlevindeki hatalı davranış düzeltildi. (Iefdc8)
Sürüm 2.6.0-alpha02
21 Haziran 2023
androidx.room:room-*:2.6.0-alpha02
yayınlanır. 2.6.0-alpha02 sürümü bu taahhütleri içerir.
Room Gradle Eklentisi
Bu yeni sürüm, Room Gradle eklentisi için androidx.room
kimlikli yeni bir yapı içerir. Bu yapı, Room'da Gradle ek açıklama işleyici seçenekleri aracılığıyla şema girişleri ve çıkışları elde etmeyle ilgili mevcut çeşitli sorunları çözer. Room Gradle eklentisi, projeyi otomatik taşıma işlemleri için kullanılan ve derleme görevlerinin çıktısı olan oluşturulan şemaların, yeniden üretilebilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru şekilde yapılandırıldığı şekilde yapılandırır. Bu eklenti, temel şema konumunu yapılandırmak için bir DSL sunar:
room {
schemaDirectory("$projectDir/schemas/")
}
Ardından eklenti, Room derleyicisini ve çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) şema dosyalarını schemas/flavorOneDebug/com.package.MyDatabase/1.json
gibi özelleştirilmiş klasörlere verecek şekilde yapılandırır. Bu dosyalar, doğrulama ve otomatik taşıma işlemleri için kullanılmak üzere depoya kaydedilir. Ek açıklama işleyici seçenekleri yerine eklentiyi kullanmaya geçiş yaptıktan sonra mevcut şema dosyalarının, eklenti tarafından oluşturulan oluşturulan lezzet dizinlerine kopyalanması gerekir. Bu, manuel olarak yapılması gereken tek seferlik bir taşıma işlemidir. developers.android.com adresindeki şema dokümanları, geri bildirimler ele alındıktan ve eklenti kararlı hale geldikten sonra güncellenecektir. Lütfen tekrar deneyin.
API Değişiklikleri
RoomDatabase.QueryCallback
, SAM dönüşüm kullanımlarına izin vermek için işlevsel bir arayüz olarak tanımlanmıştır. (Iab8ea, b/281008549)
Hata Düzeltmeleri
- Room kaynaklarının Java'dan Kotlin'e taşınmasından sonra Robolectric'te veritabanı oluşturulurken ortaya çıkan sorunu çözme. (Ic053c, b/274924903)
Sürüm 2.6.0-alpha01
22 Mart 2023
androidx.room:room-*:2.6.0-alpha01
yayınlanır. 2.6.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- KSP için Room'da değer sınıflarını destekleme. Room, artık varlıklarda değer sınıflarını destekleyebilir. (4194095)
- Kotlin kod oluşturma(veya "Kotlin CodeGen") artık Room'da etkinleştirilebilir (4297ec0). Room'da Kotlin CodeGen'i etkinleştirmek için KSP'deki işlemci seçeneklerinize
room.generateKotlin
seçenek adını ekleyin. KSP için işlemci seçeneklerinin nasıl iletileceği hakkında daha fazla bilgi için KSP dokümanlarına bakın.
Not: Kotlin CodeGen kullanılırken ek kısıtlamalar eklendiğini unutmayın. Kotlin CodeGen'de DAO alıcıları veya DAO sorguları olarak soyut mülklere izin verilmez. Bunun yerine, mülk değerinin değiştirilemez olduğu ve sabit bir depolanmış sonuca sahip olduğu yanlış fikrini önlemek için işlev olarak yeniden yazılmaları beklenir. Eklenen bir diğer kısıtlama da, Kotlin CodeGen için Room'da artık boş koleksiyon döndürme türlerine izin verilmemesidir.
Uyarı: Kotlin CodeGen'i kullanırken projelerinizin boşluk kabul etme durumu açısından daha katı olduğunu fark edebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerinin boş olup olmadığı önemlidir. Java'da ise bu genellikle yoksayılır. Örneğin, "Flow<foo\>" dönüş türünü kullandığınız ve tablonun boş olduğunu varsayalım. Java CodeGen'de bu durum herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de hata alırsınız. Bunu önlemek için, null değerinin yayınlandığı varsayılarak "Flow<foo?\>" kullanmanız gerekir. </foo?\></foo\>
API Değişiklikleri
- DAO yöntemi dönüş türlerinde boş değer atanabilir koleksiyonların anlamsız kullanımına karşı koruma (I777dc, b/253271782, b/259426907)
- İzleyici geçersiz kılma değişikliklerini yayınlayan bir akış oluşturmak için bir API ekleyin. API, veritabanı değişikliklerine tepki vermesi gereken akışlar oluşturmak için kullanışlıdır. (I8c790, b/252899305)
Hata Düzeltmeleri
- Kotlin kod oluşturma işleminde soyut mülklerin DAO alıcıları veya DAO sorguları olarak kullanılmasına izin verilmemelidir. Bunun yerine, mülk değerinin değiştirilemez ve sabit bir depolanmış sonuca sahip olduğu yanlış fikrini önlemek için işlev olarak yeniden yazılmalıdırlar. (If6a13, b/127483380, b/257967987)
Sürüm 2.5.2
Sürüm 2.5.2
21 Haziran 2023
androidx.room:room-*:2.5.2
yayınlanır. 2.5.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- kotlinx-metadata-jvm ile ilgili bir uyumsuzluk sorunu düzeltildi. (386d5c)
- Room'un Robolectric testinde kullanıldığı sırada hata vermesine neden olan sorun düzeltildi. (f79bea, b/274924903)
Sürüm 2.5.1
Sürüm 2.5.1
22 Mart 2023
androidx.room:room-*:2.5.1
yayınlanır. 2.5.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Veritabanı zaten açıksa
FrameworkSQLiteHelper
dizinindeki veritabanı üst dizinini kontrol etmekten kaçının. (5de86b8) - Veritabanının açık olup olmadığını kontrol ederken
isOpenInternal
işaretini kullanın. (e91fb35) - Odanın
acquireTransactionThread()
özelliğinde yeniden giren durumunu daha iyi işleme özelliği artık kullanılabilir. (219f98b). Room, askıya alınan bir işlem sırasında işlem yürütücüden bir iş parçacığı kullanır, bu iş parçacığında bir etkinlik döngüsü başlatır ve askıya alınan veritabanı işlemlerini bu iş parçacığına gönderir. Böylece tüm işlemler, işlem coroutine'sinde kapsanabilir. İşlem mesaj dizisinin genellikle işlemi başlatan mesaj dizisinden farklı olması beklenir ancak bazı durumlarda aynı olabilir. Bu tür yeniden giriş durumlarını işlemek içinwithTransaction()
, artık bir kontrol işine ihtiyaç duymayacak şekilde yeniden yapılandırıldı. Bunun yerine, askıya alma işlemi bloğunu işlem iş akışındakirunBlocking
içinden yürütecek.
2.5.0 sürümü
2.5.0 sürümü
22 Şubat 2023
androidx.room:room-paging-guava:2.5.0
, androidx.room:room-paging-rxjava2:2.5.0
ve androidx.room:room-paging-rxjava3:2.5.0
yayınlandı. 2.5.0 sürümü bu taahhütleri içerir.
2.5.0 sürümü
11 Ocak 2023
androidx.room:room-*:2.5.0
yayınlanır. 2.5.0 sürümü bu taahhütleri içerir.
2.4.0 sürümünden beri yapılan önemli değişiklikler
room-runtime
kaynaklarının tümü Java'dan Kotlin'e dönüştürülmüştür. Kodunuz Kotlin ise kitaplığın Kotlin'e dönüştürülmesi nedeniyle kaynak uyumsuzluğu sorunlarıyla karşılaşabileceğinizi unutmayın. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği,InvalidationTracker
'te artıkMutableSet
yerineSet
türüne sahip bir parametre olması içinObserver
'deonInvalidate()
'ü tanımlamanız gerektiğidir. Ayrıca, belirli alıcı yöntemleri Kotlin dosyalarında mülk erişim söz dizimini gerektiren mülklere dönüştürüldü. Önemli uyumsuzluk varsa lütfen hata kaydı oluşturun.- Benzersizlik sorunu olmadığında öğe eklemeye veya sorun varsa öğeyi güncellemeye çalışan yeni bir kısayol notu
@Upsert
eklendi. (I7aaab, b/241964353) - Oda sayfalama desteği için yeni oda sayfalama yapıları
room-paging-rxjava2
,room-paging-rxjava3
veroom-paging-guava
eklendi. @MapInfo
(Icc4b5) sürümünde anlam karışıklığını önlemek için anahtar ve değer tablosu adları sağlayan API'ler eklendi
Sürüm 2.5.0-rc01
7 Aralık 2022
androidx.room:room-*:2.5.0-rc01
yayınlanır. 2.5.0-rc01 sürümü bu taahhütleri içerir.
- Bu sürüm,
2.5.0-beta02
ile aynıdır.
Sürüm 2.5.0-beta02
9 Kasım 2022
androidx.room:room-*:2.5.0-beta02
yayınlanır. 2.5.0-beta02 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Sorgu bağımsız değişkenlerini değişmez (
Array<Any?>
) olandan değişken (Array<out Any?>
) olana geçiren çeşitli API'leri, Java'nın dizi davranışıyla eşleşecek şekilde düzeltin. (b/253531073)
Sürüm 2.5.0-beta01
5 Ekim 2022
androidx.room:room-*:2.5.0-beta01
yayınlanır. 2.5.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
@Upsert
'ü destekleyen minimum sürümü API 16 olarak kısıtlayın. Bunun nedeni, eski API'lerde birincil anahtar kısıtlaması çakışmasının tanımlanamamasıdır. (I5f67f, b/243039555)
Hata Düzeltmeleri
- Gölge tabloların şema
.json
dosyalarına yanlış şekilde dışa aktarılması ve bu dosyaların bozulmasına neden olan sorun düzeltildi. (I4f83b, b/246751839)
Sürüm 2.5.0-alpha03
24 Ağustos 2022
androidx.room:room-*:2.5.0-alpha03
yayınlanır. 2.5.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Benzersizlik sorunu olmadığında öğe eklemeye veya sorun varsa öğeyi güncellemeye çalışan yeni bir kısayol notu
@Upsert
eklendi. (I7aaab, b/241964353)
Hata Düzeltmeleri
- Otomatik taşıma yabancı anahtar kısıtlaması kontrolü sırasında Room artık
IllegalStateException
yerineSQLiteConstraintException
atar. (I328dd) getOpenHelper
,getQueryExecutor
vegetTransactionExecutor
'nin getter / özellikleri için Kotlin kaynağıyla uyumlu olmayan bir değişikliği düzeltin. (Iad0ac)
Sürüm 2.5.0-alpha02
1 Haziran 2022
androidx.room:room-*:2.5.0-alpha02
yayınlanır. 2.5.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Oda çağrısı desteği için yeni
room-paging
yapılarıroom-paging-rxjava2
,room-paging-rxjava3
veroom-paging-guava
eklendi.(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/203666906)
API Değişiklikleri
room-runtime
'ün tamamı Java'dan Kotlin'e dönüştürüldü. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25, b/206859668)Not: Kitaplığın Kotlin'e dönüştürülmesi nedeniyle kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'deyse ve Room'un eski sürümünü çağırıyorduysa bu durumların yeni sürüm tarafından ele alınması gerekir. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği,
InvalidationTracker
'te artıkMutableSet
yerineSet
türüne sahip bir parametre olması içinObserver
'deonInvalidate()
'ü tanımlamanız gerektiğidir.@MapInfo
(Icc4b5) sürümünde anlam karışıklığını önlemek için anahtar ve değer tablosu adları sağlayan API'ler eklendi- Mülk alıcılarında
@Ignore
değerine yeniden izin vermek için bir kaynak uyumluluğu sorunu düzeltildi. (Ifc2fb)
Hata Düzeltmeleri
- Yinelenen sütun çözümü için sezgisel algoritma. Room artık çok haritalı sorgulardaki belirsiz sütunları çözmeye çalışacak. Bu sayede, aynı ada sahip tablolar içeren JOIN'lerin bir sonuç veri nesnesiyle doğru şekilde eşlenmesi sağlanır. (I4b444, b/201306012, b/212279118)
Sürüm 2.5.0-alpha01
23 Şubat 2022
androidx.room:room-*:2.5.0-alpha01
yayınlanır. 2.5.0-alpha01 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Kotlin kaynaklarında Room
@IntDef
kullanımının zorunlu kılınmaması sorunu düzeltildi. (I75f41, b/217951311) - Mülk alıcılarında
@Query
değerine yeniden izin vermek için bir kaynak uyumluluğu sorunu düzeltildi. (I0a09b) - room-common, Java'dan Kotlin'e dönüştürüldü. (I69c48, b/206858235)
Not: Kitaplık Kotlin'e dönüştürülürken bazı özellikler tamamlayıcı nesnelere taşındığı için kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'deyse ve Room'un eski sürümünü çağırıyorduysa yeni sürüm bu mülklere erişirken ".Companion" son ekine ihtiyaç duyar.
- Oda taşıma özelliği Java'dan Kotlin'e dönüştürüldü. (I2724b, b/206858622)
room-runtime
klasöründekipaging
ile ilgili dosyalar Java'dan Kotlin'e dönüştürüldü. (I82fc8, b/206859668)- Çok işlemli ilk kez veritabanı oluşturma ve taşıma işlemlerini korumak için FrameworkSQLite* düzeyinde çok işlemli kilit ve kullanım API'si eklendi. (Ied267, b/193182592)
Hata Düzeltmeleri
- Kotlin kaynaklarında dahili mülkler için destek eklendi.
Bu, Room'da işlevleri alıcı/ayarlayıcı olarak mülklerle eşleştirirken işlevlerin kaynak adını kullanacağı küçük bir davranış değişikliğidir (eskiden işlevin JVM adını kullanıyordu ve bu ad dahili işlevler/mülkler için farklıydı).
Geter/setter'leri özel mülklerle eşleştirmek için özel
@JvmName
ek açıklamaları kullanıyorsanız lütfen güncellemeden sonra oluşturulan kodu tekrar kontrol edin (If6531, b/205289020)
Sürüm 2.4.3
Sürüm 2.4.3
27 Temmuz 2022
androidx.room:room-*:2.4.3
yayınlanır. 2.4.3 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Room'un Kotlin 1.7'de askıya alma işlevlerini tanımamasına neden olan bir sorun düzeltildi (b/236612358)
Sürüm 2.4.2
Sürüm 2.4.2
23 Şubat 2022
androidx.room:room-*:2.4.2
yayınlanır. 2.4.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
-Xjvm-default=all
veya eşdeğeri ile derleme nedeniyle varsayılan bir arayüz yöntemi oluşturan bir gövdeye sahip bir Dao@Transaction
askıya alma işlevi için kod oluşturma sorunu düzeltildi. (Ia4ce5)- Room'un
Array<ByteArray>
dönüş türü sorgu yöntemi için kod oluşturduğu bir hatayı düzeltme (If086e, b/213789489)
Sürüm 2.4.1
Sürüm 2.4.1
12 Ocak 2022
androidx.room:room-*:2.4.1
yayınlanır. 2.4.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Kotlin kaynaklarında dahili mülkler için destek eklendi.
Bu, Room'da işlevleri alıcı/ayarlayıcı olarak mülklerle eşleştirirken işlevlerin kaynak adını kullanacağı küçük bir davranış değişikliğidir (eskiden işlevin JVM adını kullanıyordu ve bu ad dahili işlevler/mülkler için farklıydı).
Geter/setter'leri özel mülklerle eşleştirmek için özel
@JvmName
ek açıklamaları kullanıyorsanız lütfen güncellemeden sonra oluşturulan kodu tekrar kontrol edin (If6531, b/205289020)
Sürüm 2.4.0
Sürüm 2.4.0
15 Aralık 2021
androidx.room:room-*:2.4.0
yayınlanır. 2.4.0 sürümü bu taahhütleri içerir.
2.3.0 sürümünden beri yapılan önemli değişiklikler
- Otomatik Taşımalar: Room artık şemalar dışa aktarıldığı sürece taşıma işlemlerini otomatik olarak oluşturmak için bir API sunmaktadır. Room'a otomatik taşıma işlemi oluşturması gerektiğini bildirmek için yeni bir mülk
@Database#autoMigrations
kullanılabilir. Bu mülk, otomatik olarak taşınacak kaynak ve hedef sürümleri tanımlamak için kullanılır. Room, tablolar ve sütunların yeniden adlandırılması veya silinmesiyle ilgili ek bilgilere ihtiyaç duyduğunda@AutoMigration
ek açıklaması, bu tür girişleri içeren bir spesifikasyon sınıfı tanımlayabilir. Daha fazla ayrıntı için@AutoMigration
belgelerini inceleyin. - Otomatik Taşımalarda Bağımlılık Enjeksiyonu:
@ProvidedAutoMigrationSpec
,AutoMigrationSpec
'ınRoomDatabase.Builder#addAutoMigrationSpec()
aracılığıyla çalışma zamanında sağlanacağını beyan etmek için kullanılan yeni bir API'dir. Bu sayede, karmaşık bağımlılıklara ihtiyaç duyduğunda bağımlılık ekleme çerçevesi bu tür özellikleri sağlayabilir. - Otomatik Taşımalar için Taşıma Testi Yardımcı Programı Desteği: Room'un
MigrationTestHelper
, test edilen veritabanı sınıfını alan yeni bir kurucu API sağlayarak otomatik taşımaları desteklemek için güncellendi. Bu sayede yardımcı,runMigrationsAndValidate
sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak ekleyebilir. - Oda çağrısı desteği:
androidx.room:room-paging
sürümü yayınlandı. Bu sürüm,androidx.paging.PagingSource
döndüren oda sorguları için yerel Paging 3.0 desteği sağlar. - İlişkisel Sorgu Yöntemleri: Room artık JOIN ifadeleri için yararlı olan çok harita döndürme türü
@Dao
yöntemlerini desteklemektedir. Desteklenen çoklu harita türleriMap
,SparseArray
,LongSparseArray
ve Guava'nınImmutableMap
,ImmutableSetMultimap
veImmutableListMultimap
türleridir.
Sürüm 2.4.0-rc01
1 Aralık 2021
androidx.room:room-*:2.4.0-rc01
yayınlanır. 2.4.0-rc01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Kotlin 1.6'yı desteklemek için Room'un KSP bağımlılığını
1.6.0-1.0.1
olarak güncelleyin
Sürüm 2.4.0-beta02
17 Kasım 2021
androidx.room:room-*:2.4.0-beta02
yayınlanır. 2.4.0-beta02 sürümü bu taahhütleri içerir.
Yeni Özellikler
- @MapInfo'da SparseArray ve LongSparseArray desteğini ekledik. (Ic91a2b/138910317)
Hata Düzeltmeleri
- Türlerdeki boşluk bilgisini dikkate alan yeni bir TypeConverter analizörü ekledik. Bu bilgiler yalnızca KSP'de kullanılabildiğinden varsayılan olarak yalnızca KSP'de etkindir. Bu özellik herhangi bir soruna neden olursa ek açıklama işleyiciye room.useNullAwareTypeAnalysis=false parametresini göndererek özelliği devre dışı bırakabilirsiniz. Böyle bir durumda, bu işaret gelecekte kaldırılacağından lütfen hata bildirin. Bu yeni TypeConverter analiz aracında, yeni analiz aracının bunları null kontrolüyle sarmalayabilmesi nedeniyle yalnızca null olmayan alıcı TypeConverter'lar sağlanmalıdır. Bu değişikliğin, not işlemcisi olarak KAPT veya Java kullanan (KSP'nin aksine) ve türlerde boşluk bilgisi bulunmayan kullanıcılar üzerinde herhangi bir etkisi olmadığını unutmayın. (Ia88f9, b/193437407)
- Bir FTS öğesi ICU tokenizörünü kullanacağını beyan ettiğinde Room'un SQL hatasıyla derlenemez hale gelmesine yol açan hata düzeltildi. (I00db9, b/201753224)
- Sürümler arasında yerleşik bir öğeye eklenen yeni sütunla ilgili otomatik taşıma işlemlerinde sorun çözüldü. (I5fcb1b/193798291)
- LEFT JOIN sorgularındaki ilişkisel sorgu yöntemi dönüş türleriyle ilgili bir sorunu giderdik. Bu değişikliklerle birlikte, 1-çok eşlemenin bulunduğu durumlarda, bir anahtar için döndürülen koleksiyon, imleçte bulunmayan geçersiz değer nesnesini içermez. Geçerli bir değer bulunamazsa anahtar boş bir koleksiyonla eşlenir. (Id5552b/201946438)
- SQLite anahtar kelimelerinin sütun adlarında kod dışına alınamamasıyla ilgili otomatik taşıma sorunu çözüldü. (Idbed4b/197133152)
Sürüm 2.4.0-beta01
13 Ekim 2021
androidx.room:room-*:2.4.0-beta01
yayınlanır. 2.4.0-beta01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Aynı otomatik taşıma işlemindeki başka bir tabloda da aynı ada sahip yeni bir sütun olduğunda otomatik taşıma işlemlerinin yeni sütun eklememesiyle ilgili sorun düzeltildi. (Ia5db5, b/200818663)
- Oda sayfalandırması tarafından oluşturulan PagingSource uygulaması artık
RoomDatabase.Builder
üzerinden iletilenqueryExecutor
değerini kullanır. Bu nedenle, daha önceDispatchers.IO
yerine geçersiz kılınabilir. (Iae259)
Sürüm 2.4.0-alpha05
29 Eylül 2021
androidx.room:room-*:2.4.0-alpha05
yayınlanır. 2.4.0-alpha05 sürümü bu taahhütleri içerir.
Yeni Özellikler
- UUID için yerleşik bir tür dönüştürücü eklendi. (I671e8, b/73132006)
API Değişiklikleri
Geliştiricilerin yerleşik Enum ve UUID dönüştürücüleri devre dışı bırakmasına olanak tanımak için TypeConverters ek açıklamaya yeni bir özellik eklendi. Bu dönüştürücüler varsayılan olarak açıktır ancak belirli bir kapsam veya veritabanının tamamı için devre dışı bırakılabilir. Ayrıntılar için TypeConverters dokümanlarına bakın. (36ae9e, b/195413406)
@MapInfo
ek açıklaması aracılığıyla DAO'lardaki Multimap döndürme türleri için POJO olmayan anahtarlar/değerler desteklenir. (I4d704)
Haritanın anahtar veya değer sütunu tek bir sütundan alındığında @MapInfo
gereklidir. Örneği inceleyin:
@MapInfo(valueColumn = "songCount")
@Query("""
SELECT *, COUNT(mSongId) as songCount
FROM Artist JOIN Song ON Artist.artistName = Song.artist
GROUP BY artistName
""")
fun getArtistAndSongCounts(): Map<Artist, Integer>
- Room ile Paging3 kullanılırken
room-paging
'ü zorunlu bir yapı olarak ayarlayın. (Ieaffe)
Hata Düzeltmeleri
- Sorgu, haritanın anahtarındaki bir sütunun ORDER BY yan tümcesini içerdiğinde çoklu harita sorgularının sonuçlarının doğru şekilde sıralanmaması sorunu düzeltildi. (I6b887)
Harici Katkı
- @Index içinde dizin sırasını belirtmek için yeni API eklendi. Nikita Zhelonkin'e teşekkürler. (I033fc)
Sürüm 2.4.0-alpha04
21 Temmuz 2021
androidx.room:room-*:2.4.0-alpha04
yayınlanır. 2.4.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
Room artık JOIN ifadeleri için yararlı olan çok harita döndürme türleri
@Dao
yöntemlerini destekliyor. Desteklenen çoklu harita türleriMap
ve Guava'nınImmutableMap
,ImmutableSetMultimap
veImmutableListMultimap
türleridir.Aşağıda, çoklu harita sorgularına örnek verilmiştir:
Bire-bir İlişki Haritası
@Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId") fun getSongAndArtist(): Map<Song, Artist>
Bire Çok İlişki Haritası (Standart çoklu harita)
@Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId") fun getArtistAndAlbums(): Map<Artist, List<Album>>
Çoklu harita sonucu,
LiveData
, Rx'inObservable
veya eşzamanlı olmayan işlevlerFlow
gibi desteklenen ayarsız dönüş türlerine de sarılabilir.
Odalarda sesli anons
androidx.room:room-paging
sürümü yayınlandı. Bu sürüm,androidx.paging.PagingSource
döndüren Room sorguları için yerel Paging 3.0 desteği sağlar.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun loadUsers(): PagingSource<Int, User> }
Bu yapı, Room tarafından oluşturulan
androidx.paging.PagingSource
uygulamasını Paging 3.0 API'lerinin üzerine inşa edilmiş bir uygulamayla değiştirir. Yeni PagingSource uygulaması anahtarları farklı şekilde ayrıştırır. Bu nedenle, Room'un PagingSource özelliğine manuel olarak sağlanan tüm anahtarların (Pager'ın kurucusu aracılığıyla iletilen initialKey dahil) bu davranış değişikliğini hesaba katması gerekir. SayfalarKey
'ten yüklenmeye başlar veKey
ilk yüklenen öğe olur. Bu,LoadParams.Refresh.Key
'ün kullanıcının kaydırma konumu olarak değerlendirildiği ve öğelerin hem anahtardan önce hem de sonra yüklendiği mevcut davranıştan farklıdır.Artefakt isteğe bağlıdır ve devre dışı bırakılması durumunda Room 2.3'te kullanıma sunulan Sayfalama 3.0 için mevcut destek kullanılır. Ancak gelecekteki bir sürümde, Sayfalama 3.0 ile Oda kullananlar için bu yapının kullanılması zorunlu hale gelecektir. Özelliği etkinleştirmek için yeni oda sayfalama yapısını sınıf yolunuza ekleyin. Gradle kullanıyorsanız build.gradle dosyanıza aşağıdaki snippet'i ekleyebilirsiniz:
dependency { implementation("androidx.room:room-paging:2.4.0-alpha04") }
Hata Düzeltmeleri
- Otomatik taşıma işlemlerinde yabancı anahtar ihlallerinin ele alınmasıyla ilgili bir sorunu düzeltme. (b/190113935)
Sürüm 2.4.0-alpha03
16 Haziran 2021
androidx.room:room-*:2.4.0-alpha03
yayınlanır. 2.4.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Test altındaki veritabanı sınıfını alan yeni bir kurucu API sağlayarak Room'un
MigrationTestHelper
özelliğini otomatik taşımaları desteklemek için güncelleyin. Bu sayede yardımcı,runMigrationsAndValidate
sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak ekleyebilir.
Hata Düzeltmeleri
Room'un SQLite yerel kitaplığında, Apple'ın M1 çiplerini desteklemeyle ilgili bir sorun düzeltildi. (b/174695268
@Transaction işlevinin döndürme türü bir Flow olduğunda Room'un hata vermediği bir sorun düzeltildi (I56ddd, b/190075899)
Dizinlerle ilgili otomatik taşıma işlemlerinde bir sorun düzeltildi. b/177673291
Bağımlılık Güncellemeleri
- Odanın KSP desteği artık KSP
1.5.10-1.0.0-beta01
'e bağlıdır. (1ecb11, b/160322705)
Sürüm 2.4.0-alpha02
5 Mayıs 2021
androidx.room:room-*:2.4.0-alpha02
yayınlanır. 2.4.0-alpha02 sürümü bu taahhütleri içerir.
API Değişiklikleri
@ProvidedAutoMigrationSpec
,AutoMigrationSpec
öğesinin çalışma zamanındaRoomDatabase.Builder#addAutoMigrationSpec()
aracılığıyla sağlanacağını beyan etmek için kullanılan yeni bir API'dir. Bu sayede, karmaşık bağımlılıklara ihtiyaç duyduğunda bağımlılık ekleme çerçevesi bu tür özellikleri sağlayabilir.
Hata Düzeltmeleri
@DatabaseView
öğelerinin düzgün şekilde yeniden oluşturulmadığı otomatik taşımalarla ilgili sorun düzeltildi.
Harici Katkı
- Odanın
JournalMode.TRUNCATE
özelliğinde,InvalidationTracker
geri çağırma işlevinin bazen geçersiz şekilde, çok geç veya hiç çağrılmamasına neden olan sorun düzeltildi.Uli Bubenheimer | bubenheimer@users.noreply.github.com
(b/154040286) sayesinde
Sürüm 2.4.0-alpha01
21 Nisan 2021
androidx.room:room-*:2.4.0-alpha01
yayınlanır. 2.4.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Otomatik Taşımalar: Room artık şemalar dışa aktarıldığı sürece taşıma işlemlerini otomatik olarak oluşturmak için bir API sunmaktadır. Room'a otomatik taşıma işlemi oluşturması gerektiğini bildirmek için yeni bir mülk
@Database#autoMigrations
kullanılabilir. Bu mülk, otomatik olarak taşınacak kaynak ve hedef sürümleri tanımlamak için kullanılır. Room, tablolar ve sütunların yeniden adlandırılması veya silinmesiyle ilgili ek bilgilere ihtiyaç duyduğunda@AutoMigration
ek açıklaması, bu tür girişleri içeren bir spesifikasyon sınıfı tanımlayabilir. Daha fazla ayrıntı için@AutoMigration
belgelerini inceleyin.
Hata Düzeltmeleri
- Fazla parantez içeren
defaultValue
öğesinin Room'un şema doğrulaması tarafından yanlış şekilde doğrulanması sorunu düzeltildi. b/182284899
Sürüm 2.3.0
Sürüm 2.3.0
21 Nisan 2021
androidx.room:room-*:2.3.0
yayınlanır. 2.3.0 sürümü bu taahhütleri içerir.
2.2.0 sürümünden beri yapılan önemli değişiklikler
- Yerleşik Enum Desteği: Room, artık varsayılan olarak bir Enum to String ve tam tersi tür dönüştürücü kullanır (sağlanmamışsa). Bir enum için zaten bir tür dönüştürücü varsa Room, varsayılan dönüştürücüye kıyasla bu dönüştürücüyü kullanmaya öncelik verir.
- Sorgu geri çağırma: Room artık sorguların yürütülmek üzere olduğu durumlar için genel bir geri çağırma API'si RoomDatabase.QueryCallback sunuyor. Bu API, hata ayıklama yapılarında günlük kaydı için yararlı olabilir. Geri çağırma,
RoomDatabase.Builder#setQueryCallback()
üzerinden ayarlanabilir. - Önceden paketlenmiş iyileştirme: Room'da artık giriş akışından okunan önceden paketlenmiş bir veritabanı kullanarak veritabanı oluşturmaya yönelik API'ler mevcuttur. Bu, önceden paketlenmiş veritabanının sıkıştırıldığı durumlar gibi durumlara olanak tanır.
- Sağlanan Tür Dönüştürücüler: Room artık uygulamanın ilklendirmelerini kontrol edebilmesi için tür dönüştürücü örnekleri sağlamaya yönelik API'lere sahiptir. Room'a sağlanacak bir tür dönüştürücüyü işaretlemek için yeni notu @ProvidedTypeConverter kullanın.
- RxJava3 Desteği: Room artık RxJava3 türlerini desteklemektedir. RxJava2'ye benzer şekilde, döndürme türü Flowable, Single, Maybe ve Completable olan DAO yöntemlerini tanımlayabilirsiniz. Ayrıca RxJava3'ü desteklemek için yeni bir yapı
androidx.room:room-rxjava3
kullanılabilir. - Sayfalama 3.0 Desteği: Room artık dönüş türü
androidx.paging.PagingSource
olan@Query
ek açıklamalı yöntemler için uygulama oluşturmayı destekliyor.
Sürüm 2.3.0-rc01
24 Mart 2021
androidx.room:room-*:2.3.0-rc01
yayınlanır. 2.3.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Room tarafından oluşturulan Coroutine Flow sorgularının askıya alınan bir
withTransaction
bloğunda kullanılmasını engelleyen sorun düzeltildi. (I797bf)
Sürüm 2.3.0-beta03
10 Mart 2021
androidx.room:room-*:2.3.0-beta03
yayınlanır. 2.3.0-beta03 sürümü bu taahhütleri içerir.
Yeni Özellikler
- KSP için artımlı derleme desteği eklendi. (I031c1, b/176453350)
Hata Düzeltmeleri
- Ana iş parçacığında PagingSource oluşturulmasının ANR'ye neden olabileceği bir hata düzeltildi. (I42b74, b/181221318)
@ExperimentalRoomApi
görünürlüğü, paket gizli yerine herkese açık olarak düzeltildi. (b/181356119)
Harici Katkı
- Room'un,
@SkipQueryVerification
ile de ek açıklama eklenmiş bir@Query
ek açıklamalı DAO yönteminde POJO dönüş türünü kabul etmesine izin verin. Room, sorgunun sonucunu@RawQuery
ek açıklamalı DAO yöntemi için yapıldığı şekilde POJO döndürme türüne dönüştürmek için elinden geleni yapar. "Markus Riegel | hey@marcorei.com"a teşekkürler. (I45acb)
Sürüm 2.3.0-beta02
18 Şubat 2021
androidx.room:room-*:2.3.0-beta02
yayınlanır. 2.3.0-beta02 sürümü bu taahhütleri içerir.
Yeni Özellikler
Odalarda artık Kotlin Symbol Processing KSP için deneysel destek sunulmaktadır.
KSP, ek açıklama işleyicilerini Kotlin derleyicisinde yerel olarak çalıştırmak için KAPT'nin yerini alır ve derleme sürelerini önemli ölçüde azaltır.
Room'u KSP ile kullanmak için KSP Gradle eklentisini uygulayabilir ve derleme dosyanızdaki
kapt
yapılandırmasınıksp
ile değiştirebilirsiniz. Örneğin,kapt 'androidx.room:room-compiler:2.3.0-beta02'
yerineksp 'androidx.room:room-compiler:2.3.0-beta02'
kullanın. Daha fazla ayrıntı için KSP belgelerini inceleyin.KSP deneysel olduğu için üretim kodu için KAPT'nin kullanılmasının yine de önerildiğini unutmayın. Derleme sürelerinin azaltılması yalnızca KAPT kullanan başka işlemciler yoksa geçerlidir. Bilinen sorunlar için b/160322705 adresine bakın.
Sürüm 2.3.0-beta01
27 Ocak 2021
androidx.room:room-*:2.3.0-beta01
yayınlanır. 2.3.0-beta01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Otomatik olarak kapatılabilen veritabanları: Room artık belirli bir süre boyunca erişilmeyen veritabanlarını kapatabilir. Bu deneysel bir özelliktir ve
RoomDatabase.Builder#setAutoCloseTimeout()
çağrısı yapılarak etkinleştirilebilir. Bu özellik, birden fazla veritabanı olan uygulamalar için yararlıdır.
Hata Düzeltmeleri
- Farklı çakışma stratejilerine sahip birden fazla
@Update
veya@Delete
yöntemi içeren Dao yöntemlerinin, tanımlananı etkili bir şekilde yok sayarak stratejilerden yalnızca biriyle kod oluşturduğu bir sorun düzeltildi. (/I0b90d, b/176138543)
Sürüm 2.3.0-alpha04
16 Aralık 2020
androidx.room:room-*:2.3.0-alpha04
yayınlanır. 2.3.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Room artık sorguların yürütülmek üzere olduğu durumlar için genel bir geri çağırma API'si
RoomDatabase.QueryCallback
sunuyor. Bu API, hata ayıklama yapılarında günlük kaydı için yararlı olabilir. Geri çağırma,RoomDatabase.Builder#setQueryCallback()
üzerinden ayarlanabilir. (Iaa513, b/174478034, b/74877608) - Room, artık varsayılan olarak bir Enum to String ve tam tersi tür dönüştürücü kullanır (sağlanmamışsa). Bir enum için zaten bir tür dönüştürücü varsa Room, varsayılan dönüştürücüye kıyasla bu dönüştürücüyü kullanmaya öncelik verir. (b/73132006)
Bilinen Sorun
- Enum için okumaya yönelik tek yönlü bir tür dönüştürücü zaten mevcutsa Room, istenmeyebilecek yerleşik dize - enum dönüştürücüyü yanlışlıkla kullanabilir. Bu bilinen bir sorundur ve iki yönlü dönüştürücü yapılarak düzeltilebilir. Bkz. b/175707691
Hata Düzeltmeleri
- Room'un yeni JDK sürümlerinde artımlı ek açıklama işlemeyi yanlışlıkla devre dışı bırakmasına neden olan sorun düzeltildi. (b/171387388)
- Birden fazla sınıf yükleyici kullanıldığında Room'un oluşturulan sınıfı bulmasıyla ilgili bir sorun düzeltildi. "Serendipity | 892449346@qq.com" tarafından yapılan düzeltme için teşekkürler. (b/170141113)
- Kotlin
@Dao
'te, genel türleri JVM'de ilkel olan bir temel sınıf olduğunda Room'un yanlış kod oluşturmasına neden olan sorun düzeltildi. (b/160258066)
Harici Katkı
- WAL modu etkinse ve API 16 veya daha yeni bir sürümse Room artık varsayılan olarak
beginTransactionNonExclusive
kullanır. Teşekkürler ‘Ahmed I. Khalil | ahmedibrahimkhali@gmail.com’! (b/126258791)
Sürüm 2.3.0-alpha03
14 Ekim 2020
androidx.room:room-*:2.3.0-alpha03
yayınlanır. 2.3.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
Room artık uygulamanın başlatma işlemlerini kontrol edebilmesi için tür dönüştürücü örnekleri sağlamaya yönelik API'lere sahiptir. Room'a sağlanacak bir tür dönüştürücüyü işaretlemek için yeni
@ProvidedTypeConverter
ek açıklamasını kullanın. "mzgreen yairobbe@gmail.com" kullanıcısına teşekkürler. (Ie4fa5, b/121067210)Room'da artık giriş akışında okunan önceden paketlenmiş bir veritabanı kullanarak veritabanı oluşturmaya yönelik API'ler mevcuttur. Bu, önceden paketlenmiş veritabanının sıkıştırıldığı durumlar gibi durumlara olanak tanır. "Ahmed El-Helw ahmedre@gmail.com" (3e6792, b/146911060) ile
API Değişiklikleri
@ForeignKey
ek açıklamasına,@Entity
ek açıklamasının dışında kullanılmasını engelleyen eksik hedef eklendi. (Iced1e)RoomDatabase.java
tablosundakimCallbacks
alanı artık gizli. (d576cb, b/76109329)
Hata Düzeltmeleri
TypeConverters dokümanında, TypeConverters'ın yalnızca satırlar değil, sütunları / alanları dönüştürmek için kullanılabileceğini açıklığa kavuşturmak amacıyla güncelleme yapıldı. (I07c56, b/77307836)
Kotlin "ilkelleri" içeren genel bir süper türü olan Dao'da derleyici hatasını düzeltmek için DaoProcessor'da güncelleme. (Ice6bb, b/160258066)
İzleyici yöntemlerini ekleme/kaldırma dokümanlarını mesaj dizilerini açıklığa kavuşturacak şekilde güncelleme (Ifd1d9, b/153948821)
Room'un, rowid sütununu bildiren FTS tablolarını yanlış doğrulamasıyla ilgili sorun düzeltildi. (d62ebc, b/145858914)
Harici Katkılar
Türkçe ile ilgili büyük/küçük harf yerel ayarı sorunlarını düzeltme (5746e3), b/68159494
Android Lollipop'ta sorun yaşamamak için
RoomDatabase
içindekiConcurrentHashMap
değeriniCollections.synchronizedMap()
ile değiştirin (d1cfc7, b/162431855)Önceden paketlenmiş bir veritabanı kopyalandığında onOpenPrepackagedDatabase geri çağırma işlevi ekleyin. (I1ba74, b/148934423)
Sürüm 2.3.0-alpha02
22 Temmuz 2020
androidx.room:room-*:2.3.0-alpha02
yayınlanır. 2.3.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
- RxJava3 Desteği: Room artık RxJava3 türlerini desteklemektedir. RxJava2'ye benzer şekilde, döndürme türü Flowable, Single, Maybe ve Completable olan DAO yöntemlerini tanımlayabilirsiniz. Ayrıca RxJava3'ü desteklemek için yeni bir yapı
androidx.room:room-rxjava3
kullanılabilir. (b/152427884)
API Değişiklikleri
- Kotlin nesne sınıfında
@TypeConverter
tanımlama artık desteklenmektedir. (b/151110764) - Odanın artımlı ek açıklama işleme seçeneği artık varsayılan olarak AÇIK. (b/112110217)
Sürüm 2.3.0-alpha01
10 Haziran 2020
androidx.room:room-*:2.3.0-alpha01
yayınlanır. 2.3.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
Sayfalama 3.0 Desteği: Room artık döndürülen türü
androidx.paging.PagingSource
olan@Query
ek açıklamalı yöntemler için uygulama oluşturmayı destekliyor.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
API Değişiklikleri
@RewriteQueriesToDropUnusedColumns
, Room'un bir sorgudaki "*" projeksiyonunu, sonuçtaki kullanılmayan sütunların kaldırılacak şekilde yeniden yazmasını sağlayan yeni ve kullanışlı bir ek açıklamadır.room.expandProjection
işlemci seçeneğinin desteği sonlandırıldı. Yıldız projeksiyonlarıyla oda optimizasyonu sorgularının yerine@RewriteQueriesToDropUnusedColumns
kullanın.@RewriteQueriesToDropUnusedColumns
'ün,@Embedded
alanları içeren döndürme türleri için sunulan sütun çakışması çözümüroom.expandProjection
'ün yerini almadığını unutmayın.
Hata Düzeltmeleri
- Room'un, artımlı ek açıklama işleyiciyi etkinleştirmek için kullanılan JDK sürümünü doğru şekilde algılamaması sorunu düzeltildi. Blaz Solar (me@blaz.solar) (b/155215201) ile
- Room artık ANTLR kullanan diğer işlemcilerle sürüm çakışmalarını önlemek için ANTLR bağımlılığını ek açıklama işleyiciye yerleştiriyor. (b/150106190)
2.2.6 sürümü
2.2.6 sürümü
16 Aralık 2020
androidx.room:room-*:2.2.6
yayınlanır. 2.2.6 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Room'un yeni JDK sürümlerinde artımlı ek açıklama işlemeyi yanlışlıkla devre dışı bırakmasına neden olan sorun düzeltildi. (b/171387388)
Sürüm 2.2.5
Sürüm 2.2.5
18 Mart 2020
androidx.room:room-*:2.2.5
yayınlanır. 2.2.5 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
MultiInstanceInvalidationService
değerini directBootAware yapın. "Mygod contact-git@mygod.be" (b/148240967) için teşekkürler- Çoklu örnek geçersiz kılma etkinleştirildiğinde ve veritabanında bir FTS öğesi bulunduğunda kilitlenmeye neden olan bir hata düzeltildi. (b/148969394)
- Room ek açıklama işleyicisine SQLite yerel kitaplıklarını yüklerken paralel derlemeler nedeniyle derleyicinin kilitlenmesine neden olan bir sorun düzeltildi. (b/146217083)
2.2.4 sürümü
2.2.4 sürümü
19 Şubat 2020
androidx.room:room-common:2.2.4
, androidx.room:room-compiler:2.2.4
, androidx.room:room-guava:2.2.4
, androidx.room:room-ktx:2.2.4
, androidx.room:room-migration:2.2.4
, androidx.room:room-runtime:2.2.4
, androidx.room:room-rxjava2:2.2.4
ve androidx.room:room-testing:2.2.4
yayınlanır. 2.2.4 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- İşlem henüz başlamadan önce coroutine hızlıca iptal edilirse kilitlenmeye neden olan işlemleri askıya almayla ilgili sorun düzeltildi. (b/148181325)
- JDK 9 ile derleme yapılırken @Generated öğesinin yanlış kullanılmasıyla ilgili sorun düzeltildi. (b/146538330)
- Kotlin'de bir DAO arayüzünde somut işlev olduğunda Room'un yanlış kod oluşturmasına neden olan sorun düzeltildi. (b/146825845)
Sürüm 2.2.3
Sürüm 2.2.3
18 Aralık 2019
androidx.room:room-*:2.2.3
yayınlanır. 2.2.3 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
- Room'un, taşıma işlemine tabi tutulmamış ve şemasında dizin içeren eski bir karma oluşturma işlemi içeren bir veritabanını doğrulayamadığı bir hata düzeltildi. (b/139306173)
Sürüm 2.2.2
Sürüm 2.2.2
20 Kasım 2019
androidx.room:room-*:2.2.2
yayınlanır. 2.2.2 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
- 999'dan fazla satır içeren bir bire bir ilişki toplandığında Room'un ilişkili öğeleri null olarak döndürmesine neden olan hata düzeltildi. (b/143105450)
Sürüm 2.2.1
Sürüm 2.2.1
23 Ekim 2019
androidx.room:room-*:2.2.1
yayınlanır. 2.2.1 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
- Derleyici seçeneği
expandProjection
AÇIKken Room'unCURSOR_MISMATCH
hakkında yanlışlıkla uyarı vermesine neden olan bir hata düzeltildi. (b/140759491) - Derleme sırasında sorguları doğrulamak için kullanılan eksik yerel kitaplığı işlemek üzere bir yeniden deneme mekanizması eklendi.
Sürüm 2.2.0
Sürüm 2.2.0
9 Ekim 2019
androidx.room:room-*:2.2.0
yayınlanır. 2.2.0 sürümü bu taahhütleri içerir.
2.1.0 sürümünden bu yana yapılan önemli değişiklikler
- Önceden paketlenmiş veritabanı:
RoomDatabase.Builder
'deki iki yeni API, önceden doldurulmuş bir veritabanı dosyası verildiğindeRoomDatabase
oluşturmak için kullanılabilir.createFromAsset()
, önceden doldurulmuş veritabanı dosyasının APK'nın assets klasöründe olduğu durumlarda kullanılır.createFromFile()
ise dosyanın rastgele bir konumda olduğu durumlarda kullanılır. Bu API'lerin kullanımı, yıkıcı taşıma işlemlerinin davranışını değiştirir. Bu durumda, yedek taşıma sırasında Room, varsa önceden doldurulmuş veritabanını yeniden kopyalamaya çalışır. Aksi takdirde, tüm tabloları bırakıp yeniden oluşturur. b/62185732 - Şema Varsayılan Değerleri:
@ColumnInfo
artık bir sütunun varsayılan değerini belirtmek için kullanılabilecek yeni birdefaultValue
özelliğine sahiptir. Varsayılan değerler bir veritabanı şemasının parçasıdır ve belirtilirse taşıma sırasında doğrulanır. b/64088772 - Çoklu İlişki:
@Relation
artık yeni bir mülkü (associateBy
) içeriyor. Bu mülk, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gereken bir ilişkiyi belirtmek için kullanılan yeni bir ek açıklama (@Junction
) alıyor. b/69201917 - Bire Bir İlişkiler:
@Relation
ileList
veyaSet
türü olarak ek açıklama eklenmiş POJO alanlarında uygulanan kısıtlama kaldırıldı. Bu sayede tek değerli ilişkilerin temsil edilmesi sağlandı. b/62905145 - Hedef Varlık:
@Insert
,@Update
ve@Delete
DAO ek açıklamalarında artık DAO yönteminin işlem yapması gereken hedef tabloyu belirtmenize olanak tanıyan yeni birtargetEntity
özelliği var. Bu sayede, bu DAO yöntemlerinin parametreleri, kısmi varlıklar olarak yorumlanacak rastgele POJO'lar olabilir. Uygulamada bu, kısmi ekleme, silme ve güncelleme işlemlerine olanak tanır. b/127549506 - Eş yordam akışı:
@Query
DAO yöntemleri artıkFlow<T>
dönüş türüne sahip olabilir. Sorgudaki gözlem tabloları geçersiz hale gelirse döndürülen akış yeni bir değer grubunu yeniden yayınlar. DAO işleviniChannel<T>
döndürme türüyle tanımlamak bir hatadır. Bunun yerine Room,Flow
kullanmanızı ve ardındanFlow
'yiChannel
'ye dönüştürmek için komşu işlevleri kullanmanızı önerir. b/130428884 - Gradle Artımlı Notlandırma İşlemcisi: Room artık Gradle'de izole notlandırma işleyicisi olarak kullanılabiliyor ve artımlılık,
room.incremental
işlemci seçeneği aracılığıyla etkinleştirilebilir. Daha fazla bilgi için Oda Derleyici Seçenekleri başlıklı makaleyi inceleyin. Herhangi bir sorunla karşılaşırsanız lütfen buradan hata kaydı oluşturun. Artımlı artış özelliğini gelecekteki kararlı bir sürümde varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217 - Genişletilmiş Projeksiyonlar: Room'un, yıldız projeksiyonu içeren bir sorguyu yalnızca döndürülen türdeki POJO'daki sütunları içerecek şekilde yeniden yazmasına neden olan yeni bir deneysel derleyici seçeneği
room.expandProjection
eklendi. Örneğin, yalnızca iki alan içerenSongIdAndTitle
adlı bir POJO döndüren@Query("SELECT * FROM Song")
içeren bir DAO yöntemi için. Ardından Room, döndürülen türü karşılayacak minimum sütun grubunu getirmesi için sorguyuSELECT id, title FROM Song
olarak yeniden yazar. Bu, sorgu döndürülen POJO türünde herhangi bir alanla eşleşmeyen ekstra sütunlar döndürdüğünde gösterilenCURSOR_MISMATCH
uyarısını ortadan kaldırır.
Sürüm 2.2.0-rc01
5 Eylül 2019
androidx.room:room:2.2.0-rc01
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
2.2.0-beta01
odasından bu yana herkese açık değişiklik yapılmadı.
Sürüm 2.2.0-beta01
22 Ağustos 2019
androidx.room:room-*:2.2.0-beta01
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Hata düzeltmeleri
- Coroutine Flow sorgusunun belirli bir süre sonra yeni değerleri yeniden yayınlamayı durdurmasına neden olan bir hata düzeltildi. (b/139175786)
- Room 1.0'dan beri taşıma işlemi yapılmamış bir veritabanını açarken Room'un eski bir şema karma kodunu kabul etmemesi ve geçersiz şema nedeniyle çalışma zamanında kilitlenmeye neden olan hata düzeltildi. (b/139306173)
Sürüm 2.2.0-alpha02
7 Ağustos 2019
androidx.room:room-*:2.2.0-alpha02
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni Özellikler
- Eş yordam akışı:
@Query
DAO yöntemleri artıkFlow<T>
dönüş türüne sahip olabilir. Sorgudaki gözlem tabloları geçersiz hale gelirse döndürülen akış yeni bir değer grubunu yeniden yayınlar. DAO işleviniChannel<T>
döndürme türüyle tanımlamak bir hatadır. Bunun yerine Room,Flow
kullanmanızı ve ardındanFlow
'yiChannel
'ye dönüştürmek için komşu işlevleri kullanmanızı önerir. b/130428884 - Genişletilmiş Projeksiyonlar: Room'un, yıldız projeksiyonu içeren bir sorguyu yalnızca döndürülen türdeki POJO'daki sütunları içerecek şekilde yeniden yazmasına neden olan yeni bir deneysel derleyici seçeneği
room.expandProjection
eklendi. Örneğin, yalnızca iki alan içerenSongIdAndTitle
adlı bir POJO döndüren@Query("SELECT * FROM Song")
içeren bir DAO yöntemi için. Ardından Room, döndürülen türü karşılayacak minimum sütun grubunu getirmesi için sorguyuSELECT id, title FROM Song
olarak yeniden yazar. Bu, sorgu döndürülen POJO türünde herhangi bir alanla eşleşmeyen ekstra sütunlar döndürdüğünde gösterilenCURSOR_MISMATCH
uyarısını ortadan kaldırır. onDestructiveMigrate
, Room'un bir veritabanını yıkıcı bir şekilde taşıdığı durumlardaRoomDatabase.Callback
'a eklenen yeni bir geri çağırma API'sidir. b/79962330
Hata Düzeltmeleri
- Alan korumalı olduğunda Room'un, alan ayarlayıcı olarak bir yöntem kullanarak yanlış kod oluşturmasına neden olan hata düzeltildi. b/136194628
- Çok örnekli geçersiz kılma etkinleştirildiğinde ve geçersiz kılma hizmeti sonlandırıldığında InvalidationTracker'ın ikinci bir işlemde NPE atmasına neden olan bir hata düzeltildi. b/137454915
- Room'un,
@RawQuery
ile ek açıklamaya sahip devralınan bir askıya alma işlevinin döndürülen türünü doğru şekilde tanımlamaması sorunu düzeltildi. b/137878827 - İlişkilendiren anahtar BLOB türü olduğunda, benzer bir
ByteBuffer
kullanmak için@Relation
için oluşturulan kod güncellendi. b/137881998 - Room'un,
@Insert
,@Update
ve@Delete
'nin kısmi varlık parametreleri olarak kullanılan POJO'larda ayarlayıcıların eksik olmasından şikayet ettiği bir hata düzeltildi. b/138664463 - Varlık sınıfı belirli DAO yöntemlerinde kullanıldığında Room'un,
@Entity
aracılığıyla göz ardı edilen bir sütun için alıcı ve ayarlayıcıların eksik olmasından şikayet ettiği bir hata düzeltildi. b/138238182 - Room'un, adlandırılmış bağlama bağımsız değişkenlerini konumsal bağımsız değişkenlere doğru şekilde dönüştürmemesi ve yeniden kullanılan parametrelerle bir sorgu yürütüldüğünde çalışma zamanında istisnaya neden olması sorunu düzeltildi. b/137254857
Sürüm 2.2.0-alpha01
10 Temmuz 2019
Yeni Özellikler
- Önceden paketlenmiş veritabanı:
RoomDatabase.Builder
'deki iki yeni API, önceden doldurulmuş bir veritabanı dosyası verildiğindeRoomDatabase
oluşturmak için kullanılabilir.createFromAsset()
, önceden doldurulmuş veritabanı dosyasının APK'nın assets klasöründe olduğu durumlarda kullanılır.createFromFile()
ise dosyanın rastgele bir konumda olduğu durumlarda kullanılır. Bu API'lerin kullanımı, yıkıcı taşıma işlemlerinin davranışını değiştirir. Bu durumda, yedek taşıma sırasında Room, varsa önceden doldurulmuş veritabanını yeniden kopyalamaya çalışır. Aksi takdirde, tüm tabloları bırakıp yeniden oluşturur. b/62185732 - Şema Varsayılan Değerleri:
@ColumnInfo
artık bir sütunun varsayılan değerini belirtmek için kullanılabilecek yeni birdefaultValue
özelliğine sahiptir. Varsayılan değerler bir veritabanı şemasının parçasıdır ve belirtilirse taşıma sırasında doğrulanır. b/64088772Not: Veritabanı şemanızda
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z
aracılığıyla eklenen varsayılan değerler gibi varsayılan değerler varsa ve aynı sütunlar için@ColumnInfo
aracılığıyla varsayılan değerler tanımlamaya karar verirseniz hesaba katılmayan varsayılan değerleri doğrulamak için bir taşıma işlemi sağlamanız gerekebilir. Daha fazla bilgi için Oda taşıma işlemleri başlıklı makaleyi inceleyin. - Çoklu İlişki:
@Relation
artık yeni bir mülkü (associateBy
) içeriyor. Bu mülk, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gereken bir ilişkiyi belirtmek için kullanılan yeni bir ek açıklama (@Junction
) alıyor. b/69201917 - Bire Bir İlişkiler:
@Relation
ileList
veyaSet
türü olarak ek açıklama eklenmiş POJO alanlarında uygulanan kısıtlama kaldırıldı. Bu sayede tek değerli ilişkilerin temsil edilmesi sağlandı. b/62905145 - Hedef Varlık:
@Insert
,@Update
ve@Delete
DAO ek açıklamalarında artık DAO yönteminin işlem yapması gereken hedef tabloyu belirtmenize olanak tanıyan yeni birtargetEntity
özelliği var. Bu sayede, bu DAO yöntemlerinin parametreleri, kısmi varlıklar olarak yorumlanacak rastgele POJO'lar olabilir. Uygulamada bu, kısmi ekleme, silme ve güncelleme işlemlerine olanak tanır. b/127549506 - Gradle Artımlı Notlandırma İşlemcisi: Room artık Gradle'de izole notlandırma işleyicisi olarak kullanılabiliyor ve artımlılık,
room.incremental
işlemci seçeneği aracılığıyla etkinleştirilebilir. Daha fazla bilgi için Oda Derleyici Seçenekleri başlıklı makaleyi inceleyin. Herhangi bir sorunla karşılaşırsanız lütfen buradan hata kaydı oluşturun. Artımlı artış özelliğini gelecekteki kararlı bir sürümde varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217
Hata Düzeltmeleri
- Bir sorgunun Rx akışı sorgu tamamlanmadan önce atıldığında Room artık
EmptySetResultException
değerini genel hata işleyiciye iletmez. b/130257475 @RawQuery
ile ek açıklama yapılan askıya alma DAO işlevinin dönüş türü olmadığında Room'un yanlış hata mesajı göstermesine neden olan hata düzeltildi. b/134303897- Room artık ham türlerle DAO bağdaştırıcısı oluşturmayacaktır. b/135747255
2.1.0 sürümü
2.1.0 sürümü
13 Haziran 2019
Room 2.1.0, 2.1.0-rc01
sürümüne göre herhangi bir değişiklik içermeden yayınlandı. Sürüme dahil edilen taahhütleri burada bulabilirsiniz.
2.0.0 sürümünden beri yapılan önemli değişiklikler
- FTS: Room artık eşleme FTS3 veya FTS4 tablosu içeren öğeleri destekler.
@Entity
ile ek açıklama eklenmiş sınıflara artık@Fts3
veya@Fts4
ile ek açıklama ekleyerek eşleme tam metin arama tablosu içeren bir sınıf da eklenebilir. Daha fazla özelleştirme için FTS seçenekleri, ek açıklamanın yöntemleri aracılığıyla kullanılabilir. - Görüntülemeler: Room artık
@DatabaseView
ek açıklamasını kullanarak bir sınıfı görüntüleme olarak da bilinen depolanan sorgu olarak tanımlamayı destekliyor. - Komut sıraları: DAO yöntemleri artık askıya alınmış işlevler olabilir. Bu işlevden yararlanmak için
room-ktx
bağımlılıklarınıza ekleyin. Ktx yapıları, bir iş parçacığı içinde veritabanı işlemleri gerçekleştirmek içinRoomDatabase.withTransaction
uzantı işlevini de sağlar. - AutoValue: Room artık AutoValue ile ek açıklama yapılan sınıfları varlık ve POJO olarak tanımlamayı destekler. Oda ek açıklamaları
@PrimaryKey
,@ColumnInfo
,@Embedded
ve@Relation
artık otomatik değer ek açıklamalı sınıfın soyut yöntemlerinde tanımlanabilir. Oda'nın bu ek açıklamaları doğru şekilde anlayabilmesi için@CopyAnnotations
işaretinin de eklenmiş olması gerektiğini unutmayın. - Ek Asenkron Destek:
@Insert
,@Delete
veya@Update
ile ek açıklama yapılan DAO yöntemleri veINSERT
,DELETE
veyaUPDATE
ifadeleri içeren@Query
artık Rx dönüş türlerini (Completable
,Single
,Maybe
) ve Guava'nın dönüş türünü (ListenableFuture
) destekler. Ayrıca askıya alma işlevi olarak da kullanılabilirler. enableMultiInstanceInvalidation
, aynı veritabanı dosyasını kullanarak birden fazla RoomDatabase örneğinde geçersiz kılma işlemini etkinleştirmek içinRoomDatabase.Builder
'teki yeni bir API'dir.fallbackToDestructiveMigrationOnDowngrade
, sürüm düşürme işlemi gerçekleşirse veritabanını otomatik olarak yeniden oluşturmak içinRoomDatabase.Builder
'daki yeni bir API'dir.ignoredColumns
, yoksayılan alanları ada göre listelemek için kullanılabilen@Entity
ek açıklamalarında yeni bir API'dir.- Room artık veri sınıflarında Kotlin'in birincil yapıcısını düzgün şekilde kullanacak ve özelliklerin
vars
olarak tanımlanması gerekmeyecek.
Sürüm 2.1.0-rc01
29 Mayıs 2019
Hata Düzeltmeleri
- Halihazırda ayarlanmış bir temp_store yapılandırması nedeniyle oluşabilecek bir Room başlatma hatası düzeltildi. b/132602198
- SQLite 3.27.0 ve sonraki sürümleri kullananlar için çift tırnak kullanımıyla ilgili uyarı düzeltildi. b/131712640
- InvalidationTracker'ın, birden fazla geçersiz kılma kontrolü paralel olarak yapıldığında kilitlenmeye neden olduğu hata düzeltildi. b/133457594
Sürüm 2.1.0-beta01
7 Mayıs 2019
androidx.room 2.1.0-beta01
, 2.1.0-alpha07 sürümüne kıyasla herhangi bir değişiklik içermeden yayınlanmıştır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Sürüm 2.1.0-alpha07
25 Nisan 2019
API / Davranış Değişiklikleri
- Uzantı işlevi
RoomDatabase.withTransaction
, artık alıcı olarakCoroutineScope
içeren bir işlev bloğu almaması için değiştirildi. Bu, işlem bloğunda işlemleri eşzamanlı olarak çalıştırmak için gereken ekcoroutineScope { }
sarmalayıcısının atlanmasına engel olur.
Hata Düzeltmeleri
- Room'un, Collection türündeki bir parametre içeren Kotlin DAO işlevi için TypeConverter'u eşleyemediği bir hata düzeltildi. b/122066791
Sürüm 2.1.0-alpha06
22 Mart 2019
API / Davranış Değişiklikleri
- Artık Room'un veritabanı işlemlerini yürütmek için birden fazla iş parçacığı kullanmaması amacıyla, eşzamansız işlem sorguları serileştirilmektedir.
RoomDatabase.Builder.setTransactionExecutor(Executor)
, yürütücünün işlemler için kullanılacak şekilde yapılandırılmasına izin vermek üzere eklendi. RoomDatabase.runInTransaction(Callable)
artık kontrollü istisnaları RuntimeExceptions içine sarmalayacak. b/128623748
Hata Düzeltmeleri
- Hem içerik tablosu hem de harici içerik FTS tablosu için gözlemciler eklenirse geçersiz kılma izleyicisinin bir içerik tablosunu gözlemlemeyi durdurduğu bir hata düzeltildi. b/128508917
- Room'un SQLite dil bilgisi, SQLite 3.24.0 ile eşleşecek şekilde güncellendi. b/110883668
Sürüm 2.1.0-alpha05
13 Mart 2019
Yeni Özellikler
RoomDatabase.withTransaction
uzantı işlevi, bir iş parçacığı içinde veritabanı işlemlerini güvenli bir şekilde gerçekleştirmenize olanak tanır. Room uzantıları işlevleri ve coroutine desteğiroom-ktx
yapılarında kullanılabilir.@Transaction
ile ek açıklama eklenmiş soyut olmayan DAO yöntemleri artık askıya alma işlevi olabilir. b/120241587
API / Davranış Değişiklikleri
room-coroutines
yapı, diğer androidx yapılarıyla aynı şekilde adlandırılarakroom-ktx
olarak yeniden adlandırıldı.RoomDatabase
'dakibeginTransaction
,setTransactionSuccessful
veendTransaction
için destek sonlandırıldı. Bu işlevler yerinerunInTransaction
veroom-ktx
uzantı işleviwithTransaction
kullanılmalıdır.
Hata Düzeltmeleri
- Kullanılan kelime parçalayıcı SIMPLE ise kelime parçalayıcı bağımsız değişkenlerinin atlandığı bir hata düzeltildi. b/125427014
- Room'un, türü iç sınıf olan parametrelere sahip askıya alma işlevlerini doğru şekilde tanımlayamamasına neden olan bir hata düzeltildi. b/123767877
INSERT
,UPDATE
veyaDELETE
ifadeleri içeren ertelenen@Query
DAO yönteminin ana iş parçacığında sorguyu hevesle hazırladığı bir hata düzeltildi. b/123695593- Room'un belirli askıya alma işlevleri için yanlış kod oluşturduğu çeşitli hatalar düzeltildi. b/123466702 ve b/123457323
- Desteği sonlandırılan yöntemlerin oluşturulan kodda doğru şekilde engellenmediği bir hata düzeltildi. b/117602586
- androidx.sqlite'in Room bağımlılığını, bozuk veritabanlarını doğru şekilde işlemeyle ilgili düzeltmeler içeren 1.0.2 sürümüne güncellendi. b/124476912
Bilinen Sorunlar
- Room 2.1.0-alpha05, şu anda Maven Central'da bulunmayan
kotlinx-metadata-jvm
yapısını temel almaktadır (KT-27991). Bu bağımlılık, proje depolarınızamaven { url "https://kotlin.bintray.com/kotlinx/" }
ekleyerek çözülebilir.
Sürüm 2.1.0-alpha04
25 Ocak 2019
Yeni Özellikler
INSERT
,UPDATE
veyaDELETE
ifadeleri içeren@Query
ile ek açıklama yapılan DAO yöntemleri artıkSingle
,Mayble
,Completable
veListenableFuture
adlı arayüz dışı türleri döndürebilir. Ayrıca, işlevler askıya alınabilir. b/120227284
API / Davranış Değişiklikleri
@Transaction
ile ek açıklamaya sahip soyut olmayan bir DAO yöntemiSingle
,Mayble
,Completable
,LiveData
veyaListenableFuture
gibi bir arayüz türü döndürdüğünde Room artık hata verir. İşlemler mesaj dizisine bağlı olduğundan Room'un şu anda farklı mesaj dizilerinde sorgu yürütebilecek bir işlev etrafında işlem başlatması ve sonlandırması mümkün değildir. b/120109336OnConflictStrategy.FAIL
veOnConflictStrategy.ROLLBACK
, Android'in mevcut SQLite bağlamalarında istenen şekilde davranmadıkları için@Deprecated
olarak işaretlendi. b/117266738
Hata Düzeltmeleri
- DAO yöntemi askıya alma işleviyse Room'un dönüş türünün TypeConverter'unu doğru şekilde kullanmadığı bir hata düzeltildi. b/122988159
- Room'un, devralınan askıya alma işlevlerini yanlışlıkla askıya almayan olarak tanımladığı bir hata düzeltildi. b/122902595
- Bir
@Embedded
alanı üst sınıfta olduğunda ve birden fazla alt sınıfta kullanıldığında Room'un yanlış kod oluşturmasına neden olan hata düzeltildi. b/121099048 beginTransaction()
ileendTransaction()
arasında DAO askıya alma işlevleri çağırıldığında veritabanının kilitlenmesine neden olan sorun düzeltildi. b/120854786
Sürüm 2.1.0-alpha03
4 Aralık 2018
API Değişiklikleri
@Fts3
/@Fts4
içindeki FTStokenizer
artık Enum yerine dize alıyor. Bu sayede Room, özel dize parçalayıcıları kullanabilir. Yerleşik dize parçalayıcılar,FtsOptions
içinde dize sabitleri olarak tanımlanmaya devam eder. b/119234881
Yeni Özellikler
- Komut sıraları: DAO yöntemleri artık askıya alınmış işlevler olabilir. Room'da askıya alma işlevlerini desteklemek için yeni bir yapı
room-coroutines
yayınlandı. b/69474692 @Insert
,@Delete
veya@Update
ile ek açıklama eklenmiş DAO yöntemleri artık döndürülen tür olarakListenableFuture
'ı destekliyor. b/119418331
Hata Düzeltmeleri
- Room'un,
@Entity
nesnesininignoredColumns
mülkünde sütunları olan bir kurucu bulmaya yanlışlıkla çalıştığı bir hata düzeltildi. b/119830714 - Room'un, oluşturulan uygulamalarında DAO yöntem parametrelerini nihai olarak işaretlememesine yol açan bir hata düzeltildi. b/118015483
- Özel semboller içeren bir sorgudaki hatayı bildirirken Room'un işlemcisinin kilitlenmesine neden olan bir hata düzeltildi. b/119520136
- Room'un,
IN
ifadesinin bağımsız değişkenleri olarak diğer çeşitliCollection
uygulamalarını reddetmesine yol açan bir hata düzeltildi. b/119884035 - Room'dan döndürülen LiveData'nın, sonsuza kadar gözlemlendiğinde çöp toplanması ve artık yeni veri yayınlamaması sorunu düzeltildi. b/74477406
- Kilit anlaşmazlığını azaltmak için
RoomDatabase
'nin kilit kapatma özelliği güncellendi. b/117900450
Sürüm 2.1.0-alpha02
30 Ekim 2018
Yeni Özellikler
@Relation
içinde@DatabaseView
'e referans verme desteği eklendi. b/117680932
Hata Düzeltmeleri
- Room'un, Rx dönüş türünden abone olurken ve elden çıkarırken ana iş parçacığında disk G/Ç işlemi gerçekleştirdiği bir hata düzeltildi. b/117201279
- Room'un, Kotlin varlık sınıfındaki bir alan için uygun bir tür dönüştürücü bulamadığı bir hata düzeltildi. b/111404868
- Room'un, bağımsız değişkeni olmayan bir Kotlin varsayılan yöntemi içeren
DAO
arayüz uygulaması için yanlış kod oluşturduğu bir hata düzeltildi. b/117527454 - Room'un SQLite dil bilgisi ayrıştırıcısı güncellendi. Bu güncellemeyle, derleme sürelerinin uzamasına neden olan bir performans sorunu düzeltildi. b/117401230
Sürüm 2.1.0-alpha01
8 Ekim 2018
Yeni Özellikler
- FTS: Room artık eşleme FTS3 veya FTS4 tablosu içeren öğeleri destekler.
@Entity
ile ek açıklama eklenmiş sınıflara artık@Fts3
veya@Fts4
ile ek açıklama ekleyerek eşleme tam metin arama tablosu içeren bir sınıf tanımlayabilirsiniz. Daha fazla özelleştirme için FTS seçenekleri, ek açıklama yöntemleri aracılığıyla kullanılabilir. b/62356416 - Görüntülemeler: Room artık @DatabaseView ek açıklamasını kullanarak bir sınıfı görüntüleme olarak da bilinen depolanan bir sorgu olarak tanımlamayı destekliyor. b/67033276
- AutoValue: Room artık AutoValue ek açıklamalı sınıfları varlık ve POJO olarak tanımlamayı destekler.
@PrimaryKey
,@ColumnInfo
,@Embedded
ve@Relation
oda ek açıklamaları artık otomatik değer ek açıklamalı sınıfların soyut yöntemlerinde tanımlanabilir. Oda'nın bu ek açıklamaları doğru şekilde anlayabilmesi için@CopyAnnotations
ile birlikte kullanılması gerektiğini unutmayın. b/62408420 - Ek Reçete Dönüş Türü Desteği:
@Insert
,@Delete
veya@Update
ile ek açıklama eklenmiş DAO yöntemleri artıkCompletable
,Single<T>
veMaybe<T>
reçete dönüş türlerini destekliyor. b/63317956 @Relation
ile Değişmez Türler: Room daha önce@Relation
ek açıklamalı alanların ayarlanabilir olmasını gerektiriyordu ancak artık bunlar kurucu parametreleri olabilir.enableMultiInstanceInvalidation
: Aynı veritabanı dosyasını kullanarak birden fazla RoomDatabase örneğinde geçersiz kılma işlemini etkinleştirmek içinRoomDatabase.Builder
'te bulunan yeni bir API'dir. Bu çok örnekli geçersiz kılma mekanizması birden fazla işlemde de çalışır. b/62334005fallbackToDestructiveMigrationOnDowngrade
: Alt sürüme geçildiğinde veritabanını otomatik olarak yeniden oluşturmak içinRoomDatabase.Builder
'da yeni bir API'dir. b/110416954ignoredColumns
:@Entity
ek açıklamalarında, yoksayılan alanları ada göre listelemek için kullanılabilen yeni bir API'dir. Bir öğede devralınan alanları yoksaymak için kullanışlıdır. b/63522075
API / Davranış Değişiklikleri
RoomDatabase
'dekimCallback
vemDatabase
artık@Deprecated
olarak adlandırılıyor ve Room'un bir sonraki büyük sürümünde kaldırılacak. b/76109329
Hata Düzeltmeleri
- Room'un, bozuk bir veritabanından veya ilk başlatma sırasında kötü bir taşıma işleminden düzgün şekilde kurtaramadığı iki sorun düzeltildi. b/111504749 ve b/111519144
- Room artık veri sınıflarında Kotlin'in birincil yapıcısını düzgün şekilde kullanacak ve alanların
vars
olarak tanımlanması gerekmeyecek. b/105769985
Sürüm 2.0.0
Sürüm 2.0.0
1 Ekim 2018
androidx.room 2.0.0
, 2.0.0-rc01 sürümüne kıyasla herhangi bir değişiklik içermeden yayınlanmıştır.
Sürüm 2.0.0-rc01
20 Eylül 2018
androidx.room 2.0.0-rc01
, 2.0.0-beta01 sürümüne kıyasla herhangi bir değişiklik içermeden yayınlanmıştır.
Sürüm 2.0.0-beta01
2 Temmuz 2018
API / Davranış Değişiklikleri
- Sorguların çalıştırıldığı yerin özelleştirilmesine izin vermek için
RoomDatabase.Builder.setQueryExecutor()
eklendi - RxJava2
Observable
desteği eklendi - Oluşturulan DAO ve veritabanı uygulamaları artık nihai
Hata Düzeltmeleri
- "Alan için alıcı bulunamıyor" hatasında sınıf/alan adını belirtin b/73334503
- RoomOpenHelper'ın Room'un eski sürümleriyle geriye dönük uyumluluğu düzeltildi b/110197391
AndroidX öncesi bağımlılıklar
Room'un AndroidX öncesi sürümleri için aşağıdaki bağımlılıkları ekleyin:
dependencies {
def room_version = "1.1.1"
implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
// optional - RxJava support for Room
implementation "android.arch.persistence.room:rxjava2:$room_version"
// optional - Guava support for Room, including Optional and ListenableFuture
implementation "android.arch.persistence.room:guava:$room_version"
// Test helpers
testImplementation "android.arch.persistence.room:testing:$room_version"
}
1.1.1 sürümü
1.1.1 sürümü
19 Haziran 2018
1.1.1
numaralı oda, 1.1.1-rc1
numaralı oda ile aynı.
Sürüm 1.1.1-rc1
16 Mayıs 2018
Taşıma işlemi kullanıyorsanız 1.1.0
yerine 1.1.1-rc1
oda türünü kullanmanızı önemle tavsiye ederiz.
Oda'nın taşıma sonrası ilklendirmeyi düzgün şekilde işlemediği hata düzeltildi b/79362399
Sürüm 1.1.0
Sürüm 1.1.0-beta3
19 Nisan 2018
Hata Düzeltmeleri
- Kotlin POJO'su Java'da tanımlanmış bir ilişki öğesine referans verdiğinde derleme hatası düzeltildi b/78199923
Sürüm 1.1.0-beta2
5 Nisan 2018
Hata Düzeltmeleri
Room'un Rx
Single
veMaybe
uygulamalarında, sorguyu önceden geri dönüştürerek döndürülenSingle
veyaMaybe
örneklerine 1'den fazla gözlemci eklediğinizde soruna neden olan kritik bir hata düzeltildi. b/76031240[RoomDatabase.clearAllTables][ref-clearAllTables] bir işlem içinde çağrılırsa veritabanını
VACUUM
etmez. b/77235565
Sürüm 1.1.0-beta1
21 Mart 2018
API Değişiklikleri
- API incelemesi geri bildirimlerine göre
@RawQuery
, sorgu parametresi olarakString
iletmeyi artık kabul etmiyor. [SupportSQLiteQuery][ref-SupportSQLiteQuery] işlevini kullanmanız gerekir. ([SupportSQLiteQuery][ref-SupportSQLiteQuery] örneğini bağımsız değişken desteğiyle kolayca oluşturmak için [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] bölümüne bakın). - RoomDatabase.Builder'ın [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] yöntemi artık
vararg Integer
yerinevararg int
değerini kabul ediyor.
Hata Düzeltmeleri
- [RoomDatabase.clearAllTables][ref-clearAllTables] artık bir WAL kontrol noktası ayarlayarak ve veritabanını
VACUUM
ederek işletim sistemine yer döndürmeye çalışıyor. - [
@RawQuery
][ref-RawQuery], PojoEmbedded
alanları veyaRelation
'ları aracılığıyla bir veya daha fazla öğeye referans verdiği sürece artıkobservedEntities
mülkü için herhangi bir Pojo'yu kabul ediyor. b/74041772 - Sayfalama: Room'un DataSource uygulaması artık çok tablolu bağımlılıkları (ilişkiler ve birleştirme işlemleri gibi) doğru şekilde yönetiyor. Daha önce bu tür sonuçlar yeni sonuçları tetikleyemez veya derleyemezdi. b/74128314
Sürüm 1.1.0-alpha1
22 Ocak 2018
Yeni Özellikler
RawQuery
: Bu yeni API,@Dao
yöntemlerinin SQL'i sorgu parametresi olarak almasına olanak tanır b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
:RoomDatabase.Builder
'daki bu yeni API, yıkıcı taşıma işlemlerinin hangi başlangıç şeması sürümlerinden itibaren izin verileceği konusunda daha ayrıntılı kontrol sağlar (fallbackToDestructiveMigration ile karşılaştırıldığında) b/64989640- Room artık yalnızca daha yeni Sayfalama API'lerini (alpha-4 ve sonraki sürümler) desteklemektedir. Desteği sonlandırılan
LivePagedListProvider
için destek sonlandırılmıştır. Yeni Room alfa sürümünü kullanmak için sayfalamaalpha-4
veya daha yeni bir sürümünü kullanmanız ve henüz yapmadıysanızLivePagedListProvider
'tenLivePagedListBuilder
'e geçmeniz gerekir.
Hata Düzeltmeleri
- Kotlin Kapt türleri için destek iyileştirildi. b/69164099
- Alanların sırası artık şemayı geçersiz kılmaz. b/64290754