Room
| Son Güncelleme | Kararlı sürüm | Sürüm Adayı | Beta Sürümü | Alfa sürümü |
|---|---|---|---|---|
| 22 Ekim 2025 | 2.8.3 | - | - | - |
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.8.3" 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.8.3" 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.
Bu özelliğin kullanıma sunulduğu 2.6.0 sürümü ile ilgili notlarda daha fazla bilgi bulabilirsiniz.
|
Room Gradle eklentisini kullanma
Room'un 2.6.0 ve sonraki sürümlerinde, 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ümünden 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 eklentinin sürümünüz 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 varsa 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.3
22 Ekim 2025
androidx.room:room-*:2.8.3 iptal edilir. 2.8.3 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Bir Cursor üzerinde yineleme yapılırken aşırı JNI çağrılarına ve önemli performans düşüşüne neden olan Room SQLite Wrapper ile ilgili performans sorunu düzeltildi.
Sürüm 2.8.2
8 Ekim 2025
androidx.room:room-*:2.8.2 iptal edilir. 2.8.2 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Bir Flow emisyonundan otomatik olarak kapatılan bir veritabanı yeniden açıldığında oluşabilecek kilitlenmeyi düzeltir (b/446643789).
Sürüm 2.8.1
24 Eylül 2025
androidx.room:room-*:2.8.1 iptal edilir. 2.8.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Askıya alma lambda'sı içeren bir DAO işlevi işlenirken meydana gelen işlemci kilitlenmesi düzeltildi. (b/442220723).
- Akışların en son güncellemeleri almasını engelleyen yarış durumu düzeltildi.
Sürüm 2.8.0
10 Eylül 2025
androidx.room:room-*:2.8.0 iptal edilir. 2.8.0 sürümü bu commit'leri içerir.
2.7.0 sürümünden beri yapılan önemli değişiklikler:
SQLiteDriveryapılandırılmış birRoomDatabaseöğesindenSupportSQLiteDatabasesarmalayıcı almak için API'ler içeren yeni birandroidx.room:room-sqlite-wrapperyapısı eklendi. Sarmalayıcıyı almak için yeni uzantı işleviniRoomDatabase.getSupportWrapper()kullanın. Bu,SupportSQLiteDatabasekullanımını sürdürmek için kullanılan bir uyumluluk yapısıdır. GenellikleroomDatabase.openHelper.writableDatabase'den alınır. Room veritabanıSQLiteDriverile yapılandırılmış olsa bile bu yapı kullanılabilir. Bu sarmalayıcı, SQLiteDriver API'lerini kullanmak isteyen ancak SupportSQLite API'lerini yoğun bir şekilde kullanan ve yine deBundledSQLiteDriver'den yararlanmak isteyen kod tabanlarının artımlı olarak taşınması için kullanışlıdır. Daha fazla bilgi için taşıma kılavuzuna göz atın.- KMP hedefleri Watch OS ve Tv OS için destek eklendi.
- Kitaplığın Android minSDK'sı API 21'den API 23'e güncellendi.
Sürüm 2.8.0-rc02
27 Ağustos 2025
androidx.room:room-*:2.8.0-rc02 iptal edilir. 2.8.0-rc02 sürümü bu commit'leri içerir.
API Değişiklikleri
- minSDK'yı API 21'den API 23'e güncelleyin (Ibdfca, b/380448311, b/435705964, b/435705223)
- Room Gradle eklentisiyle uyumlu minimum Android Gradle eklentisi (AGP) sürümünü 8.1'den 8.4'e güncelleyin. (Ia0d28)
Hata Düzeltmeleri
- Önceden paketlenmiş bir veritabanı için taşıma yolu mevcut olsa bile yıkıcı bir taşıma işleminin gerçekleştirilmesine neden olan sorun düzeltildi (b/432634197).
Sürüm 2.8.0-rc01
13 Ağustos 2025
androidx.room:room-*:2.8.0-rc01 iptal edilir. 2.8.0-rc01 sürümü bu commit'leri içerir.
API Değişiklikleri
Hata Düzeltmeleri
- Room Flows'un eşzamansız çoklu sorgu/yazma durumunda en son sorgu sonucunu yayınlamadığı yarış durumu düzeltildi. (Ic9a3c)
Sürüm 2.8.0-beta01
1 Ağustos 2025
androidx.room:room-*:2.8.0-beta01 iptal edilir. 2.8.0-beta01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Tablo ve görünüm adları artık yıkıcı taşımalar sırasında doğru şekilde kod dışına alınmaktadır. (9e55f8, b/427095319)
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
SQLiteDriveryapılandırılmış birRoomDatabaseöğesininSupportSQLiteDatabasesarmalayıcısını almak için API'ler içeren yeni birandroidx.room:room-sqlite-wrapperyapısı eklendi. Sarmalayıcıyı almak için yeni uzantı işleviniRoomDatabase.getSupportWrapper()kullanın. Bu,SupportSQLiteDatabasekullanımını sürdürmek için kullanılan bir uyumluluk yapısıdır. GenellikleRoomDatabase.openHelper.writableDatabase'den alınır. Room veritabanıSQLiteDriverile yapılandırılmış olsa bile bu yapı kullanılabilir. Bu sarmalayıcı,SQLiteDriver'yı kullanmak isteyen ancakSupportSQLiteAPI'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
AndroidSQLiteDriverkullanılırken zaman zaman meydana gelebilecek 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ı elde etmek çok uzun sürdüğünde artık
SQLiteExceptionoluşturulmayacak, bunun yerine kitaplık tarafından bir günlük mesajı gönderilecek. Hata oluşturmak yerine günlük kaydı tutmak, iOS'te askıya alma döngülerine neden olan ve Room'un bağlantıyı edinirken 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 çözümler sunar. (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
IndexOutOfBoundsExceptionhatası 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,
SQLiteDriverile 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
InterruptedExceptionoluş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 düzeltildi. (b/348227770, Ic53f3)
- KSP aracılığıyla JVM dışı kaynaklar işlenirken
NullPointerExceptionnedeniyle 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_timeoutdeğerini ayarlamamasına ve bunun daSQLException: Error code: 5, message: database is lockedsorunları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ın açılmaması gerektiği halde açılması ve veritabanı kapalıysa hızlı bir şekilde yanlış değerini döndürmesiyle ilgili sorun 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-runtimeJVM 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
Roomsayfalama entegrasyonuyla ilgili sorun düzeltildi. Eva'ya teşekkür ederiz. (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ümlerin yeniden oluşturulmasını sağlamak için görünümleri bırakıyor. Böylece,
allowDestructiveMigrationForAllTablesAÇ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
RawRoomQueryalan yeni eklenenconvertRows()yöntem imzasını askıya alma işlevi olarak yeniden gözden geçirin. (Ie57b5, b/369136627)
Hata Düzeltmeleri
@RelationilePagingSourcebirlikte 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
ByteBufferile İlişkiler'i desteklemek için dahiliByteArrayWrappersı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 databasehatasına neden olanroom-pagingKMP 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-pagingyapay nesneleri, 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
Cursorkelimesinin kullanıldığı tüm uyarılar ve hata mesajları,Cursorkelimesi 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
UUIDkullanarak 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
MigrationTestHelpertarafından kullanılabilecek.
Hata Düzeltmeleri
RoomDatabaseConstructorişlevinin oluşturulan "gerçek" değerinin,initializeiş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
RoomDatabaseiç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ğil. instantiateImpl() stratejisinin yerini alan iki yeni API (@ConstructedBy ve RoomDatabaseConstructor) kullanıma sunuldu. Yeni strateji aşağıdaki gibidir:
RoomDatabaseConstructoröğesini uygulayan bir expect nesnesi tanımlayın.expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>@ConstructedBykullanarak nesneyi@Databasebeyanıyla bağlayın.@Database(...) @ConstructedBy(MyDatabaseCtor::class) // NEW abstract class MyDatabase : RoomDatabaseYeni bir veritabanı örneği oluşturun ancak fabrika bağımsız değişkeni 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 sunanRoomRawQueryadlı yeni bir API ekleyerek Room KMP'de@RawQuerydesteği.@RawQueryile açıklama eklenmiş işlevler artık tek parametre olarakRoomRawQuerykabul edebilir. (Iea844, b/330586815) setQueryCallback()kabul eden birCoroutineContextaşırı yüklemesi ekleyin. (Id66ff, b/309996304)linuxArm64Kotlin Multiplatform hedefleri için destek eklendi (I139d3, b/338268719)
Hata Düzeltmeleri
- Room'un Android olmayan hedeflerde
recursiveFetchArrayMapiç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,SQLiteolarak,BundledSQLiteKtiseBundledSQLiteolarak yeniden adlandırıldı. (I8b501)
Hata Düzeltmeleri
AndroidSQLiteDriverkullanı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)
@Databaseek 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
ConcurrentModificationExceptionhatası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
RoomDatabaseuygulamasını örneklendirirken 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ı
CoroutineContextile yapılandırmak için bir API, oluşturucuya eklendi:RoomDatabase.Builder.setQueryCoroutineContext.RoomDatabaseöğesinin yalnızcasetQueryExecutorkullanan 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. SQLitesürücüsüyle Room'u yapılandırmak için bir API eklendi:RoomDatabase.Builder.setDriver().SQLiteDriver 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.useReaderConnectionveRoomDatabase.useWriterConnection. - Varios Room ile ilgili çeşitli geri çağırmalar artık
SupportSQLiteDatabaseyerineSQLiteConnectionalan 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 şunlardır: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-runtimeile 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,
EntityCursorConverteriç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) PagingSourceyüklemelerinden oluşturulan istisnalar artık Throwable'ı içerenLoadResult.ErrorLoadStateUpdateolarak 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.generateKotlinseç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 unutmamak önemlidir. 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'i kullanırken projelerinizin nullability açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerinin boş değer atanabilirliği önemlidir. Java'da ise bu durum çoğunlukla 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, null değerinin yayınlandığını varsayarak `Flow<foo?\>` kullanmanız gerekir. </foo?\></foo\>
- Room Gradle eklentisinin yeni yapısı,
androidx.roomkimliğiyle Room'a eklendi. Bu yapı, Room'da Gradle ek açıklama işleme seçenekleri aracılığıyla şemaların giriş ve çıkışlarının olmasıyla ilgili çeşitli sorunları çözüyor. Daha fazla bilgi için Room 2.6.0-alpha02 sürüm notlarına bakı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
SQLiteistisnası oluşturulduğunda upsert sırasında karşılaşılan özel durum2067 SQLITE_CONSTRAINT_UNIQUEistisnasını işleme. Upsert,2067 SQLITE_CONSTRAINT_UNIQUEistisnası oluşturulduğunda güncelleme işlemi 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ü şu commit'leri içerir.
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
@MapInfoyerine@MapColumnadlı yeni bir tür ek açıklaması oluşturuldu. Bir@MapInfoaçıklamasında sağlanan her sütun adı (keyColumnName,valueColumnNameveya her ikisi) için yalnızcacolumnNameiçeren bir@MapColumnaçı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,@MapColumnek açıklamasının@MapInfogibi 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@MapColumndokümanları inceleyin. (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ü şu commit'leri içerir.
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.generateKotlinseç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 unutmamak önemlidir. 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'i kullanırken projelerinizin nullability açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerinin boş değer atanabilirliği önemlidir. Java'da ise bu durum çoğunlukla 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, null değerinin 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şiklikleri 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 depolanmış sonuç içerdiği yanlış fikrini önlemek için işlev olarak yeniden yazılmalıdır. (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 sorunu düzeltildi. (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
FrameworkSQLiteHelperbölümünde veritabanı üst dizinini kontrol etmekten kaçının. (5de86b8) - Veritabanının açık olup olmadığını kontrol ederken
isOpenInternaliş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 coroutine'i içinde kapsüllenir. İşlem ileti dizisinin, işlemi başlatan ileti dizisinden farklı olması beklenir ancak bazı durumlarda aynı olabilir. Bu tür yeniden giriş durumlarını işlemek içinwithTransaction(), artık bir kontrol işine dayanmayacak şekilde yeniden düzenlendi. Bunun yerine, askıya alma işlem bloğunu işlem iş parçacığındakirunBlockingiç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 özellikleri kullanıma sunulur. 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-runtimekaynakları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 olarak,InvalidationTrackersürümünde artıkObserveriçindeonInvalidate()öğesiniMutableSettüründe değil,Settüründe bir parametreye sahip olacak şekilde bildirmeniz gerekecek. 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) - Room Paging'de destek için yeni oda sayfalandırma yapıları
room-paging-rxjava2,room-paging-rxjava3veroom-paging-guavaeklendi. @MapInfoiç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-beta02ile 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
.jsondosyalarına yanlış şekilde 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
IllegalStateExceptionyerineSQLiteConstraintExceptionistisnası oluşturacak. (I328dd) getOpenHelper,getQueryExecutorvegetTransactionExecutoröğelerinin alıcıları / özellikleri için Kotlin kaynak 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ü şu commit'leri içerir.
Yeni Özellikler
- Oda Sayfalama'da destek için yeni
room-pagingyapay nesneleriroom-paging-rxjava2,room-paging-rxjava3veroom-paging-guavaeklendi.(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 olarak,
InvalidationTrackersürümünde artıkObserveriçindeonInvalidate()öğesiniMutableSettüründe değil,Settüründe bir parametreye sahip olacak şekilde bildirmeniz gerekecek.@MapInfoiç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 kullanılan 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
@IntDefkullanı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ü çağrılı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-runtimeiçindekipagingilgili 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
@JvmNameek 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=allveya eşdeğeriyle derleme nedeniyle varsayılan arayüz yöntemi oluşturan bir gövdeye sahip@Transactionsuspend işlevi için kod oluşturmayla ilgili sorunu 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
@JvmNameek 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 hangi sürümlerden hangi sürümlere yapılacağını bildirmek için
@Database#autoMigrationskullanılabilir. Room'un tablolar ve sütun yeniden adlandırmaları veya silmeleriyle ilgili ek bilgiye ihtiyacı olduğunda@AutoMigrationek açıklaması, bu tür girişleri içeren bir spesifikasyon sınıfı bildirebilir. Daha fazla ayrıntı için@AutoMigrationbelgelerini 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 yerleştirme çerçevesi kullanılabilir. - Otomatik taşımalar 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şımaları destekleyecek şekilde güncellendi. Bu sayede yardımcı,runMigrationsAndValidatesırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak ekleyebilir. - Oda Sayfalama Desteği:
androidx.room:room-pagingyayınlandı. Bu sürüm,androidx.paging.PagingSourcedö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
@Daoyöntemlerini destekliyor. Desteklenen çoklu harita türleriMap,SparseArray,LongSparseArrayve Guava'nınImmutableMap,ImmutableSetMultimapveImmutableListMultimap'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.1olarak 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 bilgi 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 derlenememesine neden olan hata düzeltildi. (I00db9, b/201753224)
- Otomatik taşımalarda, sürümler arasında yerleştirilmiş bir varlığa 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 iletilenqueryExecutordeğerini kullandığından, daha önce kullanılanDispatchers.IOyerine 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)
@MapInfoek 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 bir yapıt haline getirin. (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 çok haritalı dönüş türlerini
@Daodestekliyor. Desteklenen çoklu harita türleriMapile birlikte Guava'nınImmutableMap,ImmutableSetMultimapveImmutableListMultimaptürleridir.Aşağıda, çoklu harita sorgularına ö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 Bir Olmayan İ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'inObservableveya coroutinesFlowgibi desteklenen asenkron dönüş türlerine de sarmalanabilir.
Room-Paging
androidx.room:room-pagingyayınlandı. Bu sürümde,androidx.paging.PagingSourcedö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.PagingSourceuygulaması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öğesinden yüklenmeye başlar veKeyilk yüklenen öğe olur. 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ü şu commit'leri içerir.
API Değişiklikleri
- Test edilen veritabanı sınıfını alan yeni bir oluşturucu API sağlayarak otomatik taşımaları desteklemek için Room'u
MigrationTestHelpersürümüne güncelleyin. Bu sayede yardımcı,runMigrationsAndValidatesı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-beta01bağ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ü bu commit'leri içerir.
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 yerleştirme ç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,InvalidationTrackergeri çağırmasının bazen geçersiz, çok geç veya hiç çağrılmamasına neden olan sorun düzeltildi.Uli Bubenheimer | bubenheimer@users.noreply.github.com'a teşekkür ederiz (b/154040286)
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 hangi sürümlerden hangi sürümlere yapılacağını bildirmek için
@Database#autoMigrationskullanılabilir. Room'un tablolar ve sütun yeniden adlandırmaları veya silmeleriyle ilgili ek bilgiye ihtiyacı olduğunda@AutoMigrationek açıklaması, bu tür girişleri içeren bir spesifikasyon sınıfı bildirebilir. Daha fazla ayrıntı için@AutoMigrationbelgelerini inceleyin.
Hata Düzeltmeleri
- Fazladan parantez içeren
defaultValuedeğerlerinin, Room'un şema doğrulaması tarafından yanlış 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: Artık Room, sağlanmadığı takdirde varsayılan olarak Enum'dan String'e ve tam tersi tür dönüştürücü kullanacaktı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 çağırma
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, başlatma işlemlerini 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-rxjava3kullanıma sunuldu. - Paging 3.0 desteği: Room artık dönüş türü
androidx.paging.PagingSourceolan@Queryek 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
withTransactionbloğ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)
@ExperimentalRoomApigörünürlüğü, paket gizli yerine herkese açık olarak düzeltildi. (b/181356119)
Harici Katkı (External Contribution)
@SkipQueryVerificationile de ek açıklama eklenmişse Room'un@Queryek açıklamalı bir DAO yönteminde POJO dönüş türünü kabul etmesine izin verin. Room, sorgunun sonucunu@RawQueryek açıklamalı bir DAO yöntemiyle aynı ş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 bir araçtır ve derleme sürelerini önemli ölçüde kısaltır.
Room'u KSP ile kullanmak için KSP Gradle eklentisini uygulayabilir ve derleme dosyanızdaki
kaptyapılandırmasınıkspile 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
@Updateveya@Deleteyö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.QueryCallbacksunuyor. Bu API, hata ayıklama derlemelerinde günlük kaydı için yararlı olabilir. Geri çağırmaRoomDatabase.Builder#setQueryCallback()üzerinden ayarlanabilir. (Iaa513, b/174478034, b/74877608) - Oda artık herhangi bir dönüştürücü sağlanmadığında varsayılan olarak Enum'dan String'e ve tam tersi tür dönüştürücü 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şturduğunda yanlış kod oluşturmasına 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
beginTransactionNonExclusivekullanı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
@ProvidedTypeConverterek 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'lere sahip. 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
@ForeignKeyek açıklamasına eksik hedef eklendi. Bu sayede,@ForeignKeyek açıklamasının@Entityek açıklaması dışında kullanılması önlendi. (Iced1e)RoomDatabase.javatablosundakimCallbacksalanı 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 üst türü olan Dao'daki derleyici hatasını düzeltmek için DaoProcessor'da güncelleme yapıldı. (Ice6bb, b/160258066)
İş parçacığı oluşturmayı 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
RoomDatabaseiçindekiConcurrentHashMapsimgesiniCollections.synchronizedMap()ile değiştirin (d1cfc7, b/162431855)Önceden paketlenmiş bir veritabanı kopyalandığında onOpenPrepackagedDatabase geri çağırma işlevini 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-rxjava3kullanıma sunuldu. (b/152427884)
API Değişiklikleri
- Kotlin Object sınıfında
@TypeConverterbildirme artık destekleniyor. (b/151110764) RoomArtı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.PagingSourceolan@Queryek 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.- İşlemci seçeneğinin
room.expandProjectiondesteği sonlandırıldı.@RewriteQueriesToDropUnusedColumns, yıldız projeksiyonlu oda optimizasyonu sorgularının yerine kullanılabilir.@RewriteQueriesToDropUnusedColumns,@Embeddedalanları içeren dönüş türleriyle ilgili olarak sunulan sütun çakışması çözümününroom.expandProjectionyerini 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'ye olan bağımlılığını, ANTLR kullanan diğer işlemcilerle sürüm çakışmalarını önlemek için 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
MultiInstanceInvalidationServicedirectBootAware 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 sorunu 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
expandProjectionAÇIK ikenCURSOR_MISMATCHhakkı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.Builderiçinde iki yeni API, önceden doldurulmuş bir veritabanı dosyası verildiğindeRoomDatabaseoluş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:
@ColumnInfoartı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:
@RelationartıkassociateByadlı 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@Junctionadlı yeni bir ek açıklamayı kabul eder. b/69201917 - Bire Bir İlişkiler:
@Relationile açıklama eklenmiş POJO alanlarındakiListveyaSettü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 ek açıklamaları
@Insert,@Updateve@DeleteartıktargetEntityadlı yeni bir özelliğe sahip. Bu özellik, DAO yönteminin üzerinde işlem yapması 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ışı:
@QueryDAO 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şlevini bildirmek hatadır. Bunun yerine Room,Flowkullanmanızı ve ardındanFlowöğesiniChannelöğesine 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.incrementalaracılığıyla 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.expandProjectioneklendi. Örneğin, yalnızca iki alanı olanSongIdAndTitleadlı bir POJO döndüren@Query("SELECT * FROM Song")ile bir DAO yöntemi için. Ardından Room, sorguyuSELECT id, title FROM Songolarak 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_MISMATCHuyarı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ı kilitlenmesine neden olan hata düzeltildi. (b/139306173)
Sürüm 2.2.0-alpha02
7 Ağustos 2019
androidx.room:room-*:2.2.0-alpha02 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni Özellikler
- Eş yordam akışı:
@QueryDAO 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>return type ile bir DAO işlevini bildirmek hatadır. Bunun yerine Room,Flowkullanmanızı ve ardındanFlowdeğeriniChanneldeğ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.expandProjectioneklendi. Örneğin, yalnızca iki alanı olanSongIdAndTitleadlı bir POJO döndüren@Query("SELECT * FROM Song")ile bir DAO yöntemi için. Ardından Room, sorguyuSELECT id, title FROM Songolarak 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_MISMATCHuyarısını tamamen ortadan kaldırır. onDestructiveMigrate, Room'un bir veritabanını yıkıcı bir şekilde taşıdığı zamanlar içinRoomDatabase.Callback'a 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 oluşturmasına neden olan hata düzeltildi. b/137454915
- Room'un,
@RawQueryile 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
@Relationiçin oluşturulan kod, karşılaştırılabilir birByteBufferkullanacak şekilde güncellendi. b/137881998 - Room'un,
@Insert,@Updateve@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
@Entityaracılığıyla yoksayılan bir sütun için alıcı ve ayarlayıcıların eksik olduğu konusunda şikayet etmesine 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.Builderiçinde iki yeni API, önceden doldurulmuş bir veritabanı dosyası verildiğindeRoomDatabaseoluş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:
@ColumnInfoartı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 zaracılığıyla eklenenler gibi varsayılan değerler varsa ve aynı sütunlara@ColumnInfoaracı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:
@RelationartıkassociateByadlı 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@Junctionadlı yeni bir ek açıklamayı kabul eder. b/69201917 - Bire Bir İlişkiler:
@Relationile açıklama eklenmiş POJO alanlarındakiListveyaSettü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 ek açıklamaları
@Insert,@Updateve@DeleteartıktargetEntityadlı yeni bir özelliğe sahip. Bu özellik, DAO yönteminin üzerinde işlem yapması 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.incrementalaracılığıyla 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 silindiğinde Room artık
EmptySetResultExceptiondeğerini genel hata işleyiciye yaymaz. b/130257475 @RawQueryile 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üne kıyasla herhangi bir değişiklik yapılmadan yayınlandı. Sürüme dahil edilen işlemeleri 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 öğeleri destekliyor.
@Entityile açıklama eklenen sınıflara artık@Fts3veya@Fts4ile 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
@DatabaseViewek 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 alma işlevleri olabilir. Bu işlevden yararlanmak için bağımlılıklarınıza
room-ktxekleyin. ktx yapısı, eşzamanlı rutin içinde veritabanı işlemleri gerçekleştirmek içinRoomDatabase.withTransactionuzantı 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,@Embeddedve@Relationartık otomatik değer ek açıklamalı bir sınıfın soyut yöntemlerinde bildirilebilir. Room'un bu notları doğru şekilde anlaması için@CopyAnnotationskarakterinin de eklenmesi gerektiğini unutmayın. - Ek Asenkron Destek:
@Insert,@Deleteveya@Updateile açıklama eklenmiş DAO yöntemleri,INSERT,DELETEveyaUPDATEifadelerini içeren@Queryile 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,@Entityaçı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
varsolarak 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
RoomDatabase.withTransactionuzantı işlevi, alıcı olarakCoroutineScopeiç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ı engeller.
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
- 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
RoomSQLite 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 veritabanı işlemlerini güvenli bir şekilde gerçekleştirmenize olanak tanır. Room uzantıları işlevleri ve coroutine desteğiroom-ktxyapısında mevcuttur. @Transactionile açıklama eklenmiş soyut olmayan DAO yöntemleri artık askıya alma işlevleri olabilir. b/120241587
API / Davranış Değişiklikleri
- Yapı
room-coroutines, diğer androidx yapılarıyla aynı adlandırma kuralı kullanılarakroom-ktxolarak yeniden adlandırıldı. RoomDatabaseiçindekibeginTransaction,setTransactionSuccessfulveendTransaction,runInTransactionveroom-ktxuzantı işleviwithTransactionlehine 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,UPDATEveyaDELETEifadeleri içeren ertelenmişINSERTDAO 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, kullanımdan kaldırılan yöntemlerin kullanımının 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-jvmyapay nesnesine bağlıdır (KT-27991). Bu bağımlılık,maven { url "https://kotlin.bintray.com/kotlinx/" }öğesini proje depolarınıza ekleyerek çözülebilir.
Sürüm 2.1.0-alpha04
25 Ocak 2019
Yeni Özellikler
@Queryile açıklama eklenmiş veINSERT,UPDATEveyaDELETEifadelerini içeren DAO yöntemleri artıkSingle,Mayble,CompletableveListenableFuturegibi asenkron türler döndürebilir. Ayrıca, işlevler de askıya alınabilir. b/120227284
API / Davranış Değişiklikleri
- Room artık
@Transactionile açıklama eklenmiş soyut olmayan bir DAO yöntemiSingle,Mayble,Completable,LiveDataveyaListenableFuturegibi bir asenkron tür döndürürse hata verir. İş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.FAILveOnConflictStrategy.ROLLBACK, Android'in mevcut SQLite bağlamalarıyla beklendiği gibi çalışmadığı için@Deprecatedolarak 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
@Embeddedalanı ü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/@Fts4içindeki FTStokenizerartık Enum yerine String alıyor. Bu, özel belirteçleyicilerin Room tarafından kullanılmasına olanak tanır. Yerleşik belirteçlere ayırıcılar,FtsOptionsiçinde dize sabitleri olarak tanımlanmaya devam eder. b/119234881
Yeni Özellikler
- Couroutines: DAO yöntemleri artık askıya alma işlevleri olabilir. Oda'da askıya alma işlevlerini desteklemek için yeni bir yapay nesne yayınlandı:
room-coroutines. b/69474692 @Insert,@Deleteveya@Updateile açıklama eklenmiş DAO yöntemleri artıkListenableFuturedönüş türünü 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
Roomişlemcisinin, özel semboller içeren bir sorguda hata bildirilirken kilitlenmesine neden olan hata düzeltildi. b/119520136- Room'un,
CollectionuygulamalarınıINifadesinin 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
RoomDatabaseadlı 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
@Relationiçinde@DatabaseViewöğesine referans verme desteği eklendi. b/117680932
Hata Düzeltmeleri
- Room'un, Rx dönüş türünden abone olurken ve bu türü silerken 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
DAOarayüz uygulaması için yanlış kod oluşturmasına neden olan hata düzeltildi. b/117527454 RoomSQLite dil bilgisi 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.
@Entityile açıklama eklenen sınıflara artık@Fts3veya@Fts4ile ek açıklama eklenerek eşleme tam metin arama tablosu olan 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ını kullanarak bir sınıfı görünüm olarak da bilinen depolanmış sorgu olarak bildirmeyi destekliyor. b/67033276
- 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,@Embeddedve@Relationartı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 anlayabilmesi için@CopyAnnotationsile birlikte kullanılması gerektiğini unutmayın. b/62408420 - Ek Rx dönüş türleri desteği:
@Insert,@Deleteveya@Updateile açıklama eklenmiş DAO yöntemleri artıkCompletable,Single<T>veMaybe<T>Rx dönüş türlerini destekliyor. b/63317956 @Relationile Değişmez Türler: Room, daha önce@Relationek 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:@Entityek açıklamasında, yoksayılan alanları ada göre listelemek için kullanılabilecek yeni bir API'dir. Bir öğedeki devralınan alanları yoksaymak için kullanışlıdır. b/63522075
API / Davranış Değişiklikleri
RoomDatabaseiçindekimCallbackvemDatabaseartık@Deprecatedve 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
varsolarak 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
- Sorguların nerede çalıştırılacağının özelleştirilmesine olanak tanıyan
RoomDatabase.Builder.setQueryExecutor()eklendi - RxJava2
Observabledesteği eklendi - Oluşturulan DAO ve veritabanı uygulamaları artık son sürümdedir.
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
Geçiş 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
RoomRxSingleveMaybeuygulamalarında, sorguyu önceden geri dönüştürerek döndürülenSingleveyaMaybeörneklerine birden fazla gözlemci eklediğinizde 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
@RawQueryartık sorgu parametresi olarakStringiletilmesini 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 Integeryerinevararg intdeğerini kabul ediyor.
Hata Düzeltmeleri
- [RoomDatabase.clearAllTables][ref-clearAllTables], artık bir WAL kontrol noktası ayarlayarak ve veritabanını
VACUUMleyerek alanı işletim sistemine geri döndürmeye çalışıyor. - [
@RawQuery][ref-RawQuery] artık Pojo,observedEntitiesözelliği içinEmbeddedalanları veyaRelation'leri aracılığıyla bir veya daha fazla öğeye referans verdiği sürece kabul ediliyor. 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 bu tür sorgular yeni sonuçları tetikleyemiyor veya derlenemiyordu. b/74128314
Sürüm 1.1.0-alpha1
22 Ocak 2018
Yeni Özellikler
RawQuery: Bu yeni API,@Daoyöntemlerinin SQL'i sorgu parametresi olarak almasına olanak tanır. b/62103290, b/71458963fallBackToDestructiveMigrationsFrom:RoomDatabase.Builder'daki bu yeni API, hangi başlangıç şema sürümlerinden yıkıcı geçişlere 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
LivePagedListProvideriçin desteği sonlandırıyor. Yeni Room alfa sürümünü kullanmak için sayfalamaalpha-43.0.0 veya sonraki bir sürümünü kullanmanız ve henüz yapmadıysanızLivePagedListProvidersürümündenLivePagedListBuildersü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