Room
Son Güncelleme | Kararlı sürüm | Sürüm Adayı | Beta Sürümü | Alfa sürümü |
---|---|---|---|---|
16 Temmuz 2025 | 2.7.2 | - | - | 2.8.0-alpha01 |
Bağımlılıkları bildirme
Room'a bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Room'un bağımlılıkları arasında Room geçişlerini test etme ve Room RxJava yer alır.
Uygulamanız veya modülünüz için build.gradle
dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Kotlin
dependencies { val room_version = "2.7.2" 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.7.2" 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 belgelerini inceleyin.
KSP eklentisini kullanmayla ilgili bilgi için KSP hızlı başlangıç dokümanlarına bakın.
Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx belgelerine bakın.
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 olmayan kitaplıklar (ör. yalnızca Java veya Kotlin Gradle modülleri) için Room ek açıklamalarını kullanmak üzere androidx.room:room-common
'ya bağlı olabilirsiniz.
Derleyici Seçeneklerini Yapılandırma
Room'da aşağıdaki ek açıklama işleme seçenekleri bulunur.
room.schemaLocation |
directory
Verilen dizindeki veritabanı şemalarının JSON dosyalarına aktarılmasını sağlar. Daha fazla bilgi için Oda Taşıma İşlemleri başlıklı makaleyi inceleyin. |
room.incremental |
boolean
Gradle artımlı ek açıklama işlemcisini etkinleştirir. Varsayılan değer true 'dır.
|
room.generateKotlin |
boolean
Java yerine Kotlin kaynak dosyaları oluşturun. KSP gerektirir. 2.7.0 sürümünden itibaren varsayılan değer true 'dır.
Daha fazla bilgi için 2.6.0 sürümü notlarına göz atın.
|
Room Gradle eklentisini kullanma
Room 2.6.0 ve sonraki sürümlerde, Room derleyicisi için seçenekleri yapılandırmak üzere Room Gradle eklentisini kullanabilirsiniz. Eklenti, projeyi derleme görevlerinin çıktısı olan ve otomatik taşımalar için kullanılan oluşturulmuş şemaların, yeniden üretilebilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru yapılandırılmasını sağlar.
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ını kullanı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 işlem, Room derleyicisini ve çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) şema dosyalarını aromalı klasörlere (ör. schemas/flavorOneDebug/com.package.MyDatabase/1.json
) çıkacak şekilde yapılandırır. Bu dosyalar, doğrulama ve otomatik taşıma işlemleri için kullanılmak üzere depoya kaydedilmelidir.
Bazı seçenekler, Room derleyicisi tarafından desteklenmelerine rağmen Room Gradle eklentisinin tüm sürümlerinde yapılandırılamaz. Aşağıdaki tabloda her seçenek listelenmekte ve room
uzantısı kullanılarak bu seçeneğin yapılandırılmasına destek ekleyen Room Gradle eklentisinin sürümü gösterilmektedir. Sürümünüz daha düşükse veya seçenek henüz desteklenmiyorsa bunun yerine ek açıklama işlemcisi seçeneklerini kullanabilirsiniz.
Option | Sürümden itibaren |
---|---|
room.schemaLocation (zorunlu) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
Ek açıklama işleyicisi seçeneklerini kullanma
Room Gradle eklentisini kullanmıyorsanız veya istediğiniz seçenek eklentinizin sürümü tarafından desteklenmiyorsa Room'u Derleme bağımlılıkları ekleme bölümünde açıklandığı gibi ek açıklama işlemcisi seçeneklerini kullanarak yapılandırabilirsiniz. Açıklama seçeneklerini nasıl belirleyeceğiniz, Room için KSP veya KAPT kullanıp kullanmadığı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
, temel bir tür değil dizin olduğundan bu seçeneği eklerken CommandLineArgumentsProvider
kullanmak gerekir. Böylece Gradle, güncel kontrolleri yaparken bu dizinden haberdar olur.
Room veritabanınızı taşıma
başlıklı makalede, şema konumunu sağlayan CommandLineArgumentsProvider
'ın eksiksiz bir uygulaması gösterilmektedir.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Sürüm 2.8
Sürüm 2.8.0-alpha01
16 Temmuz 2025
androidx.room:room-*:2.8.0-alpha01
iptal edilir. 2.8.0-alpha01 sürümü bu commit'leri içerir.
Yeni Özellikler
SQLiteDriver
yapılandırılmış birRoomDatabase
öğesininSupportSQLiteDatabase
sarmalayıcısını almak için API'ler içeren yeni birandroidx.room:room-sqlite-wrapper
yapısı eklendi. Sarmalayıcıyı almak için yeni uzantı işleviniRoomDatabase.getSupportWrapper()
kullanın. Bu,SupportSQLiteDatabase
kullanımını sürdürmek için kullanılan bir uyumluluk yapısıdır. GenellikleRoomDatabase.openHelper.writableDatabase
'den alınır. Room veritabanıSQLiteDriver
ile yapılandırılmış olsa bile bu yapı kullanılabilir. Bu sarmalayıcı,SQLiteDriver
'yı kullanmak isteyen ancakSupportSQLite
API'lerini yoğun bir şekilde kullanan ve yine deBundledSQLiteDriver
'dan yararlanmak isteyen kod tabanlarının artımlı olarak taşınması için kullanışlıdır. (Icf6ac)- Watch OS ve TV OS için KMP hedefleri ekleyin (I228f6, b/394238801)
Hata Düzeltmeleri
- Askıya alma işlemleri ve
AndroidSQLiteDriver
kullanılırken zaman zaman meydana gelebilen kilitlenme sorunu düzeltildi. (b/415006268)
Sürüm 2.7
Sürüm 2.7.2
18 Haziran 2025
androidx.room:room-*:2.7.2
iptal edilir. 2.7.2 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- KSP ile yerel kaynaklar işlenirken açıklama değerlerinin yanlış okunmasına ve bazen şema dışa aktarmalarının eksik olmasına neden olan sorun düzeltildi. (b/416549580)
- Bir SQL'deki yorumların, ifadelerin okunmayan sorgular gibi yürütülmesine neden olduğu hata düzeltildi. (b/413061402)
- Şema dizini boş olduğundan Room'un Gradle eklentisinin yapılandırılamamasıyla ilgili sorun düzeltildi. (b/417823384)
- Bağlantı oluşturmak çok uzun sürdüğünde artık
SQLiteException
oluşturulmayacak, bunun yerine kitaplık tarafından bir günlük mesajı gönderilecek. Hata oluşturmak yerine günlük kaydı oluşturmak, iOS'te askıya alma döngülerine neden olan ve Room'un bağlantıyı elde eden Kotlin Coroutine'de oluşan zaman aşımını yanlış yorumlamasına yol açan, dolayısıyla bir iOS uygulaması arka plana alındığında ve daha sonra bir veritabanı işlemi ortasında devam ettirildiğinde istisnanın oluşturulmasını engelleyen sorunları giderir. (b/422448815)
Sürüm 2.7.1
23 Nisan 2025
androidx.room:room-*:2.7.1
iptal edilir. 2.7.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Sağlanan tür dönüştürücü doğrulaması sırasında
IndexOutOfBoundsException
hatası düzeltildi. (b/409804755). SQLiteDriver
, Oda ile yapılandırıldığındaRoomDatabase.runInTransaction()
desteği. (b/408364828).
Sürüm 2.7.0
9 Nisan 2025
androidx.room:room-*:2.7.0
iptal edilir. 2.7.0 sürümü bu commit'leri içerir.
2.6.0 sürümünden beri yapılan önemli değişiklikler
- Kotlin Multiplatform (KMP) Desteği: Bu sürümde Room, Kotlin Multiplatform (KMP) kitaplığı olacak şekilde yeniden düzenlendi. Şu anda desteklenen platformlar Android, iOS, JVM (Masaüstü), yerel Mac ve yerel Linux'tur. Room KMP'yi kullanmaya başlama hakkında daha fazla bilgi için lütfen resmi Room KMP belgelerine bakın. KMP desteği kapsamında Room,
SQLiteDriver
ile de yapılandırılabilir. Mevcut bir uygulamayı sürücü API'lerine ve Room KMP'ye taşıma hakkında bilgi edinmek için taşıma belgelerine bakın. - İşleme KSP üzerinden yapılıyorsa KSP'de Kotlin kodu oluşturma varsayılan olarak ETKİN hale getirildi. Yalnızca KAPT veya Java projelerinde Room, Java kaynakları oluşturmaya devam eder.
- Kotlin 2.0 ve KSP2: Room artık Kotlin 2.0 dilini hedefliyor ve projelerin Kotlin 2.0 ile eşdeğer veya daha yüksek bir dil sürümüyle derlenmesini gerektiriyor. KSP2 desteği de eklendi. Room'u Kotlin 2.0 veya sonraki sürümlerle kullanırken KSP2'nin kullanılması önerilir.
Sürüm 2.7.0-rc03
26 Mart 2025
androidx.room:room-*:2.7.0-rc03
iptal edilir. 2.7.0-rc03 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Artık, engelleme DAO işlevleri de dahil olmak üzere oda engelleme API'lerinin yürütülmesi sırasında bir ileti dizisi kesintiye uğradığında
InterruptedException
oluşturulmuyor (b/400584611). SQLException: Error code: 5, message: Timed out attempting to acquire a reader connection.
ve benzeri sorunları azaltmak için Room'un bağlantı havuzunu yeniden uygulayın (b/380088809).
Sürüm 2.7.0-rc02
12 Mart 2025
androidx.room:room-*:2.7.0-rc02
iptal edilir. 2.7.0-rc02 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Otomatik taşıma işlemlerinin, FTS tablosundaki yeni bir sütunu yanlış işlemesi sorunu düzeltildi. (b/348227770, Ic53f3)
- KSP aracılığıyla JVM dışı kaynaklar işlenirken
NullPointerException
nedeniyle oluşan oda derleyicisi kilitlenmesi düzeltildi. (b/396607230, I693c9) - Room'un, yazar bağlantısı kullanıldıktan sonra tabloları geçersiz kılmamasına neden olan sorun düzeltildi. (b/340606803, I73ef6)
Sürüm 2.7.0-rc01
26 Şubat 2025
androidx.room:room-*:2.7.0-rc01
iptal edilir. 2.7.0-rc01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Room'un, ilk veritabanı bağlantısında
busy_timeout
değerini ayarlamamasına ve bunun daSQLException: Error code: 5, message: database is locked
sorunlarına (I93208, b/380088809) yol açmasına neden olan sorun düzeltildi. - Room'un derleyicisindeki, Kotlin 2.1.x ve KSP1'de (I883b8, b/396607230) yerel kaynak kümeleri (ör. iOS) işlenirken KSP işlemcisinin kilitlenmesine neden olan sorun düzeltildi.
Sürüm 2.7.0-beta01
12 Şubat 2025
androidx.room:room-*:2.7.0-beta01
iptal edilir. 2.7.0-beta01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
RoomDatabase.inTransaction()
kapalı bir veritabanını açmaması gerektiği halde açma ve veritabanı kapalıysa hızlı bir şekilde yanlış döndürme sorunu düzeltildi (b/325432967).- Kotlin inline / value sınıflarıyla (b/388299754) DAO işlevleri işlenirken Room'un derleyicisinde kilitlenmeye (
IllegalArgumentException: not a valid name
) neden olan sorun düzeltildi. - Oluşturulan veritabanı uygulamasının varsayılan oluşturucusu, yansıtma kullanan Room'un varsayılan başlatma işlemi tarafından kullanıldığından kaldırılmaması için
room-runtime
JVM yapısına ProGuard kurallarını ekleyin (b/392657750).
Sürüm 2.7.0-alpha13
29 Ocak 2025
androidx.room:room-*:2.7.0-alpha13
iptal edilir. 2.7.0-alpha13 sürümü bu commit'leri içerir.
API Değişiklikleri
- Room artık Kotlin 2.0 dilini hedefliyor ve projelerin Kotlin 2.0 ile derlenmesini gerektiriyor. (I8efb0, b/315461431, b/384600605)
Hata Düzeltmeleri
- Android'de yol yerine basit bir ad kullanıldığında ve veritabanı dosyasının çözümlenmiş yolu uygulamanın veri dizininde bulunmadığında Room KMP veritabanı oluşturucusundaki sorun düzeltildi. (I83315, b/377830104)
- Room Gradle eklentisinde, şema girişlerinin ve çıkışının yapılandırılmasının Android projelerinde soruna neden olduğu sorun düzeltildi:
property 'inputDirectory' is final and cannot be changed any further.
(1dbb4c, b/376071291) - Room Gradle eklentisine KSP2 desteği eklendi. Bu sayede, şema dizininin eklenti tarafından düzgün şekilde ayarlanmamasına neden olan sorun düzeltildi. (Iec3c4, b/379159770)
Harici Katkı (External Contribution)
- Yenilenecek ilk anahtar listenin sonuna çok yakın olduğunda kullanıcı arayüzünde atlamalara neden olan
Room
sayfalama entegrasyonuyla ilgili sorun düzeltildi. Thanks to Eva! (I2abbe, b/389729367)
Sürüm 2.7.0-alpha12
11 Aralık 2024
androidx.room:room-*:2.7.0-alpha12
iptal edilir. 2.7.0-alpha12 sürümü bu commit'leri 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()
'yi ekleyin. (I2a9b2, b/185414040)
Hata Düzeltmeleri
- Yıkıcı taşıma işlemleri artık görünümleri bırakarak yeniden oluşturulmalarını sağlıyor. Böylece,
allowDestructiveMigrationForAllTables
AÇIK olduğunda (KMP varsayılanı) davranış, KAPALI olduğundaki mevcut davranışla aynı oluyor. (0a3e83, b/381518941)
Sürüm 2.7.0-alpha11
30 Ekim 2024
androidx.room:room-*:2.7.0-alpha11
iptal edilir. 2.7.0-alpha11 sürümü bu commit'leri içerir.
API Değişiklikleri
- Oda çağrısı için
RawRoomQuery
alan bir askıya alma işlevi olacak şekilde yeni eklenenconvertRows()
yöntemi imzasını yeniden gözden geçirin. (Ie57b5, b/369136627)
Hata Düzeltmeleri
@Relation
ilePagingSource
birlikte kullanıldığında oda çağrısında geçersiz kod oluşturulmasına neden olan sorun düzeltildi.
Sürüm 2.7.0-alpha10
16 Ekim 2024
androidx.room:room-*:2.7.0-alpha10
iptal edilir. 2.7.0-alpha10 sürümü bu commit'leri içerir.
API Değişiklikleri
- Android ve JVM dışı platformlarda
ByteBuffer
ile İlişkiler özelliğini 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()
işlevini ekleyin. (I1985c, b/369636251)
Sürüm 2.7.0-alpha09
2 Ekim 2024
androidx.room:room-*:2.7.0-alpha09
iptal edilir. 2.7.0-alpha09 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Okuma bağlantısında yazma işlemi başlatılması nedeniyle
Error code: 8, message: attempt to write a readonly database
hatasına neden olanroom-paging
KMP uygulamasındaki bir sorun düzeltildi. (b/368380988)
Sürüm 2.7.0-alpha08
18 Eylül 2024
androidx.room:room-*:2.7.0-alpha08
iptal edilir. 2.7.0-alpha08 sürümü bu commit'leri içerir.
Yeni Özellikler
room-paging
yapıları, KMP ile uyumlu olacak şekilde taşındı. (Ib8756, b/339934824)invalidationTrackerFlow()
API,InvalidationTracker.createFlow()
olarak birinci taraf API'si haline getirildi ve artık KMP projelerindeki Android olmayan kaynak kümeleri için kullanılabilir. (I1fbfa, (I8fb29), b/329291639, b/329315924)
API Değişiklikleri
Cursor
kelimesinin kullanıldığı tüm uyarılar ve hata mesajları,Cursor
kelimesi artık Room'un KMP sürümünde kullanılacak doğru bir genel terim olmadığı için kaldırıldı veya değiştirildi. (Id8cd9, b/334087492)
Hata Düzeltmeleri
- Room KMP'nin JVM olmayan platformlar için
UUID
kullanarak kod yayınlamaya çalışmasına neden olan sorun düzeltildi. (b/362994709) - Compose Multiplatform ile KMP projesinde kullanıldığında "Cannot change attributes of configuration … after it has been locked for mutation" (Yapılandırmanın özellikleri, mutasyon için kilitlendikten sonra değiştirilemez) gibi bir hataya neden olan Room Gradle eklentisiyle ilgili sorun düzeltildi. (b/343408758)
Sürüm 2.7.0-alpha07
21 Ağustos 2024
androidx.room:room-*:2.7.0-alpha07
iptal edilir. 2.7.0-alpha07 sürümü bu commit'leri içerir.
Yeni Özellikler
- Room Gradle Eklentisi artık dışa aktarılan şemaları Android Instrumentation Test kaynak kaynaklarına otomatik olarak ekleyecek. Böylece bu şemalar
MigrationTestHelper
tarafından kullanılabilecek.
Hata Düzeltmeleri
RoomDatabaseConstructor
işlevinin oluşturulan "gerçek" değerinin,initialize
işlevinde "gerçek" değiştiricisinin eksik olmasıyla ilgili bir sorun düzeltildi. Bu işlev, "beklenen" bildiriminde de geçersiz kılınmışsa bu sorun oluşuyordu. (359631627)- Oluşturulan
RoomDatabaseConstructor
"gerçek" değerinin, "beklenen" bildiriminin görünürlüğüyle eşleşmemesi sorunu düzeltildi. (358138953)
Sürüm 2.7.0-alpha06
7 Ağustos 2024
androidx.room:room-*:2.7.0-alpha06
iptal edilir. 2.7.0-alpha06 sürümü bu commit'leri içerir.
API Değişiklikleri
- KMP projesinde
RoomDatabase
için örnekleme kurulumunu değiştirin.
Kotlin 2.0 derleme modeli nedeniyle, instantiateImpl()
adlı oluşturulacak bir işlevi referans alma stratejisi artık geçerli değildir. instantiateImpl()
stratejisinin yerini alan @ConstructedBy
ve RoomDatabaseConstructor
olmak üzere iki yeni API kullanıma sunulmuştur. Yeni strateji aşağıdaki gibidir:
RoomDatabaseConstructor
öğesini uygulayan bir expect nesnesi tanımlayın.expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
@ConstructedBy
kullanarak nesneyi@Database
beyanıyla bağlayın.@Database(...) @ConstructedBy(MyDatabaseCtor::class) // NEW abstract class MyDatabase : RoomDatabase
Yeni bir veritabanı örneği oluşturun ancak fabrika bağımsız değişkenini iletmeden
fun createNewDatabase(path: String) = Room.databaseBuilder<AppDatabase>(name = path) .setDriver(BundledSQLiteDriver()) .setQueryCoroutineContext(Dispatchers.IO) .build()
b/316978491, b/338446862 ve b/342905180 numaralı sorunlar düzeltildi.
- Ham SQL dizesini tutma açısından
SupportSQLiteQuery
'ye benzeyen ve bağımsız değişkenleri bir ifadeye bağlama işlevi sunanRoomRawQuery
adlı yeni bir API ekleyerek Room KMP'de@RawQuery
desteği.@RawQuery
ile açıklama eklenmiş işlevler artık tek parametre olarakRoomRawQuery
kabul edebilir. (Iea844, b/330586815) setQueryCallback()
kabul eden birCoroutineContext
aşırı yüklemesi ekleyin. (Id66ff, b/309996304)linuxArm64
Kotlin Multiplatform hedefleri için destek eklendi (I139d3, b/338268719)
Hata Düzeltmeleri
- Room'un Android olmayan hedeflerde
recursiveFetchArrayMap
için yanlışlıkla arama oluşturmasına neden olan sorun düzeltildi. (710c36, b/352482325) - Bazen Room'un KMP projesinde "Bağlantı kurma girişimi zaman aşımına uğradı" ile ilgili bir istisna oluşturmasına neden olan sorun düzeltildi. (fa72d0, b/347737870)
- Diğer tablolar şemalarını yeni yabancı anahtarlara uyacak şekilde değiştirmeden önce otomatik taşıma işlemlerinde yabancı anahtarların çok erken kontrol edilmesine neden olan sorun düzeltildi. (7672c0, b/352085724)
Sürüm 2.7.0-alpha05
10 Temmuz 2024
androidx.room:room-*:2.7.0-alpha05
iptal edilir. 2.7.0-alpha05 sürümü bu commit'leri içerir.
API Değişiklikleri
SQLiteKt
,SQLite
olarak,BundledSQLiteKt
iseBundledSQLite
olarak yeniden adlandırıldı. (I8b501)
Hata Düzeltmeleri
AndroidSQLiteDriver
kullanılırkenRoomDatabase
'nın kilitlenmesine veya bağlantı zaman aşımıyla hata vermesine neden olan hata düzeltildi.
Sürüm 2.7.0-alpha04
12 Haziran 2024
androidx.room:room-*:2.7.0-alpha04
iptal edilir. 2.7.0-alpha04 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Room'un ek açıklama işlemcisinin, bir DAO'da çoklu harita dönüş türü tanımlandığında uyumsuz KMP kodu oluşturmasına neden olan sorun düzeltildi. (b/340983093)
@Database
ek açıklamalı sınıfta paket yoksa Room'un oluşturulan veritabanı uygulamasını bulamamasına neden olan sorun düzeltildi. (b/342097292)- Otomatik kapatma ve çoklu örnek geçersiz kılma etkinleştirildiğinde, veritabanı boşta kalma nedeniyle otomatik olarak kapatıldığında bazen
ConcurrentModificationException
hatasına neden olan sorun düzeltildi.
Sürüm 2.7.0-alpha03
29 Mayıs 2024
androidx.room:room-*:2.7.0-alpha03
iptal edilir. 2.7.0-alpha03 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Kotlin 2.0 ve KSP 2.0 ile ilgili çeşitli sorunlar düzeltildi. KSP 2 desteğiyle 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
iptal edilir. 2.7.0-alpha02 sürümü bu commit'leri 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
iptal edilir. 2.7.0-alpha01 sürümü bu commit'leri içerir.
Yeni Özellikler
- Kotlin Multiplatform (KMP) Desteği: Bu sürümde Room, Kotlin Multiplatform (KMP) kitaplığı olacak şekilde yeniden düzenlendi. Bu sürümde, işlevlerin büyük bir kısmının "ortaklaştırıldığı" (çok platformlu hale getirildiği) yeni bir Room sürümü kullanıma sunuluyor. Ancak henüz tamamlanması gereken bazı çalışmalar var. Şu anda desteklenen platformlar Android, iOS, JVM (Masaüstü), yerel Mac ve yerel Linux'tur. Yeni desteklenen platformlardaki eksik işlevler, yaklaşan Room sürümlerinde "özellik açısından tamamlanmış" hale getirilecek.
Room KMP'yi kullanmaya başlama hakkında daha fazla bilgi için lütfen resmi Room KMP belgelerine bakın.
- İşleme KSP üzerinden yapılıyorsa KSP'de Kotlin kodu oluşturma varsayılan olarak ETKİN hale getirildi. Yalnızca KAPT veya Java projelerinde Room, Java kaynakları oluşturmaya devam eder.
API Değişiklikleri
- Oluşturulan
RoomDatabase
uygulamasını başlatırken yansıtma 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() }
)
- Odayı
CoroutineContext
ile yapılandırmak için bir API, oluşturucuya eklendi:RoomDatabase.Builder.setQueryCoroutineContext
.RoomDatabase
öğesinin yalnızcasetQueryExecutor
kullanan yürütücülerle veya bir Coroutine bağlamıyla yapılandırılabileceğini, ancak ikisiyle birden yapılandırılamayacağını unutmayın. SQLite
sürücüsüyle Room'u yapılandırmak için bir API eklendi:RoomDatabase.Builder.setDriver()
.SQLite
Driver API hakkında daha fazla bilgi için SQLite KMP belgelerine bakın.- Sürücü API'lerinden temel
SQLiteConnection
öğesine erişmek için API'ler eklendi:RoomDatabase.useReaderConnection
veRoomDatabase.useWriterConnection
. - Varios Room ile ilgili çeşitli geri çağırma işlevleri artık
SupportSQLiteDatabase
yerineSQLiteConnection
alan aşırı yüklenmiş bir sürüme sahip. Bunlar, KMP projesine geçiş sırasında 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ısı
androidx.room:room-ktx
, tüm API'leriyle birlikteandroidx.room:room-runtime
ile birleştirildi. Yapı artık boş. Lütfen bunu 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
iptal edilir. 2.6.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Oluşturulan kodda,
EntityCursorConverter
içindeki Double sütunlarının varsayılan değerinin 0.0 yerine 0 olarak ayarlanması sorunu düzeltildi. Kayan nokta türü sütunlar için benzer bir uç durumun olası düzeltmesi de dahil edildi. (Id75f5, b/304584179) PagingSource
yüklemelerinden oluşturulan istisnalar artık Throwable'ı içerenLoadResult.Error
LoadStateUpdate
olarak yayılır. Bu hata durumuPagingDataAdapter.loadStateFlow(Views)
veyaLazyPagingItems.loadState(Compose)
üzerinden gözlemlenebilir. Bu değişikliğin, geçmişte yükleme hatalarının yüklemeyi tetikleyen dao yöntemi tarafından oluşturulan bir istisna olarak ortaya çıktığı davranışsal bir değişikliği işaret ettiğini unutmayın. (I93887, b/302708983)
Sürüm 2.6.0
18 Ekim 2023
androidx.room:room-*:2.6.0
iptal edilir. 2.6.0 sürümü şu commit'leri içerir.
2.5.0 sürümünden beri yapılan önemli değişiklikler
- Kotlin kodu oluşturmayı (veya "Kotlin CodeGen") etkinleştirme seçeneği artık Room KSP'de kullanılabilir. (4297ec0). Room'da Kotlin CodeGen'i etkinleştirmek için KSP'nin işlemci seçeneklerine
room.generateKotlin
seçenek adını ekleyin. KSP için işlemci seçeneklerini iletme hakkında daha fazla bilgi için KSP belgelerine bakın.
Not: Kotlin CodeGen kullanılırken ek kısıtlamalar olduğunu unutmayın. Kotlin CodeGen'de DAO getter'ları veya DAO sorguları olarak soyut özelliklere izin verilmez. Bunun yerine, özellik değerinin değişmez olduğu ve sabit bir saklanmış sonuç içerdiği yanlış fikrini önlemek için işlev olarak yeniden yazılması beklenir. Eklenen bir diğer kısıtlama ise Kotlin CodeGen için Room'da artık Nullable koleksiyon dönüş türlerine izin verilmemesidir.
Uyarı: Kotlin CodeGen kullanılırken projelerinizin nullability açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerinin null değer alabilirliği önemlidir. Java'da ise bu durum genellikle göz ardı edilir. Örneğin, `Flow<foo\>` dönüş türünüz olduğunu ve tablonun boş olduğunu varsayalım. Bu durum Java CodeGen'de herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de hata alırsınız. Bunu önlemek için, boş değerin yayınlandığını varsayarak `Flow<foo?\>` kullanmanız gerekir. </foo?\></foo\>
- Room Gradle eklentisinin yeni yapısı,
androidx.room
kimliğiyle Room'a eklendi. Bu yapı, Gradle ek açıklama işleme seçenekleri aracılığıyla şemaların giriş ve çıkışlarının olmasıyla ilgili olarak Room'da mevcut olan çeşitli sorunları çözüyor. Daha fazla bilgi için Room 2.6.0-alpha02 sürüm notlarına göz atın. - Room Varlıkları'ndaki değer sınıfları artık KSP için destekleniyor. (4194095)
- DAO işlevlerindeki iç içe yerleştirilmiş Harita dönüş 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
iptal edilir. 2.6.0-rc01 sürümü şu commit'leri içerir.
Sürüm 2.6.0-beta01
23 Ağustos 2023
androidx.room:room-*:2.6.0-beta01
iptal edilir. 2.6.0-beta01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
SQLite
özel durumunu işleme: Bir upsert işlemi sırasında2067 SQLITE_CONSTRAINT_UNIQUE
özel durumu oluşturulduğunda upsert işlemi 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
iptal edilir. 2.6.0-alpha03 sürümünde şu commit'ler yer alıyor.
Yeni Özellikler
- DAO işlevlerindeki iç içe yerleştirilmiş Harita dönüş türleri artık Room'da destekleniyor. (I13f48, 203008711)
API Değişiklikleri
- Artık kullanımdan kaldırılan
@MapInfo
yerine@MapColumn
adlı yeni bir tür ek açıklaması oluşturuldu. Bir@MapInfo
açıklamasında sağlanan her sütun adı (keyColumnName
,valueColumnName
veya her ikisi) için yalnızcacolumnName
içeren bir@MapColumn
açıklaması bildirmeniz ve açıklamayı, DAO işlevinin dönüş türünde referans verilen belirli türdeki bağımsız değişkende (Harita'nın anahtarı veya değeri) kullanmanız gerekir. Bunun nedeni,@MapColumn
ek açıklamasının@MapInfo
gibi işlevin kendisinde değil, DAO işlevinin dönüş türündeki tür bağımsız değişkeninde doğrudan kullanılmasıdır. Daha fazla bilgi için lütfen@MapColumn
dokümanlarına bakın. (Ib0305, b/203008711) - Uyumluluk bastırmayı açıklama eklemek için API dosyaları 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 genel bir konum kabul edebilir. Böylece, daha sorunsuz geçişler sağlanır ancak eklentinin avantajlarını (yeniden üretilebilir ve önbelleğe alınabilir derlemeler) korurken lezzetleri veya derleme türü şemalarını manuel olarak yapılandırmak için yeterli esneklik de sunulur. (I09d6f, b/278266663)
Hata Düzeltmeleri
QueryInterceptorStatement
'daki 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
iptal edilir. 2.6.0-alpha02 sürümünde şu commit'ler yer alıyor.
Room Gradle Plugin
Bu yeni sürümde, androidx.room
kimlikli Room Gradle eklentisi için yeni bir yapay nesne yer alıyor. Bu yapay nesne, Gradle ek açıklama işlemcisi seçenekleri aracılığıyla şemaların giriş ve çıkışlarının olmasıyla ilgili olarak Room'da mevcut olan çeşitli sorunları çözüyor. Room Gradle eklentisi, projeyi otomatik taşımalar için kullanılan ve derleme görevlerinin çıktısı olan oluşturulmuş şemaların tekrarlanabilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru yapılandırılmasını sağlayacak şekilde yapılandırır. Eklenti, temel şema konumunu yapılandırmak için bir DSL sunar:
room {
schemaDirectory("$projectDir/schemas/")
}
Eklenti daha sonra Room derleyicisini, çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) şema dosyalarını schemas/flavorOneDebug/com.package.MyDatabase/1.json
gibi farklı klasörlere çıkacak şekilde yapılandırır. Bu dosyalar, doğrulama ve otomatik taşıma işlemleri için kullanılmak üzere her zamanki gibi depoya kaydedilir. Açıklama işlemcisi seçenekleri yerine eklentiyi kullanmaya geçiş yapıldığında mevcut şema dosyaları, eklenti tarafından oluşturulan üretilmiş tür dizinlerine kopyalanmalıdır. Bu, manuel olarak yapılması gereken tek seferlik bir taşıma işlemidir. Geri bildirimler ele alındıktan ve eklenti kararlı sürüme ulaştıktan sonra developers.android.com adresindeki şema dokümanları güncellenecektir. Bu nedenle, lütfen eklentiyi 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ı Java'dan Kotlin'e taşındıktan sonra Robolectric'te veritabanı oluşturulurken ortaya çıkan sorun çözüldü. (Ic053c, b/274924903)
Sürüm 2.6.0-alpha01
22 Mart 2023
androidx.room:room-*:2.6.0-alpha01
iptal edilir. 2.6.0-alpha01 sürümü şu commit'leri 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ı destekleyebiliyor. (4194095)
- Kotlin kodu oluşturma(veya "Kotlin CodeGen") artık Room'da etkinleştirilebilir (4297ec0). Room'da Kotlin CodeGen'i etkinleştirmek için KSP'nin işlemci seçeneklerine
room.generateKotlin
seçenek adını ekleyin. KSP için işlemci seçeneklerini iletme hakkında daha fazla bilgi için KSP belgelerine bakın.
Not: Kotlin CodeGen kullanılırken ek kısıtlamalar olduğunu unutmayın. Kotlin CodeGen'de DAO getter'ları veya DAO sorguları olarak soyut özelliklere izin verilmez. Bunun yerine, özellik değerinin değişmez olduğu ve sabit bir saklanmış sonuç içerdiği yanlış fikrini önlemek için işlev olarak yeniden yazılması beklenir. Eklenen bir diğer kısıtlama ise Kotlin CodeGen için Room'da artık Nullable koleksiyon dönüş türlerine izin verilmemesidir.
Uyarı: Kotlin CodeGen kullanılırken projelerinizin nullability açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerinin null değer alabilirliği önemlidir. Java'da ise bu durum genellikle göz ardı edilir. Örneğin, `Flow<foo\>` dönüş türünüz olduğunu ve tablonun boş olduğunu varsayalım. Bu durum Java CodeGen'de herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de hata alırsınız. Bunu önlemek için, boş değerin yayınlandığını varsayarak `Flow<foo?\>` kullanmanız gerekir. </foo?\></foo\>
API Değişiklikleri
- DAO yöntemi dönüş türlerinde null değer atanabilir koleksiyonların anlamsız kullanımına karşı koruma. (I777dc, b/253271782, b/259426907)
- Geçersiz kılma izleyici değişikliklerini yayan bir Akış oluşturmak için API ekleyin. API, veritabanı değişikliklerine tepki vermesi gereken yayınlar oluşturmak için kullanışlıdır. (I8c790, b/252899305)
Hata Düzeltmeleri
- Kotlin kod oluşturmada soyut özelliklerin DAO getter'ları veya DAO sorguları olarak kullanılmasına izin verilmez. Bunun yerine, özellik değerinin değişmez olduğu ve sabit bir saklanmış sonuç içerdiği yanlış fikrini önlemek için işlev olarak yeniden yazılmaları gerekir. (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
iptal edilir. 2.5.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- kotlinx-metadata-jvm ile ilgili uyumsuzluk sorununu düzeltin. (386d5c)
- Room, Robolectric testinde kullanılırken hataya 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
iptal edilir. 2.5.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Veritabanı zaten açıksa
FrameworkSQLiteHelper
bölümünde 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) acquireTransactionThread()
içinde yeniden giriş durumunun daha iyi işlenmesi artık mümkün.Room
(219f98b). Askıya alma işlemi sırasında Room, işlem yürütücüsünden bir iş parçacığı kullanır, bu iş parçacığında bir etkinlik döngüsü başlatır ve askıya alma veritabanı işlemlerini bu iş parçacığına gönderir. Böylece, tüm işlemler işlem eş yordamı içinde kapsüllenir. İşlem ileti dizisinin, işlemi başlatan ileti dizisinden farklı olması beklenir ancak bazı durumlarda bu iki ileti dizisi aynıdır. Bu tür yeniden giriş durumlarını işlemek içinwithTransaction()
, artık bir kontrol işine dayanmayacak şekilde yeniden düzenlendi. Bunun yerine, askıya alma işlem bloğunu işlem iş parçacığındakirunBlocking
içinden yürütecek.
Sürüm 2.5.0
Sürüm 2.5.0
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ü şu commit'leri içerir.
Sürüm 2.5.0
11 Ocak 2023
androidx.room:room-*:2.5.0
iptal edilir. 2.5.0 sürümü şu commit'leri 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üldü. Kitaplığın Kotlin'e dönüştürülmesi nedeniyle kodunuz Kotlin'de ise kaynak uyumsuzluğu sorunlarıyla karşılaşabileceğinizi unutmayın. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği,InvalidationTracker
sürümünde artıkObserver
içindeonInvalidate()
öğesiniMutableSet
değil,Set
türünde bir parametreye sahip olacak şekilde bildirmeniz gerektiğidir. Ayrıca, belirli getter yöntemleri, Kotlin dosyalarında özellik erişim söz dizimi gerektiren özelliklere dönüştürüldü. Önemli uyumsuzluklar varsa lütfen hata bildiriminde bulunun.- Benzersizlik çakışması olmadığında bir öğe eklemeye veya çakışma olduğunda öğeyi güncellemeye çalışan yeni bir kısayol ek açıklaması (
@Upsert
) eklendi. (I7aaab, b/241964353) - Oda sayfalandırma özelliğinde destek için yeni oda sayfalandırma öğeleri
room-paging-rxjava2
,room-paging-rxjava3
veroom-paging-guava
eklendi. @MapInfo
içinde belirsizliği gidermek için anahtar ve değer tablosu adları sağlayan API'ler eklendi (Icc4b5).
Sürüm 2.5.0-rc01
7 Aralık 2022
androidx.room:room-*:2.5.0-rc01
iptal edilir. 2.5.0-rc01 sürümü şu commit'leri içerir.
- Bu sürüm,
2.5.0-beta02
ile aynı.
Sürüm 2.5.0-beta02
9 Kasım 2022
androidx.room:room-*:2.5.0-beta02
iptal edilir. 2.5.0-beta02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Java'nın dizi davranışıyla eşleşmesi için sorgu bağımsız değişkenlerini değişmez (
Array<Any?>
) olandan ters değişir (Array<out Any?>
) olana alan çeşitli API'leri düzeltin. (b/253531073)
Sürüm 2.5.0-beta01
5 Ekim 2022
androidx.room:room-*:2.5.0-beta01
iptal edilir. 2.5.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
@Upsert
'yı 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 belirlenememesidir. (I5f67f, b/243039555)
Hata Düzeltmeleri
- Gölge tabloların şema
.json
dosyalarına yanlışlıkla dışa aktarılmasına 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
iptal edilir. 2.5.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
- Benzersizlik çakışması olmadığında bir öğe eklemeye veya çakışma olduğunda öğeyi güncellemeye çalışan yeni bir kısayol ek açıklaması (
@Upsert
) eklendi. (I7aaab, b/241964353)
Hata Düzeltmeleri
- Room, otomatik taşıma sırasında yabancı anahtar kısıtlaması kontrolü yaparken artık
IllegalStateException
yerineSQLiteConstraintException
istisnası oluşturacak. (I328dd) getOpenHelper
,getQueryExecutor
vegetTransactionExecutor
öğelerinin alıcıları / ö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
iptal edilir. 2.5.0-alpha02 sürümünde şu commit'ler yer alıyor.
Yeni Özellikler
- Oda Sayfalandırma'da destek için yeni
room-paging
yapay nesneleriroom-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ı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ık Kotlin'e dönüştürüldüğünden kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'de yazılmışsa ve Room'un eski sürümünü çağırıyorsa yeni sürümün bu durumları işlemesi gerekir. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği,
InvalidationTracker
sürümünde artıkObserver
içindeonInvalidate()
öğesiniMutableSet
değil,Set
türünde bir parametreye sahip olacak şekilde bildirmeniz gerektiğidir.@MapInfo
içinde belirsizliği gidermek için anahtar ve değer tablosu adları sağlayan API'ler eklendi (Icc4b5).- Mülk alıcılarında
@Ignore
öğesine yeniden izin vermek için kaynak uyumluluğu sorununu düzeltin. (Ifc2fb)
Hata Düzeltmeleri
- Yinelenen sütun çözümü için sezgisel algoritma. Room artık çoklu harita sorgusundaki belirsiz sütunları çözmeye çalışacak. Bu sayede, aynı ada sahip tabloları içeren tablolarla yapılan JOIN işlemleri bir sonuç veri nesnesiyle doğru şekilde eşlenebilir. (I4b444, b/201306012, b/212279118)
Sürüm 2.5.0-alpha01
23 Şubat 2022
androidx.room:room-*:2.5.0-alpha01
iptal edilir. 2.5.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Kotlin kaynaklarında oda
@IntDef
kullanımının zorunlu kılınmamasına neden olan sorun düzeltildi. (I75f41, b/217951311) - Mülk alıcılarında
@Query
'ın yeniden kullanılmasına izin vermek için kaynak uyumluluğu sorunu düzeltildi. (I0a09b) - Java'dan Kotlin'e dönüştürülen oda ortak alanı. (I69c48, b/206858235)
Not: Kitaplık Kotlin'e dönüştürülürken bazı özellikler yardımcı nesnelere taşındığından kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'de yazılmışsa ve Room'un eski sürümünü çağırıyorsa yeni sürümde bu özelliklere erişirken ".Companion" soneki kullanılması gerekir.
- Java'dan Kotlin'e oda taşıma dönüştürüldü. (I2724b, b/206858622)
room-runtime
içindekipaging
ilgili dosyayı Java'dan Kotlin'e dönüştürdü. (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 kilitleme ve kullanım için API eklendi. (Ied267, b/193182592)
Hata Düzeltmeleri
- Kotlin kaynaklarında dahili özellikler için destek eklendi.
Bu, Room'da işlevleri alıcılar/ayarlayıcılar olarak özelliklerle eşleştirirken işlevlerin kaynak adını kullanacağı küçük bir davranış değişikliğidir (daha önce, işlevlerin JVM adı kullanılıyordu ve bu ad, dahili işlevler/özellikler için farklıydı).
Alıcıları/ayarlayıcıları özel özelliklerle 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
iptal edilir. 2.4.3 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Room'un Kotlin 1.7'deki askıya alma işlevlerini tanımamasına neden olan 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
iptal edilir. 2.4.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
-Xjvm-default=all
veya eşdeğeriyle derleme nedeniyle varsayılan arayüz yöntemi oluşturan bir gövdeye sahip@Transaction
suspend işlevi için kod oluşturma sorununu düzeltin. (Ia4ce5)- Room'un
Array<ByteArray>
dönüş türü sorgu yöntemi için kod oluşturduğu hata düzeltildi. (If086e, b/213789489)
Sürüm 2.4.1
Sürüm 2.4.1
12 Ocak 2022
androidx.room:room-*:2.4.1
iptal edilir. 2.4.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Kotlin kaynaklarında dahili özellikler için destek eklendi.
Bu, Room'da işlevleri alıcılar/ayarlayıcılar olarak özelliklerle eşleştirirken işlevlerin kaynak adını kullanacağı küçük bir davranış değişikliğidir (daha önce, işlevlerin JVM adı kullanılıyordu ve bu ad, dahili işlevler/özellikler için farklıydı).
Alıcıları/ayarlayıcıları özel özelliklerle 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
iptal edilir. 2.4.0 sürümü şu commit'leri içerir.
2.3.0 sürümünden beri yapılan önemli değişiklikler
- Otomatik taşıma işlemleri: Room artık şemalar dışa aktarıldığı sürece taşıma işlemlerini otomatik olarak oluşturmak için bir API sunuyor. Room'a yeni bir mülk için otomatik taşıma oluşturması gerektiğini bildirmek üzere, otomatik taşıma işleminin yapılacağı sürümleri bildirmek için
@Database#autoMigrations
kullanılabilir. Room'un tablolar ve sütun yeniden adlandırmaları veya silmeleriyle ilgili ek bilgilere ihtiyacı olduğunda@AutoMigration
ek açıklaması, bu tür girişleri içeren bir spesifikasyon sınıfı bildirebilir. Daha fazla ayrıntı için@AutoMigration
belgelerini inceleyin. - Otomatik taşımalarda bağımlılık ekleme:
@ProvidedAutoMigrationSpec
,AutoMigrationSpec
öğesinin çalışma zamanındaRoomDatabase.Builder#addAutoMigrationSpec()
aracılığıyla sağlanacağını bildirmek için kullanılan yeni bir API'dir. Bu sayede, karmaşık bağımlılıklar gerektiğinde bu tür özellikleri sağlamak için bağımlılık ekleme çerçevesi kullanılabilir. - Otomatik taşıma işlemleri için taşıma testi yardımcısı desteği: Room'un
MigrationTestHelper
, test edilen veritabanı sınıfını alan yeni bir oluşturucu API sağlayarak otomatik taşıma işlemlerini destekleyecek şekilde güncellendi. Bu sayede yardımcı,runMigrationsAndValidate
sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak ekleyebilir. - Oda Sayfalama Desteği:
androidx.room:room-paging
yayınlandı. Bu sürüm,androidx.paging.PagingSource
döndüren oda sorguları için yerel Sayfalama 3.0 desteği sunar. - İlişkisel Sorgu Yöntemleri: Room artık JOIN ifadeleri için yararlı olan çoklu harita dönüş türlerini
@Dao
yöntemlerini destekliyor. Desteklenen çoklu harita türleriMap
,SparseArray
,LongSparseArray
ve Guava'nınImmutableMap
,ImmutableSetMultimap
veImmutableListMultimap
'dır.
Sürüm 2.4.0-rc01
1 Aralık 2021
androidx.room:room-*:2.4.0-rc01
iptal edilir. 2.4.0-rc01 sürümü şu commit'leri 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
iptal edilir. 2.4.0-beta02 sürümü şu commit'leri içerir.
Yeni Özellikler
- @MapInfo'da SparseArray ve LongSparseArray desteği eklendi. (Ic91a2b/138910317)
Hata Düzeltmeleri
- Türlerdeki nullability bilgilerini dikkate alan yeni bir TypeConverter analiz aracı ekledik. Bu bilgiler yalnızca KSP'de kullanılabildiğinden varsayılan olarak yalnızca KSP'de etkindir. Herhangi bir soruna neden olursa room.useNullAwareTypeAnalysis=false değerini ek açıklama işlemcisine ileterek devre dışı bırakabilirsiniz. Bu durumda, lütfen hata bildiriminde bulunun. Bu işaret gelecekte kaldırılacaktır. Bu yeni TypeConverter analiz aracıyla, yalnızca null olmayan alıcı TypeConverter'ların sağlanması önerilir. Yeni analiz aracı, bunları null denetimiyle sarmalayabilir. KAPT veya Java'yı ek açıklama işlemcileri olarak kullanan kullanıcılar için bu durumun herhangi bir etkisi olmadığını unutmayın (KSP'den farklı olarak türlerde nullability bilgisi yoktur). (Ia88f9, b/193437407)
- ICU belirteç ayrıştırıcısını kullanmak üzere bildirilen bir FTS öğesi olduğunda Room'un SQL hatasıyla derlenememesi hatası düzeltildi. (I00db9, b/201753224)
- Otomatik taşımalarda, sürümler arasında yerleştirilmiş bir öğeye yeni bir sütun eklenmesiyle ilgili sorun giderildi. (I5fcb1b/193798291)
- LEFT JOIN sorgularındaki ilişkisel sorgu yöntemi dönüş türleriyle ilgili bir sorunu çözdük. Bu değişikliklerle birlikte, bire çok eşlemenin mevcut olduğu durumlarda, bir anahtar için döndürülen koleksiyon, imleçte bulunmuyorsa geçersiz değer nesnesini içermez. Geçerli değer bulunamazsa anahtar boş bir koleksiyonla eşlenir. (Id5552b/201946438)
- SQLite anahtar kelimelerinin sütun adlarında kod dışına alınamamasına neden olan 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
iptal edilir. 2.4.0-beta01 sürümü şu commit'leri 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 eklememesi sorunu düzeltildi. (Ia5db5, b/200818663)
- room-paging tarafından oluşturulan PagingSource uygulaması artık
RoomDatabase.Builder
üzerinden iletilenqueryExecutor
değerini kullandığından, daha önce kullanılanDispatchers.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
iptal edilir. 2.4.0-alpha05 sürümü şu commit'leri 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ülerini devre dışı bırakmasına olanak tanımak için TypeConverters ek açıklamasına yeni bir özellik eklendi. Bu dönüştürücüler varsayılan olarak etkindir ancak belirli bir kapsam veya tüm veritabanı için devre dışı bırakabilirsiniz. Ayrıntılar için TypeConverters belgelerine bakın. (36ae9e, b/195413406)
@MapInfo
ek açıklaması aracılığıyla DAO'larda Multimap dönüş türleri için POJO olmayan anahtarları/değerleri destekleme. (I4d704)
Haritanın anahtar veya değer sütunu tek bir sütundan olduğunda @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
öğesini zorunlu yapın. (Ieaffe)
Hata Düzeltmeleri
- Sorgu, haritanın anahtarından bir sütunun ORDER BY ifadesini içerdiğinde çok haritalı sorgu sonuçlarının doğru şekilde sıralanmamasına neden olan sorun düzeltildi. (I6b887)
Harici Katkı (External Contribution)
- @Index'te dizin sırasını belirtmek için yeni API eklendi. Nikita Zhelonkin'e teşekkür ederiz. (I033fc)
Sürüm 2.4.0-alpha04
21 Temmuz 2021
androidx.room:room-*:2.4.0-alpha04
iptal edilir. 2.4.0-alpha04 sürümü şu commit'leri içerir.
Yeni Özellikler
Room artık JOIN ifadeleri için yararlı olan çoklu harita döndürme türlerini
@Dao
destekliyor. Desteklenen çoklu harita türleri, Guava'nınImmutableMap
,ImmutableSetMultimap
veImmutableListMultimap
ile birlikteMap
'dır.Aşağıda, çoklu harita sorgularına dair örnekler 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ş yordamlarFlow
gibi desteklenen asenkron dönüş türlerine de sarmalanabilir.
Room-Paging
androidx.room:room-paging
yayınlandı. Bu sürümde,androidx.paging.PagingSource
döndüren Room sorguları için yerel Paging 3.0 desteği sunuluyor.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun loadUsers(): PagingSource<Int, User> }
Bu yapay nesne, Room tarafından oluşturulan
androidx.paging.PagingSource
uygulamasının yerini Paging 3.0 API'leri üzerine kurulu bir uygulamayla değiştirir. Yeni PagingSource uygulaması anahtarları farklı şekilde ayrıştırır. Bu nedenle, Room'un PagingSource'una manuel olarak sağlanan tüm anahtarların, Pager'ın oluşturucusu aracılığıyla iletilen initialKey de dahil olmak üzere bu davranış değişikliğini hesaba katması gerekir. SayfalarKey
ile yüklenmeye başlar.Key
, yüklenen ilk öğedir. Bu,LoadParams.Refresh.Key
öğesinin kullanıcının kaydırma konumu olarak kabul edildiği ve öğelerin hem anahtardan önce hem de sonra yüklendiği mevcut davranıştan farklıdır.Bu yapay nesne isteğe bağlıdır ve devre dışı bırakıldığında Room 2.3'te kullanıma sunulan Paging 3.0 için mevcut destek geri yüklenir. Ancak bu yapıt, gelecekteki sürümde Paging 3.0 ile Room kullananlar için zorunlu hale gelecektir. Özelliği etkinleştirmek için yeni oda çağrısı yapma yapısını sınıf yolunuza ekleyin. Gradle kullanıyorsanız aşağıdaki snippet'i build.gradle dosyanıza ekleyebilirsiniz:
dependency { implementation("androidx.room:room-paging:2.4.0-alpha04") }
Hata Düzeltmeleri
- Yabancı anahtar ihlallerinin işlenmesiyle ilgili otomatik taşıma sorununu düzeltir. (b/190113935)
Sürüm 2.4.0-alpha03
16 Haziran 2021
androidx.room:room-*:2.4.0-alpha03
iptal edilir. 2.4.0-alpha03 sürümünde şu commit'ler yer alıyor.
API Değişiklikleri
- Test edilen veritabanı sınıfını alan yeni bir oluşturucu API sağlayarak Room'un
MigrationTestHelper
sürümünü otomatik taşımaları destekleyecek şekilde güncelleyin. Bu sayede yardımcı,runMigrationsAndValidate
sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak ekleyebilir.
Hata Düzeltmeleri
Apple'ın M1 çipini desteklemek için Room'un SQLite yerel kitaplığıyla ilgili sorun düzeltildi. (b/174695268
Bir @Transaction işlevinin dönüş türü Flow olduğunda Room'un hata vermemesine neden olan sorun düzeltildi (I56ddd, b/190075899).
Otomatik taşımalarda dizinlerle ilgili bir sorun düzeltildi. b/177673291
Bağımlılık Güncellemeleri
- Room'un KSP desteği artık KSP'ye
1.5.10-1.0.0-beta01
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
iptal edilir. 2.4.0-alpha02 sürümünde bu commit'ler yer alıyor.
API Değişiklikleri
@ProvidedAutoMigrationSpec
,AutoMigrationSpec
öğesinin çalışma zamanındaRoomDatabase.Builder#addAutoMigrationSpec()
aracılığıyla sağlanacağını bildirmek için kullanılan yeni bir API'dir. Bu sayede, karmaşık bağımlılıklar gerektiğinde bu tür özellikleri sağlamak için bağımlılık ekleme çerçevesi kullanılabilir.
Hata Düzeltmeleri
- Otomatik taşıma işlemlerinde
@DatabaseView
'ların düzgün şekilde yeniden oluşturulmamasına neden olan sorun düzeltildi.
Harici Katkı (External Contribution)
- Room'daki
JournalMode.TRUNCATE
,InvalidationTracker
geri çağırma işlevinin bazen geçersiz, çok geç veya hiç çağrılmamasına neden olan sorun düzeltildi.Uli Bubenheimer | bubenheimer@users.noreply.github.com
'ya (b/154040286) teşekkür ederiz.
Sürüm 2.4.0-alpha01
21 Nisan 2021
androidx.room:room-*:2.4.0-alpha01
iptal edilir. 2.4.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
- Otomatik taşıma işlemleri: Room artık şemalar dışa aktarıldığı sürece taşıma işlemlerini otomatik olarak oluşturmak için bir API sunuyor. Room'a yeni bir mülk için otomatik taşıma oluşturması gerektiğini bildirmek üzere, otomatik taşıma işleminin yapılacağı sürümleri bildirmek için
@Database#autoMigrations
kullanılabilir. Room'un tablolar ve sütun yeniden adlandırmaları veya silmeleriyle ilgili ek bilgilere ihtiyacı olduğunda@AutoMigration
ek açıklaması, bu tür girişleri içeren bir spesifikasyon sınıfı bildirebilir. Daha fazla ayrıntı için@AutoMigration
belgelerini inceleyin.
Hata Düzeltmeleri
- Fazladan parantez içeren
defaultValue
değerlerinin, oda şeması doğrulaması tarafından yanlış şekilde doğrulanmasına neden olan sorun 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
iptal edilir. 2.3.0 sürümü şu commit'leri içerir.
2.2.0 sürümünden beri yapılan önemli değişiklikler
- Yerleşik Enum Desteği: Room, artık herhangi bir dönüştürücü sağlanmadığında varsayılan olarak Enum'dan String'e ve String'den Enum'a dönüştürücü kullanır. Bir enum için tür dönüştürücü zaten varsa Room, varsayılan yerine bunu kullanmaya öncelik verir.
- Sorgu geri çağırması: Room artık sorgular yürütülmek üzereyken genel bir geri çağırma API'si olan RoomDatabase.QueryCallback'i sunuyor. Bu API, hata ayıklama derlemelerinde günlük kaydı için yararlı olabilir. Geri arama,
RoomDatabase.Builder#setQueryCallback()
üzerinden ayarlanabilir. - Önceden Paketlenmiş İyileştirme: Room artık bir giriş akışından okunan önceden paketlenmiş bir veritabanı kullanılarak veritabanı oluşturmaya yönelik API'lere sahip. Bu, önceden paketlenmiş veritabanının gzip ile sıkıştırıldığı durumlar için geçerlidir.
- Sağlanan Tür Dönüştürücüler: Room artık tür dönüştürücü örnekleri sağlamak için API'lere sahip. Böylece uygulama, bunların başlatılmasını kontrol edebilir. 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.
- RxJava3 desteği: Room artık RxJava3 türlerini destekliyor. RxJava2'ye benzer şekilde, dönüş türü Flowable, Single, Maybe ve Completable olan DAO yöntemleri bildirebilirsiniz. Ayrıca RxJava3'ü desteklemek için yeni bir yapay nesne
androidx.room:room-rxjava3
kullanıma sunuldu. - Paging 3.0 desteği: Room artık dönüş türü
androidx.paging.PagingSource
olan@Query
ek açıklamalı yöntemler için uygulamalar oluşturmayı destekleyecek.
Sürüm 2.3.0-rc01
24 Mart 2021
androidx.room:room-*:2.3.0-rc01
iptal edilir. 2.3.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Room tarafından oluşturulan Coroutine Flow sorgularının askıya alma
withTransaction
bloğunda tüketilmesini engelleyen sorun düzeltildi. (I797bf)
Sürüm 2.3.0-beta03
10 Mart 2021
androidx.room:room-*:2.3.0-beta03
iptal edilir. 2.3.0-beta03 sürümü şu commit'leri 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şturmanın ANR'yi tetikleyebildiği hata düzeltildi. (I42b74, b/181221318)
@ExperimentalRoomApi
görünürlüğü, paket gizli yerine herkese açık olarak düzeltildi. (b/181356119)
Harici Katkı (External Contribution)
@Query
ile ek açıklama eklenmiş bir DAO yönteminde@SkipQueryVerification
ile de ek açıklama eklenmişse Room'un POJO dönüş türünü kabul etmesine izin verin. Room, sorgunun sonucunu@RawQuery
ek açıklamalı bir DAO yöntemi için yapıldığı şekilde POJO dönüş türüne dönüştürmek için elinden geleni yapar. "Markus Riegel | hey@marcorei.com" adresine teşekkür ederiz. (I45acb)
Sürüm 2.3.0-beta02
18 Şubat 2021
androidx.room:room-*:2.3.0-beta02
iptal edilir. 2.3.0-beta02 sürümü şu commit'leri içerir.
Yeni Özellikler
Room artık Kotlin Sembol İşleme KSP için deneysel destek sunuyor.
KSP, Kotlin derleyicisinde ek açıklama işlemcilerini yerel olarak çalıştırmak için KAPT'nin yerine geçen ve derleme sürelerini önemli ölçüde azaltan bir araçtı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 bir özellik olduğundan üretim kodu için KAPT'nin kullanılmaya devam edilmesi önerilir. Derleme sürelerinin kısaltılması yalnızca KAPT'yi kullanan başka işlemciler yoksa geçerlidir. Bilinen sorunlar için b/160322705 sayfasına bakın.
Sürüm 2.3.0-beta01
27 Ocak 2021
androidx.room:room-*:2.3.0-beta01
iptal edilir. 2.3.0-beta01 sürümü şu commit'leri içerir.
Yeni Özellikler
- Otomatik Kapatılabilen Veritabanları: Room artık belirli bir süre boyunca erişilmeyen veritabanlarını kapatabilir. Bu deneysel bir özelliktir ve
RoomDatabase.Builder#setAutoCloseTimeout()
numarası aranarak 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 yalnızca stratejilerden biriyle kod oluşturmasına neden olan sorun düzeltildi. (/I0b90d, b/176138543)
Sürüm 2.3.0-alpha04
16 Aralık 2020
androidx.room:room-*:2.3.0-alpha04
iptal edilir. 2.3.0-alpha04 sürümü şu commit'leri içerir.
Yeni Özellikler
- Room artık sorgular yürütülmek üzereyken genel bir geri çağırma API'si
RoomDatabase.QueryCallback
sunuyor. Bu API, hata ayıklama derlemelerinde günlük kaydı için yararlı olabilir. Geri arama,RoomDatabase.Builder#setQueryCallback()
üzerinden ayarlanabilir. (Iaa513, b/174478034, b/74877608) - Artık oda, herhangi bir dönüştürücü sağlanmadığında varsayılan olarak Enum'dan String'e ve String'den Enum'a tür dönüştürücüyü kullanacak. Bir enum için tür dönüştürücü zaten varsa Room, varsayılan yerine bunu kullanmaya öncelik verir. (b/73132006)
Bilinen Sorun
- Enum için okuma amaçlı tek yönlü bir tür dönüştürücü zaten varsa Room, istenmeyebilecek yerleşik String to Enum dönüştürücüsünü 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 daha 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 sorun düzeltildi. "Serendipity | 892449346@qq.com" düzeltmesi için teşekkürler! (b/170141113)
- Room'un, Kotlin
@Dao
'nin JVM'de temel sınıfı olan ve genel türleri ilkel olan bir kod oluştururken yanlış kod üretmesine neden olan sorun düzeltildi. (b/160258066)
Harici Katkı (External Contribution)
- WAL modu etkinse ve API 16 veya daha yüksekse Room artık varsayılan olarak
beginTransactionNonExclusive
kullanır. 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
iptal edilir. 2.3.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
Room artık, uygulamanın başlatmalarını kontrol edebilmesi için tür dönüştürücü örnekleri sağlayan API'lere sahip. 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" adlı kullanıcıya teşekkür ederiz. (Ie4fa5, b/121067210)Room artık bir giriş akışından okunan önceden paketlenmiş bir veritabanını kullanarak veritabanı oluşturmaya yönelik API'ler içeriyor. Bu, önceden paketlenmiş veritabanının gzip ile sıkıştırıldığı durumlar için geçerlidir. "Ahmed El-Helw ahmedre@gmail.com"a (3e6792, b/146911060) teşekkür ederiz.
API Değişiklikleri
@ForeignKey
ek açıklamasına eksik hedef eklendi. Bu sayede,@ForeignKey
ek açıklamasının@Entity
ek açıklaması dışında kullanılması önlendi. (Iced1e)RoomDatabase.java
içindekimCallbacks
alanı artık gizli. (d576cb, b/76109329)
Hata Düzeltmeleri
TypeConverter'ların yalnızca sütunları / alanları dönüştürmek için kullanılabileceğini, satırları dönüştürmek için kullanılamayacağını netleştirmek amacıyla TypeConverter belgelerinde güncelleme yapıldı. (I07c56, b/77307836)
Kotlin "primitive" ile genel bir üst türe sahip Dao'da derleyici hatasını düzeltmek için DaoProcessor'da güncelleme yapıldı. (Ice6bb, b/160258066)
İş parçacığını netleştirmek için gözlemci ekleme/kaldırma yöntemleri dokümanlarını güncelleme (Ifd1d9, b/153948821)
Room'un, rowid sütununu bildiren FTS tablolarını yanlış şekilde doğrulamasından kaynaklanan 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
simgesiniCollections.synchronizedMap()
ile değiştirin (d1cfc7, b/162431855)Önceden paketlenmiş bir veritabanı kopyalandığında onOpenPrepackagedDatabase geri çağırmasını ekleyin. (I1ba74, b/148934423)
Sürüm 2.3.0-alpha02
22 Temmuz 2020
androidx.room:room-*:2.3.0-alpha02
iptal edilir. 2.3.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler
- RxJava3 desteği: Room artık RxJava3 türlerini destekliyor. RxJava2'ye benzer şekilde, dönüş türü Flowable, Single, Maybe ve Completable olan DAO yöntemleri bildirebilirsiniz. Ayrıca RxJava3'ü desteklemek için yeni bir yapay nesne
androidx.room:room-rxjava3
kullanıma sunuldu. (b/152427884)
API Değişiklikleri
- Kotlin Object sınıfında
@TypeConverter
bildirme artık destekleniyor. (b/151110764) Room
Artımlı açıklama işleme seçeneği artık varsayılan olarak ETKİN. (b/112110217)
Sürüm 2.3.0-alpha01
10 Haziran 2020
androidx.room:room-*:2.3.0-alpha01
iptal edilir. 2.3.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
Paging 3.0 desteği: Room artık dönüş türü
androidx.paging.PagingSource
olan@Query
ek açıklamalı yöntemler için uygulamalar oluşturmayı destekleyecek.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
API Değişiklikleri
@RewriteQueriesToDropUnusedColumns
, Room'un sorgudaki "*" projeksiyonunu, sonuçtaki kullanılmayan sütunlar 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ı.@RewriteQueriesToDropUnusedColumns
, yıldız projeksiyonlu oda optimizasyonu sorgularının yerine kullanılabilir.@RewriteQueriesToDropUnusedColumns
,@Embedded
alanları içeren dönüş türleriyle ilgili olarak sunulan sütun çakışması çözümününroom.expandProjection
yerini almaz.
Hata Düzeltmeleri
- Room'un, artımlı ek açıklama işlemcisini etkinleştirmek için kullanılan JDK sürümünü doğru şekilde algılamamasına neden olan hata düzeltildi. Blaz Solar'a (me@blaz.solar) teşekkür ederiz (b/155215201).
- Room, ANTLR'yi kullanan diğer işlemcilerle sürüm çakışmalarını önlemek için ANTLR bağımlılığını ek açıklama işlemcisine yerleştirir. (b/150106190)
Sürüm 2.2.6
Sürüm 2.2.6
16 Aralık 2020
androidx.room:room-*:2.2.6
iptal edilir. 2.2.6 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Room'un daha 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
iptal edilir. 2.2.5 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
MultiInstanceInvalidationService
directBootAware olarak ayarlayın. "Mygod contact-git@mygod.be" (b/148240967) kullanıcısına teşekkür ederiz.- Çoklu örnek geçersiz kılma etkinleştirildiğinde ve veritabanında FTS varlığı bulunduğunda kilitlenmeye neden olan hata düzeltildi. (b/148969394)
- Room ek açıklama işlemcisinde SQLite yerel kitaplıkları yüklenirken derleyicinin paralel derlemeler nedeniyle kilitlenmesine neden olan sorun düzeltildi. (b/146217083)
Sürüm 2.2.4
Sürüm 2.2.4
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ü şu commit'leri içerir.
Hata Düzeltmeleri
- İşlem gerçekten başlamadan önce eşzamanlı yordam hızlıca iptal edilirse işlemlerin kilitlenmesine neden olan askıya alma işlemiyle ilgili sorun düzeltildi. (b/148181325)
- JDK 9 ile derleme yapılırken @Generated'ın yanlış kullanılmasıyla ilgili sorun düzeltildi. (b/146538330)
- Kotlin'deki bir DAO arayüzünde somut bir 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
iptal edilir. 2.2.3 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Room'un, herhangi bir taşıma işleminden geçmemiş ve şemasında dizinler içeren eski bir karma bulunduran veritabanını doğrulayamamasına neden olan 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
iptal edilir. 2.2.2 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- 999'dan fazla satır içeren bire bir ilişki toplanırken Room'un null değerini 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
iptal edilir. 2.2.1 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Room'un, derleyici seçeneği
expandProjection
AÇIK ikenCURSOR_MISMATCH
hakkında yanlış uyarı vermesine neden olan hata düzeltildi. (b/140759491) - Derleme sırasında sorguları doğrulamak için kullanılan eksik yerel kitaplığı işlemek üzere 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
iptal edilir. 2.2.0 sürümü şu commit'leri içerir.
2.1.0 sürümünden beri yapılan önemli değişiklikler
- Önceden Paketlenmiş Veritabanı:
RoomDatabase.Builder
içinde iki yeni API, önceden doldurulmuş bir veritabanı dosyası verildiğindeRoomDatabase
oluşturmak için kullanılabilir.createFromAsset()
, önceden doldurulmuş veritabanı dosyası APK'nın öğeler klasöründeyken,createFromFile()
ise dosya rastgele bir konumdayken kullanılır. Bu API'lerin kullanımları, yıkıcı taşıma işlemlerinin davranışını değiştirir. Bu nedenle, geri dönüş taşıma işlemi sırasında Room, önceden doldurulmuş veritabanını varsa yeniden kopyalamaya çalışır. Aksi takdirde, yalnızca tüm tabloları bırakıp yeniden oluşturmaya geri döner. 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 sahip. Varsayılan değerler, bir veritabanı şemasının parçasıdır ve belirtilmesi durumunda taşıma sırasında doğrulanır. b/64088772 - Çoktan Çoka İlişkiler:
@Relation
artıkassociateBy
adlı yeni bir özelliğe sahip. Bu özellik, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gereken bir ilişkiyi bildirmek için kullanılan yeni bir@Junction
ek açıklaması alıyor. b/69201917 - Bire Bir İlişkiler:
@Relation
ile açıklama eklenmiş POJO alanlarındakiList
veyaSet
türünde olma kısıtlaması kaldırıldı. Bu sayede, tek değerli ilişkilerin gösterilmesine olanak tanındı. b/62905145 - Hedef Varlık: DAO açıklamaları
@Insert
,@Update
ve@Delete
artıktargetEntity
adlı yeni bir özelliğe sahip. Bu özellik, DAO yönteminin üzerinde çalışması gereken hedef tablonun belirtilmesine olanak tanır. Bu, söz konusu DAO yöntemlerinin parametrelerinin, kısmi varlıklar olarak yorumlanacak rastgele POJO'lar olmasına olanak tanır. Bu, uygulamada 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ünde olabilir. Döndürülen akış, sorgudaki gözlemlenen tablolar geçersiz kılınırsa yeni bir değer grubu yeniden yayınlar.Channel<T>
dönüş türüyle bir DAO işlevi bildirmek hatadır. Bunun yerine Room,Flow
kullanmanızı ve ardındanFlow
değeriniChannel
değerine dönüştürmek için komşu işlevleri kullanmanızı önerir. b/130428884 - Gradle Artımlı Ek Açıklama İşlemcisi: Room artık Gradle'ı yalıtan bir ek açıklama işlemcisidir ve artımlılık, işlemci seçeneği
room.incremental
ile etkinleştirilebilir. Daha fazla bilgi için Room Derleyici Seçenekleri başlıklı makaleyi inceleyin. Herhangi bir sorunla karşılaşırsanız lütfen buradan hata bildiriminde bulunun. Gelecekteki kararlı bir sürümde artırılabilirliği varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217 - Genişletilmiş Projeksiyonlar: Room'un, yıldız projeksiyonlu bir sorguyu yalnızca döndürülen türdeki POJO'da bulunan 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ı olanSongIdAndTitle
adlı bir POJO döndüren@Query("SELECT * FROM Song")
ile bir DAO yöntemi için. Ardından Room, sorguyuSELECT id, title FROM Song
olarak yeniden yazar. Böylece, döndürülen türü karşılamak için gereken minimum sütun grubu getirilir. Bu, sorgu, döndürülen POJO türündeki herhangi bir alanla eşleşmeyen ek sütunlar döndürdüğünde gösterilenCURSOR_MISMATCH
uyarısını tamamen ortadan kaldırır.
Sürüm 2.2.0-rc01
5 Eylül 2019
androidx.room:room:2.2.0-rc01
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Oda 2.2.0-beta01
'dan beri 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
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Hata düzeltmeleri
- Coroutine Flow sorgusunun belirli bir süre sonra yeni değerler yayınlamayı durdurmasına neden olan hata düzeltildi. (b/139175786)
- Room 1.0'dan beri taşıma işlemi yapılmamış bir veritabanı açılırken Room'un eski şema karma kodunu kabul etmemesi nedeniyle geçersiz şemadan kaynaklanan çalışma zamanı kilitlenmesi sorunu düzeltildi. (b/139306173)
Sürüm 2.2.0-alpha02
7 Ağustos 2019
androidx.room:room-*:2.2.0-alpha02
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni Özellikler
- Eş yordam akışı:
@Query
DAO yöntemleri artıkFlow<T>
dönüş türünde olabilir. Döndürülen akış, sorgudaki gözlemlenen tablolar geçersiz kılınırsa yeni bir değer grubu yeniden yayınlar.Channel<T>
dönüş türüyle bir DAO işlevi bildirmek hatadır. Bunun yerine Room,Flow
kullanmanızı ve ardındanFlow
değeriniChannel
değerine dönüştürmek için komşu işlevleri kullanmanızı önerir. b/130428884 - Genişletilmiş Projeksiyonlar: Room'un, yıldız projeksiyonlu bir sorguyu yalnızca döndürülen türdeki POJO'da bulunan 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ı olanSongIdAndTitle
adlı bir POJO döndüren@Query("SELECT * FROM Song")
ile bir DAO yöntemi için. Ardından Room, sorguyuSELECT id, title FROM Song
olarak yeniden yazar. Böylece, döndürülen türü karşılamak için gereken minimum sütun grubu getirilir. Bu, sorgu, döndürülen POJO türündeki herhangi bir alanla eşleşmeyen ek sütunlar döndürdüğünde gösterilenCURSOR_MISMATCH
uyarısını tamamen ortadan kaldırır. onDestructiveMigrate
, Room'un bir veritabanını yıkıcı bir şekilde taşıdığı zamanlar içinRoomDatabase.Callback
'e eklenen yeni bir geri çağırma API'sidir. b/79962330
Hata Düzeltmeleri
- Alan korunduğunda Room'un alan ayarlayıcı olarak bir yöntem kullanarak yanlış kod oluşturmasına neden olan hata düzeltildi. b/136194628
- Çoklu örnek geçersiz kılma etkinleştirildiğinde ve geçersiz kılma hizmeti sonlandırıldığında InvalidationTracker'ın ikinci bir işlemde NPE'ye neden olan hata düzeltildi. b/137454915
- Room'un,
@RawQuery
ile açıklama eklenmiş devralınan bir askıya alma işlevinin dönüş türünü doğru şekilde tanımlamamasına neden olan hata düzeltildi. b/137878827 - İlişkilendirme anahtarı BLOB türündeyken
@Relation
için oluşturulan kod, karşılaştırılabilir birByteBuffer
kullanacak şekilde güncellendi. b/137881998 - Room'un,
@Insert
,@Update
ve@Delete
'nin kısmi öğe parametreleri olarak kullanılan POJO'larda ayarlayıcıların eksik olmasıyla ilgili hata vermesine neden olan hata düzeltildi. b/138664463 - Varlık sınıfı belirli DAO yöntemlerinde kullanıldığında Room'un
@Entity
aracılığıyla yoksayılan bir sütun için getter ve setter'ların eksik olduğunu bildirmesine neden olan 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 nedeniyle, yeniden kullanılan parametrelerle sorgu yürütülürken çalışma zamanı istisnasına neden olan hata düzeltildi. b/137254857
Sürüm 2.2.0-alpha01
10 Temmuz 2019
Yeni Özellikler
- Önceden Paketlenmiş Veritabanı:
RoomDatabase.Builder
içinde iki yeni API, önceden doldurulmuş bir veritabanı dosyası verildiğindeRoomDatabase
oluşturmak için kullanılabilir.createFromAsset()
, önceden doldurulmuş veritabanı dosyası APK'nın öğeler klasöründeyken,createFromFile()
ise dosya rastgele bir konumdayken kullanılır. Bu API'lerin kullanımları, yıkıcı taşıma işlemlerinin davranışını değiştirir. Bu nedenle, geri dönüş taşıma işlemi sırasında Room, önceden doldurulmuş veritabanını varsa yeniden kopyalamaya çalışır. Aksi takdirde, yalnızca tüm tabloları bırakıp yeniden oluşturmaya geri döner. 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 sahip. Varsayılan değerler, bir veritabanı şemasının parçasıdır ve belirtilmesi durumunda 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 eklenenler gibi varsayılan değerler varsa ve aynı sütunlara@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 İşlemleri başlıklı makaleyi inceleyin. - Çoktan Çoka İlişkiler:
@Relation
artıkassociateBy
adlı yeni bir özelliğe sahip. Bu özellik, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gereken bir ilişkiyi bildirmek için kullanılan yeni bir@Junction
ek açıklaması alıyor. b/69201917 - Bire Bir İlişkiler:
@Relation
ile açıklama eklenmiş POJO alanlarındakiList
veyaSet
türünde olma kısıtlaması kaldırıldı. Bu sayede, tek değerli ilişkilerin gösterilmesine olanak tanındı. b/62905145 - Hedef Varlık: DAO açıklamaları
@Insert
,@Update
ve@Delete
artıktargetEntity
adlı yeni bir özelliğe sahip. Bu özellik, DAO yönteminin üzerinde çalışması gereken hedef tablonun belirtilmesine olanak tanır. Bu, söz konusu DAO yöntemlerinin parametrelerinin, kısmi varlıklar olarak yorumlanacak rastgele POJO'lar olmasına olanak tanır. Bu, uygulamada kısmi ekleme, silme ve güncelleme işlemlerine olanak tanır. b/127549506 - Gradle Artımlı Ek Açıklama İşlemcisi: Room artık Gradle'ı yalıtan bir ek açıklama işlemcisidir ve artımlılık, işlemci seçeneği
room.incremental
ile etkinleştirilebilir. Daha fazla bilgi için Room Derleyici Seçenekleri başlıklı makaleyi inceleyin. Herhangi bir sorunla karşılaşırsanız lütfen buradan hata bildiriminde bulunun. Gelecekteki kararlı bir sürümde artırılabilirliği varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217
Hata Düzeltmeleri
- Bir sorgunun Rx akışı, sorgu tamamlanmadan önce kaldırıldığında Room artık
EmptySetResultException
değerini genel hata işleyiciye yaymayacak. b/130257475 @RawQuery
ile açıklama eklenmiş bir suspend DAO işlevinin dönüş türü olmadığında Room'un yanlış bir hata mesajı göstermesine neden olan hata düzeltildi. b/134303897- Room artık ham türlerle DAO bağdaştırıcıları oluşturmayacak. b/135747255
Sürüm 2.1.0
Sürüm 2.1.0
13 Haziran 2019
Room 2.1.0, 2.1.0-rc01
sürümünde herhangi bir değişiklik yapılmadan yayınlandı. Sürüme dahil edilen commit'leri burada bulabilirsiniz.
2.0.0 sürümünden beri yapılan önemli değişiklikler
- FTS: Room artık FTS3 veya FTS4 tablosuyla eşleme içeren varlıkları destekliyor.
@Entity
ile açıklama eklenen sınıflara artık@Fts3
veya@Fts4
ile ek açıklama eklenerek eşleme tam metin arama tablosu içeren bir sınıf bildirilebilir. Daha fazla özelleştirme için FTS seçenekleri, açıklama yöntemleriyle kullanılabilir. - Görünümler: Room artık
@DatabaseView
ek açıklamasını kullanarak bir sınıfı görünüm olarak da bilinen depolanmış sorgu olarak bildirmeyi destekliyor. - Couroutines: DAO yöntemleri artık askıya alınabilir işlevler olabilir. Bu işlevden yararlanmak için bağımlılıklarınıza
room-ktx
ekleyin. ktx yapısı, eş yordam içinde veritabanı işlemleri gerçekleştirmek içinRoomDatabase.withTransaction
uzantı işlevini de sağlar. - Auto Value: Room artık AutoValue ek açıklamalı sınıfların varlık ve POJO olarak bildirilmesini destekliyor. Oda ek açıklamaları
@PrimaryKey
,@ColumnInfo
,@Embedded
ve@Relation
artık otomatik değer ek açıklamalı bir sınıfın soyut yöntemlerinde bildirilebilir. Room'un bu notları doğru şekilde anlayabilmesi için@CopyAnnotations
ile birlikte kullanılması gerektiğini unutmayın. - Ek Asenkron Destek:
@Insert
,@Delete
veya@Update
ile açıklama eklenmiş DAO yöntemleri,INSERT
,DELETE
veyaUPDATE
ifadelerini içeren@Query
ile birlikte artık Rx dönüş türlerini (Completable
,Single
,Maybe
) ve Guava'nın dönüş türünü (ListenableFuture
) destekliyor. Ayrıca, askıya alma işlevleri de olabilirler. enableMultiInstanceInvalidation
, aynı veritabanı dosyası kullanılarak RoomDatabase'in birden fazla örneğinde geçersiz kılmayı etkinleştirmek içinRoomDatabase.Builder
'deki 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
'deki yeni bir API'dir.ignoredColumns
,@Entity
açıklamasında bulunan ve yoksayılan alanları ada göre listelemek için kullanılabilen yeni bir API'dir.- Room artık veri sınıflarında Kotlin'in birincil oluşturucusunu doğru şekilde kullanacak ve özelliklerin
vars
olarak bildirilmesine gerek kalmayacak.
Sürüm 2.1.0-rc01
29 Mayıs 2019
Hata Düzeltmeleri
- Önceden ayarlanmış bir temp_store yapılandırması nedeniyle oluşabilecek bir oda başlatma hatası düzeltildi. b/132602198
- SQLite 3.27.0 ve sonraki sürümlerini 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 gerçekleştiğinde 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 yapılmadan yayınlandı. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Sürüm 2.1.0-alpha07
25 Nisan 2019
API/Davranış Değişiklikleri (API/Behavior Changes)
RoomDatabase.withTransaction
uzantı işlevi, alıcı olarakCoroutineScope
içeren bir işlev bloğu almayacak şekilde değiştirildi. Bu, işlemleri işlem bloğunda eşzamanlı olarak çalıştırmak için gereken ekcoroutineScope { }
sarmalayıcının atlanmasını önler.
Hata Düzeltmeleri
- Room'un, Collection türünde bir parametre içeren Kotlin DAO işlevi için bir TypeConverter ile eşleşememesine neden olan hata düzeltildi. b/122066791
Sürüm 2.1.0-alpha06
22 Mart 2019
API/Davranış Değişiklikleri (API/Behavior Changes)
- Eşzamansız işlem sorguları artık seri hale getirildi. Bu sayede Room, veritabanı işlemlerini yürütmek için birden fazla iş parçacığı kullanmayacak.
İşlemler için kullanılacak yürütücünün yapılandırılmasına olanak tanımak üzere
RoomDatabase.Builder.setTransactionExecutor(Executor)
eklendi. RoomDatabase.runInTransaction(Callable)
artık işaretli istisnaları RuntimeException'lara sarmayacak. b/128623748
Hata Düzeltmeleri
- Hem içerik tablosu hem de harici içerik FTS tablosu için gözlemciler eklendiğinde geçersiz kılma izleyicinin içerik tablosunu gözlemlemeyi durdurmasına neden olan hata düzeltildi. b/128508917
Room
SQLite 3.24.0 ile eşleşecek şekilde SQLite grameri güncellendi. b/110883668
Sürüm 2.1.0-alpha05
13 Mart 2019
Yeni Özellikler
- Uzantı işlevi
RoomDatabase.withTransaction
, eş yordam içinde güvenli bir şekilde veritabanı işlemleri gerçekleştirmenize olanak tanır. Oda uzantıları işlevleri ve eş yordam desteğiroom-ktx
yapısında mevcuttur. @Transaction
ile açıklama eklenmiş soyut olmayan DAO yöntemleri artık askıya alma işlevleri olabilir. b/120241587
API/Davranış Değişiklikleri (API/Behavior Changes)
- Yapı
room-coroutines
, diğer androidx yapılarıyla aynı adlandırma kuralı kullanılarakroom-ktx
olarak yeniden adlandırıldı. RoomDatabase
içindekibeginTransaction
,setTransactionSuccessful
veendTransaction
,runInTransaction
veroom-ktx
uzantı işleviwithTransaction
lehine kullanımdan kaldırıldı.
Hata Düzeltmeleri
- Kullanılan belirteçleyici SIMPLE ise belirteçleyici bağımsız değişkenlerinin bırakılmasına neden olan hata düzeltildi. b/125427014
- Room'un, türü iç sınıf olan parametrelerle askıya alma işlevlerini doğru şekilde tanımlayamamasına neden olan hata düzeltildi. b/123767877
@Query
,UPDATE
veyaDELETE
ifadeleri içeren ertelenmişINSERT
DAO yönteminin sorguyu ana iş parçacığında hemen hazırlamasına neden olan hata düzeltildi. b/123695593- Room'un belirli askıya alma işlevleri için yanlış kod oluşturmasına neden olan çeşitli hatalar düzeltildi. b/123466702 ve b/123457323
- Oluşturulan kodda, yöntemlerin kullanımının kullanımdan kaldırılmış olması durumunda doğru şekilde bastırılmamasına neden olan hata düzeltildi. b/117602586
- androidx.sqlite'ın Room bağımlılığı, bozuk veritabanlarının doğru şekilde işlenmesiyle ilgili düzeltmeleri 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
yapay nesnesine bağlıdır (KT-27991). Bu bağımlılık, proje depolarınızamaven { url "https://kotlin.bintray.com/kotlinx/" }
eklenerek çözülebilir.
Sürüm 2.1.0-alpha04
25 Ocak 2019
Yeni Özellikler
@Query
ile açıklama eklenmiş veINSERT
,UPDATE
veyaDELETE
ifadelerini içeren DAO yöntemleri artıkSingle
,Mayble
,Completable
veListenableFuture
gibi asenkron türleri döndürebilir. Ayrıca, işlevler askıya da alınabilir. b/120227284
API/Davranış Değişiklikleri (API/Behavior Changes)
- Room,
@Transaction
ile açıklama eklenmiş soyut olmayan bir DAO yöntemiSingle
,Mayble
,Completable
,LiveData
veyaListenableFuture
gibi bir asenkron tür döndürürse artık hata verecek. İşlemler iş parçacığıyla sınırlı olduğundan, Room'un farklı iş parçacıklarında sorgu gerçekleştirebilecek bir işlev etrafında işlem başlatıp sonlandırması şu anda mümkün değildir. b/120109336 OnConflictStrategy.FAIL
veOnConflictStrategy.ROLLBACK
, Android'in mevcut SQLite bağlamalarıyla beklendiği gibi çalışmadığı için@Deprecated
olarak işaretlendi. b/117266738
Hata Düzeltmeleri
- DAO yöntemi bir askıya alma işlevi olduğunda Room'un, dönüş türünün TypeConverter'ını doğru şekilde kullanmaması hatası düzeltildi. b/122988159
- Room'un devralınan askıya alma işlevlerini yanlışlıkla askıya alma işlevi olmayan olarak tanımlamasına neden olan 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 - Bir
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 String alıyor. Bu, özel belirteçleyicilerin Room tarafından kullanılmasına olanak tanır. Yerleşik belirteçler,FtsOptions
içinde dize sabitleri olarak tanımlanmaya devam eder. b/119234881
Yeni Özellikler
- Couroutines: DAO yöntemleri artık askıya alınabilir işlevler olabilir. Odalarda askıya alma işlevlerini desteklemek için yeni bir yapay nesne yayınlandı:
room-coroutines
. b/69474692 @Insert
,@Delete
veya@Update
ile açıklama eklenmiş DAO yöntemleri artık dönüş türü olarakListenableFuture
'ı destekliyor. b/119418331
Hata Düzeltmeleri
- Room'un,
@Entity
öğesininignoredColumns
özelliğinde sütun içeren bir oluşturucu bulmaya yanlışlıkla çalıştığı hata düzeltildi. b/119830714 - Room'un, oluşturulan uygulamada DAO yöntemi parametrelerini nihai olarak işaretlememesine neden olan hata düzeltildi. b/118015483
Room
işlemcisinin, özel semboller içeren bir sorguda hata bildirilirken kilitlenmesine neden olan hata düzeltildi. b/119520136- Room'un,
Collection
uygulamalarınıIN
ifadesinin bağımsız değişkenleri olarak reddetmesine neden olan hata düzeltildi. b/119884035 - Room'dan döndürülen LiveData'nın, sonsuza kadar gözlemlendiğinde çöp toplama işlemine tabi tutulup artık yeni veri yayınlamamasına neden olan hata düzeltildi. b/74477406
- Kilit anlaşmazlığını azaltmak için
RoomDatabase
adlı kullanıcının yakın kilit özelliği güncellendi. b/117900450
Sürüm 2.1.0-alpha02
30 Ekim 2018
Yeni Özellikler
@Relation
içinde@DatabaseView
öğesine referans verme desteği eklendi. b/117680932
Hata Düzeltmeleri
- Room'un, Rx dönüş türüne abone olurken ve bu türü kullanımdan kaldırırken ana iş parçacığında disk G/Ç'si gerçekleştirmesine neden olan hata düzeltildi. b/117201279
- Room'un Kotlin varlık sınıfındaki bir alan için uygun tür dönüştürücü bulamamasına neden olan hata düzeltildi. b/111404868
- Room'un, bağımsız değişken içermeyen bir Kotlin varsayılan yöntemi içeren
DAO
arayüz uygulaması için yanlış kod oluşturmasına neden olan hata düzeltildi. b/117527454 Room
SQLite dilbilgisi ayrıştırıcısı güncellendi. Bu güncelleme, uzun derleme sürelerine neden olan performans sorununu düzeltir. b/117401230
Sürüm 2.1.0-alpha01
8 Ekim 2018
Yeni Özellikler
- FTS: Room artık FTS3 veya FTS4 tablosuyla eşleme içeren varlıkları destekliyor.
@Entity
ile açıklama eklenen sınıflara artık@Fts3
veya@Fts4
ile ek açıklama eklenerek eşleme tam metin arama tablosu içeren bir sınıf bildirilebilir. Daha fazla özelleştirme için FTS seçenekleri, açıklama yöntemleriyle kullanılabilir. b/62356416 - Görünümler: Room artık @DatabaseView ek açıklaması kullanılarak bir sınıfın görünüm olarak da bilinen depolanmış sorgu olarak bildirilmesini destekliyor. b/67033276
- AutoValue: Room artık AutoValue ek açıklamalı sınıfların varlık ve POJO olarak bildirilmesini destekliyor. Oda ek açıklamaları
@PrimaryKey
,@ColumnInfo
,@Embedded
ve@Relation
artık otomatik değer ek açıklamalı bir sınıfın soyut yöntemlerinde bildirilebilir. Room'un bu ek açıklamaları doğru şekilde anlaması için@CopyAnnotations
ile birlikte kullanılması gerektiğini unutmayın. b/62408420 - Ek Rx dönüş türleri desteği:
@Insert
,@Delete
veya@Update
ile açıklama eklenmiş DAO yöntemleri artıkCompletable
,Single<T>
veMaybe<T>
Rx 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 oluşturucu parametreleri olabilir.enableMultiInstanceInvalidation
: Aynı veritabanı dosyası kullanılarak RoomDatabase'in birden fazla örneğinde geçersiz kılmayı etkinleştirmek içinRoomDatabase.Builder
'deki yeni bir API'dir. Bu çoklu örnek geçersiz kılma mekanizması, birden fazla işlemde de çalışır. b/62334005fallbackToDestructiveMigrationOnDowngrade
: Bir sürüm düşürme işlemi gerçekleşirse veritabanını otomatik olarak yeniden oluşturmak içinRoomDatabase.Builder
'deki yeni bir API'dir. b/110416954ignoredColumns
:@Entity
ek açıklamasında, yoksayılan alanları ada göre listelemek için kullanılabilecek yeni bir API'dir. Bir varlıkta devralınan alanları yoksaymak için kullanışlıdır. b/63522075
API/Davranış Değişiklikleri (API/Behavior Changes)
RoomDatabase
konumundakimCallback
vemDatabase
artık@Deprecated
ve Room'un bir sonraki ana sürümünde kaldırılacak. b/76109329
Hata Düzeltmeleri
- Room'un başlatma sırasında bozuk bir veritabanından veya hatalı bir taşıma işleminden düzgün şekilde kurtulamamasına neden olan iki sorun düzeltildi. b/111504749 ve b/111519144
- Room artık Kotlin'in birincil oluşturucusunu veri sınıflarında doğru şekilde kullanacak ve alanların
vars
olarak bildirilmesine gerek kalmayacak. 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 yapılmadan yayınlandı.
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 yapılmadan yayınlandı.
Sürüm 2.0.0-beta01
2 Temmuz 2018
API/Davranış Değişiklikleri (API/Behavior Changes)
- Sorguların nerede çalıştırılacağının özelleştirilmesine olanak tanıyan
RoomDatabase.Builder.setQueryExecutor()
eklendi - RxJava2
Observable
desteği eklendi - Oluşturulan DAO ve veritabanı uygulamaları artık nihai
Hata Düzeltmeleri
- "cannot find getter for field" hatasında sınıf/alan adı belirtme 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 şu 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"
}
Sürüm 1.1.1
Sürüm 1.1.1
19 Haziran 2018
1.1.1
numaralı oda, 1.1.1-rc1
numaralı odanın aynısı.
Sürüm 1.1.1-rc1
16 Mayıs 2018
Taşıma işlemi kullanıyorsanız 1.1.0
yerine Room 1.1.1-rc1
kullanmanızı önemle tavsiye ederiz.
Room'un taşıma sonrası başlatmayı düzgün şekilde yapmamasına neden olan 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ını düzeltme b/78199923
Sürüm 1.1.0-beta2
5 Nisan 2018
Hata Düzeltmeleri
Room
RxSingle
veMaybe
uygulamalarında, sorguyu önceden geri dönüştürerek döndürülenSingle
veyaMaybe
örneklerine birden fazla gözlemci eklemeniz durumunda sorunlara 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
.b/77235565
Sürüm 1.1.0-beta1
21 Mart 2018
API Değişiklikleri
- API inceleme geri bildirimlerine göre
@RawQuery
artık sorgu parametresi olarakString
iletilmesini kabul etmiyor. [SupportSQLiteQuery][ref-SupportSQLiteQuery] kullanmanız gerekir. (Bağımsız değişken desteğiyle [SupportSQLiteQuery][ref-SupportSQLiteQuery] örneğini kolayca oluşturmak için [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] konusuna 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
layarak alanı işletim sistemine geri döndürmeye çalışıyor. - [
@RawQuery
][ref-RawQuery] artık Pojo,Embedded
alanları veyaRelation
'leri aracılığıyla bir veya daha fazla öğeye referans verdiği süreceobservedEntities
özelliği için herhangi bir Pojo'yu kabul ediyor. b/74041772 - Sayfalama: Room'un DataSource uygulaması artık çok tablolu bağımlılıkları (ör. ilişkiler ve birleştirmeler) doğru şekilde işliyor. Daha önce bunlar yeni sonuçları tetikleyemiyor veya derlenemiyordu. 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
'taki bu yeni API, yıkıcı geçişlere hangi başlangıç şema sürümlerinden 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 Paging API'lerini (alfa-4+) destekliyor ve kullanımdan kaldırılan
LivePagedListProvider
desteğini sonlandırıyor. Yeni Room alfa sürümünü kullanmak içinalpha-4
veya sonraki bir sürümü kullanmanız ve henüz yapmadıysanızLivePagedListProvider
sürümündenLivePagedListBuilder
sürümüne 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