Zimmer
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
21. August 2024 | 2.6.1 | - | - | 2.7.0-alpha07 |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von einem Chatroom hinzufügen möchten, müssen Sie das Maven-Repository von Google zu Ihrem Projekt arbeiten. Maven-Repository von Google lesen .
Zu den Abhängigkeiten für den Raum gehören Raummigrationen testen und Raum RxJava
Fügen Sie der Datei build.gradle
die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen
Ihre App oder Ihr Modul:
Cool
dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // To use Kotlin annotation processing tool (kapt) kapt "androidx.room:room-compiler:$room_version" // To use Kotlin Symbol Processing (KSP) ksp "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" }
Kotlin
dependencies { val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") annotationProcessor("androidx.room:room-compiler:$room_version") // To use Kotlin annotation processing tool (kapt) kapt("androidx.room:room-compiler:$room_version") // To use Kotlin Symbol Processing (KSP) ksp("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") }
Informationen zur Verwendung des KAPT-Plug-ins finden Sie in der KAPT-Dokumentation.
Informationen zur Verwendung des KSP-Plug-ins finden Sie in der Kurzanleitung für KSP.
Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der ktx-Dokumentation.
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Optional für Bibliotheken ohne Android (d.h. für Java- oder Kotlin-Gradle-Module)
können Sie sich darauf verlassen, dass androidx.room:room-common
Raumanmerkungen verwendet.
Compiler-Optionen konfigurieren
Für den Raum gibt es die folgenden Optionen für Annotationsprozessoren.
room.schemaLocation |
directory
Ermöglicht den Export von Datenbankschemas in JSON-Dateien im gegebenen -Verzeichnis. Siehe Raummigrationen . |
room.incremental |
boolean
Aktiviert den Gradle-Prozessor für inkrementelle Anmerkungen. Standardwert ist true .
|
room.generateKotlin |
boolean
Generieren Sie Kotlin-Quelldateien anstelle von Java. KSP erforderlich. Der Standardwert ist false .
Weitere Informationen finden Sie in den Hinweisen zu Version 2.6.0.
|
Chatroom-Gradle-Plug-in verwenden
Ab der Room-Version 2.6.0 können Sie das Room-Gradle-Plug-in verwenden, um Optionen für den Room-Compiler konfigurieren Das Plug-in konfiguriert das Projekt so, die Schemas generiert haben (die eine Ausgabe der Kompilierungsaufgaben sind und für automatische Migrationen verwendet werden) sind so konfiguriert, dass sie reproduzierbar und im Cache speicherbare Builds.
Definieren Sie zum Hinzufügen des Plug-ins in der Gradle-Build-Datei der obersten Ebene den Parameter Plug-ins und seiner Version.
Cool
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
Wenden Sie in der Gradle-Build-Datei auf Modulebene das Plug-in an und verwenden Sie die Methode room
.
.
Cool
plugins { id 'androidx.room' } android { ... room { schemaDirectory "$projectDir/schemas" } }
Kotlin
plugins { id("androidx.room") } android { ... room { schemaDirectory("$projectDir/schemas") } }
Bei Verwendung des Room-Gradle-Plug-ins muss schemaDirectory
festgelegt werden. Dieses
konfiguriert den Room-Compiler, die verschiedenen Kompilierungsaufgaben und seine Back-Ends
(javac, KAPT, KSP), um schema-Dateien beispielsweise in Flavor-Ordner auszugeben.
schemas/flavorOneDebug/com.package.MyDatabase/1.json
Diese Dateien sollten
in das Repository eingecheckt haben, das zur Validierung und automatischen Migration verwendet werden soll.
Einige Optionen können nicht in allen Versionen des Room-Gradle-Plug-ins konfiguriert werden.
obwohl sie vom Room-Compiler unterstützt werden. In der folgenden Tabelle sind alle
und zeigt die Version des Room-Gradle-Plug-ins an, über das
diese Option mithilfe der Erweiterung room
konfigurieren. Wenn Sie eine niedrigere Version haben,
Falls die Option noch nicht unterstützt wird, können Sie
Anmerkungsprozessoroptionen.
Option | Seit Version |
---|---|
room.schemaLocation (erforderlich) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
Optionen für Annotationsprozessoren verwenden
Wenn Sie das Room-Gradle-Plug-in nicht verwenden oder die gewünschte Option nicht von Ihrer Plug-in-Version unterstützt wird, können Sie den Chatroom mit Annotation Processor Optionen, wie unter Fügen Sie Build-Abhängigkeiten hinzu. Wie haben Sie Angeben von Anmerkungsoptionen hängt davon ab, ob Sie KSP oder KAPT für Room verwenden.
Cool
// 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... ) } } } }
Da room.schemaLocation
ein Verzeichnis und kein primitiver Typ ist, ist es
CommandLineArgumentsProvider
, wenn Sie diese Option hinzufügen,
damit Gradle bei aktuellen Prüfungen
über dieses Verzeichnis weiß.
Raumdatenbank migrieren
zeigt eine vollständige Implementierung von CommandLineArgumentsProvider
, die
den Speicherort des Schemas.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie für ein vorhandenes Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .
Version 2.7
Version 2.7.0-alpha07
21. August 2024
androidx.room:room-*:2.7.0-alpha07
wurde veröffentlicht. Version 2.7.0-alpha07 enthält diese Commits.
Neue Funktionen
- Das Room-Gradle-Plug-in fügt die exportierten Schemas jetzt automatisch den Ressourcenquellen des Android-Instrumentierungstests hinzu, damit sie vom
MigrationTestHelper
verwendet werden können.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem im generierten „Ist“-Wert von
RoomDatabaseConstructor
der „tatsächliche“-Modifikator in derinitialize
-Funktion fehlte, wenn diese Funktion auch in der EXPect-Deklaration überschrieben wurde. (359631627) - Es wurde ein Problem behoben, bei dem der generierte „Ist“-Wert von
RoomDatabaseConstructor
nicht mit der Sichtbarkeit der Deklaration „erwarten“ übereinstimmt. (358138953)
Version 2.7.0-alpha06
7. August 2024
androidx.room:room-*:2.7.0-alpha06
wurde veröffentlicht. Version 2.7.0-alpha06 enthält diese Commits.
API-Änderungen
- Ändern Sie die Instanziierungseinrichtung für eine
RoomDatabase
in einem KMP-Projekt.
Aufgrund des Kotlin 2.0-Kompilierungsmodells ist die Strategie, auf eine zu generierende Funktion mit dem Namen instantiateImpl()
zu verweisen, länger einsetzbar. Es wurden zwei neue APIs eingeführt, @ConstructedBy
und RoomDatabaseConstructor
, die die Strategie instantiateImpl()
ersetzen. Die neue Strategie sieht so aus:
Erwartungsobjekt definieren, das
RoomDatabaseConstructor
implementiertexpect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
Verknüpfen Sie das Objekt mithilfe von
@ConstructedBy
mit der@Database
-Deklaration.@Database(...) @ConstructedBy(MyDatabaseCtor::class) // NEW abstract class MyDatabase : RoomDatabase
Neue Datenbankinstanz erstellen, ohne ein Factory-Argument zu übergeben
fun createNewDatabase(path: String) = Room.databaseBuilder<AppDatabase>(name = path) .setDriver(BundledSQLiteDriver()) .setQueryCoroutineContext(Dispatchers.IO) .build()
Damit wurde b/316978491 behoben, b/338446862 und b/342905180
- Unterstützung für
@RawQuery
im Raum-KMP durch Hinzufügen einer neuen API namensRoomRawQuery
, die in Bezug auf die Aufnahme des SQL-Rohstrings und eine Funktion zum Binden von Argumenten in eine AnweisungSupportSQLiteQuery
ähnelt. In@RawQuery
annotierte Funktionen können jetztRoomRawQuery
als einzelnen Parameter akzeptiert werden. (Iea844, b/330586815) - Fügen Sie die Überlastung
setQueryCallback()
hinzu, die einCoroutineContext
akzeptiert. (Id66ff, b/309996304) - Unterstützung für
linuxArm64
Kotlin-Multi-Platform-Ziele (I139d3, b/338268719) hinzugefügt
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Room in Nicht-Android-Zielen fälschlicherweise einen Aufruf von
recursiveFetchArrayMap
generiert hat. (710c36, b/352482325) - Es wurde ein Problem behoben, bei dem Room in einem KMP-Projekt manchmal die Ausnahme „Zeitüberschreitung beim Verbindungsaufbau“ auslöste. (fa72d0, b/347737870)
- Ein Problem bei der automatischen Migration wurde behoben, bei dem zu früh nach Fremdschlüsseln gesucht wurde, bevor die Schemas anderer Tabellen so geändert wurden, dass sie den neuen Fremdschlüsseln entsprachen. (7672c0, b/352085724)
Version 2.7.0-alpha05
10. Juli 2024
androidx.room:room-*:2.7.0-alpha05
wurde veröffentlicht. Version 2.7.0-alpha05 enthält diese Commits.
API-Änderungen
SQLiteKt
wurde inSQLite
undBundledSQLiteKt
inBundledSQLite
umbenannt. (I8b501)
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem ein
RoomDatabase
bei Verwendung vonAndroidSQLiteDriver
mit einer Zeitüberschreitung der Verbindung zum Deadlock führte oder zu einem Fehler führte.
Version 2.7.0-alpha04
12. Juni 2024
androidx.room:room-*:2.7.0-alpha04
wurde veröffentlicht. Version 2.7.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem im Annotationsprozessor von Room behoben, der inkompatiblen KMP-Code generiert hat, wenn in einem DAO ein Rückgabetyp mit mehreren Karten definiert wurde. (b/340983093)
- Ein Problem wurde behoben, bei dem Room die generierte Datenbankimplementierung nicht finden konnte, wenn die annotierte
@Database
-Klasse kein Paket hatte. (b/342097292) - Das Aktivieren des automatischen Schließens und der Entwertung mehrerer Instanzen führte manchmal zu einem
ConcurrentModificationException
, wenn die Datenbank aufgrund von Inaktivität automatisch geschlossen wurde. Dieses Problem wurde behoben.
Version 2.7.0-alpha03
29. Mai 2024
androidx.room:room-*:2.7.0-alpha03
wurde veröffentlicht. Version 2.7.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Beheben Sie verschiedene Probleme mit Kotlin 2.0 und KSP 2.0. Beachten Sie, dass Kotlin 2.0 mit KSP 2-Unterstützung nicht vollständig ist und das Team an den verschiedenen APIs und Verhaltensänderungen im neuen Compiler arbeitet. (b/314151707)
Version 2.7.0-alpha02
14. Mai 2024
androidx.room:room-*:2.7.0-alpha02
wurde veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Verschiedene Probleme mit Verkaufsargumenten wurden behoben.
Version 2.7.0-alpha01
1. Mai 2024
androidx.room:room-*:2.7.0-alpha01
wurde veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.
Neue Funktionen
- Kotlin Multiplatform (KMP)-Unterstützung: In diesem Release wurde Room zu einer Kotlin Multiplatform (KMP)-Bibliothek refaktoriert. Auch wenn es noch einiges zu tun gibt, wird mit dieser Version eine neue Version von Room eingeführt, bei der der Großteil der Funktionen allgemein bekannt ist (für mehrere Plattformen konzipiert). Derzeit werden die Plattformen Android, iOS, JVM (Desktop), nativer Mac und natives Linux unterstützt. Alle fehlenden Funktionen auf den neu unterstützten Plattformen werden in zukünftigen Raumreleases als „Funktionsvollständig“ gekennzeichnet.
Weitere Informationen zu den ersten Schritten mit Room KMP finden Sie in der offiziellen Dokumentation zu Room KMP.
- Die Kotlin-Codegenerierung bei KSP wurde standardmäßig aktiviert, wenn die Verarbeitung über KSP erfolgt. Bei KAPT- oder reinen Java-Projekten generiert Room weiterhin Java-Quellen.
API-Änderungen
- Es wurde eine Überlast von
Room.databaseBuilder()
hinzugefügt, die einen Lambda-Parameter verwendet, der mit einer in einem Raum generierten Funktion verwendet werden soll, um bei der Instanziierung der generiertenRoomDatabase
-Implementierung Reflexion zu vermeiden. Beispiel:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
- Eine API zum Konfigurieren eines Raums mit einer
CoroutineContext
wurde dem Builder hinzugefügt:RoomDatabase.Builder.setQueryCoroutineContext
. EinRoomDatabase
kann nur mit Executors, diesetQueryExecutor
verwenden, oder mit einem Coroutine-Kontext konfiguriert werden, aber nicht mit beiden. - Eine API zum Konfigurieren eines Raums mit einem
SQLite
-Treiber wurde hinzugefügt:RoomDatabase.Builder.setDriver()
. Weitere Informationen zurSQLite
Driver API finden Sie in der SQLite KMP-Dokumentation. - Es wurden APIs für den Zugriff auf die zugrunde liegende
SQLiteConnection
über Treiber-APIs hinzugefügt:RoomDatabase.useReaderConnection
undRoomDatabase.useWriterConnection
. - Callbacks im Zusammenhang mit Varios Room haben jetzt eine überlastete Version, die
SQLiteConnection
stattSupportSQLiteDatabase
empfängt. Diese sollen bei der Migration zu einem KMP-Projekt überschrieben werden. Weitere Informationen zum Migrieren von Raumnutzungen in einer Android-App zu einem gemeinsamen KMP-Modul finden Sie in der Migrationsanleitung. Folgende Callbacks sind möglich: <ph type="x-smartling-placeholder">- </ph>
Migration.migrate(SQLiteConnection)
AutoMigrationSpec.onPostMigrate(SQLiteConnection)
RoomDatabase.Callback.onCreate(SQLiteConnection)
RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
RoomDatabase.Callback.onOpen(SQLiteConnection)
- Das KTX-Artefakt
androidx.room:room-ktx
wurde mit allen zugehörigen APIs inandroidx.room:room-runtime
zusammengeführt. Das Artefakt ist jetzt leer. Bitte entfernen Sie sie aus der Abhängigkeitsliste.
Version 2.6
Version 2.6.1
29. November 2023
androidx.room:room-*:2.6.1
wurde veröffentlicht. Version 2.6.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem im generierten Code behoben, bei dem der Standardwert für Spalten vom Typ "Double" in
EntityCursorConverter
auf 0 statt auf 0,0 festgelegt wurde. Eine mögliche Korrektur für einen ähnlichen Grenzfall für Spalten des Typs Float wurde ebenfalls hinzugefügt. (Id75f5, b/304584179) - Von
PagingSource
-Ladevorgängen ausgelöste Ausnahmen werden jetzt alsLoadStateUpdate
vonLoadResult.Error
weitergegeben, die das Throwable enthält. Dieser Fehlerstatus kann überPagingDataAdapter.loadStateFlow(Views)
oderLazyPagingItems.loadState(Compose)
beobachtet werden. Beachten Sie, dass dies eine Verhaltensänderung darstellt, bei der in der Vergangenheit Fehler beim Laden als Ausnahme ausgelöst wurden, die von der dao-Methode ausgelöst wird, die den Ladevorgang ausgelöst hat. (I93887, b/302708983)
Version 2.6.0
18. Oktober 2023
androidx.room:room-*:2.6.0
wurde veröffentlicht. Version 2.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.5.0
- Die Option zum Aktivieren der Kotlin-Codegenerierung (oder „Kotlin CodeGen“) ist jetzt in Room KSP verfügbar. (4297ec0) Wenn Sie Kotlin CodeGen in Room aktivieren möchten, fügen Sie den Prozessoroptionen für KSP den Namen der Option
room.generateKotlin
hinzu. Weitere Informationen zur Übergabe von Verarbeitungsoptionen für KSP finden Sie in der Dokumentation zu KSP.
Hinweis:Bei der Verwendung von Kotlin CodeGen wurden zusätzliche Einschränkungen hinzugefügt. Abstrakte Eigenschaften als DAO-Getter oder DAO-Abfragen in Kotlin CodeGen sind nicht zulässig. Sie werden stattdessen als Funktionen umgeschrieben, um den falschen Eindruck zu vermeiden, dass der Eigenschaftswert unveränderlich ist und ein festes gespeichertes Ergebnis hat. Eine weitere Einschränkung besteht darin, dass Rückgabetypen für die Sammlung von Nullables in Room for Kotlin CodeGen nicht mehr zulässig sind.
Warnung:Bei der Verwendung von Kotlin CodeGen kann es sein, dass Ihre Projekte in Bezug auf die Null-Zulässigkeit strenger sind. Bei Kotlin CodeGen ist die Null-Zulässigkeit von Typargumenten wichtig, was in Java meistens ignoriert wird. Angenommen, Sie haben den Rückgabetyp „Flow<foo\>“ und die Tabelle ist leer. In Java CodeGen verursacht dies keine Probleme, bei Kotlin CodeGen erhalten Sie jedoch eine Fehlermeldung. Um dies zu vermeiden, müssen Sie `Flow<foo?\>` verwenden, vorausgesetzt, ein NULL-Wert wird ausgegeben. </foo?\></foo\>
- Das neue Artefakt für das Room-Gradle-Plug-in wurde mit der ID
androidx.room
in Room hinzugefügt. Damit werden verschiedene bestehende Probleme in Room bezüglich der Ein- und Ausgaben von Schemas über Gradle-Anmerkungsverarbeitungsoptionen behoben. Weitere Informationen finden Sie in den Versionshinweisen für Raumversion 2.6.0-alpha02. - Wertklassen in Raumentitäten werden jetzt für KSP unterstützt. (4194095)
- Rückgabetypen für verschachtelte Karten in DAO-Funktionen werden jetzt in Room unterstützt. (I13f48, 203008711)
Version 2.6.0-rc01
20. September 2023
androidx.room:room-*:2.6.0-rc01
wurde veröffentlicht. Version 2.6.0-rc01 enthält diese Commits.
Version 2.6.0-beta01
23. August 2023
androidx.room:room-*:2.6.0-beta01
wurde veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Die Verarbeitung der Ausnahme
SQLite
-Sonderfall während des Upsert-Vorgangs, die aufgetreten ist, wenn die Ausnahme2067 SQLITE_CONSTRAINT_UNIQUE
während eines Upsert-Vorgangs ausgelöst wird, sollte eine Aktualisierung durchführen. (If2849, b/243039555)
Version 2.6.0-alpha03
9. August 2023
androidx.room:room-*:2.6.0-alpha03
wurde veröffentlicht. Version 2.6.0-alpha03 enthält diese Commits.
Neue Funktionen
- Rückgabetypen für verschachtelte Karten in DAO-Funktionen werden jetzt in Room unterstützt. (I13f48, 203008711)
API-Änderungen
- Eine neue Typanmerkung mit dem Namen
@MapColumn
wurde erstellt, um@MapInfo
zu ersetzen, das inzwischen verworfen wurde. Für jeden Spaltennamen (keyColumnName
,valueColumnName
oder beides), der in einer@MapInfo
-Annotation angegeben wird, müssen Sie eine@MapColumn
-Annotation nur mitcolumnName
deklarieren und die Annotation für das spezifische Typargument verwenden, auf das verwiesen wird (der Schlüssel oder Wert der Zuordnung) im Rückgabetyp der DAO-Funktion. Das liegt daran, dass die Annotation@MapColumn
direkt für das Typargument innerhalb des Rückgabetyps einer DAO-Funktion verwendet wird und nicht für die Funktion selbst wie@MapInfo
. Weitere Informationen finden Sie in der@MapColumn
-Dokumentation. (Ib0305, b/203008711) - API-Dateien wurden aktualisiert, um mit Anmerkungen zur Unterdrückung der Kompatibilität zu versehen (I8e87a, b/287516207)
- Die APIs für das Room Gradle-Plug-in wurden aktualisiert. Jetzt sind nicht immer variantenspezifische Konfigurationen erforderlich. Das bedeutet, dass das Plug-in einen globalen Speicherort für alle Varianten akzeptieren kann, ohne mehrere Verzeichnisse zu erstellen. Das ermöglicht eine reibungslosere Migration und ist gleichzeitig flexibel genug, um Flavor- oder Typschemas manuell zu konfigurieren und gleichzeitig die Vorteile des Plug-ins (reproduzierbare und im Cache speicherbare Builds) beizubehalten. (I09d6f, b/278266663)
Fehlerkorrekturen
- Potenzielle Sicherheitslücke in Form eines Speicherlecks in
QueryInterceptorStatement
wurde behoben. (I193d1) - Fehlerhaftes Verhalten in der Funktion
QueryInterceptorDatabase execSQL()
wurde behoben. (Iefdc8)
Version 2.6.0-alpha02
21. Juni 2023
androidx.room:room-*:2.6.0-alpha02
wurde veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.
Room-Gradle-Plug-in
Dieser neue Release enthält ein neues Artefakt für das Room-Gradle-Plug-in mit der ID androidx.room
, mit dem verschiedene bestehende Probleme in Room bezüglich Ein- und Ausgaben von Schemas über Prozessoroptionen für Gradle-Anmerkungen behoben werden. Das Room-Gradle-Plug-in konfiguriert das Projekt so, dass generierte Schemas, die für automatische Migrationen verwendet werden und als Ausgabe der Kompilierungsaufgaben ausgegeben werden, korrekt so konfiguriert sind, dass reproduzierbare und im Cache speicherbare Builds vorhanden sind. Das Plug-in bietet einen DSL zur Konfiguration des Basisschemas:
room {
schemaDirectory("$projectDir/schemas/")
}
Das Plug-in konfiguriert dann den Room-Compiler und die verschiedenen Kompilierungsaufgaben und seine Back-Ends (javac, KAPT, KSP), um schema-Dateien in entsprechenden Ordnern, z.B. schemas/flavorOneDebug/com.package.MyDatabase/1.json
, auszugeben. Diese Dateien werden wie gewohnt in das Repository eingecheckt, um sie für die Validierung und automatische Migrationen zu verwenden. Bei der Migration zum Plug-in anstelle der Annotationsprozessor-Optionen müssen die vorhandenen schema-Dateien in die generierten Flavor-Verzeichnisse kopiert werden, die vom Plug-in erstellt wurden. Dies ist ein einmaliger Migrationsvorgang, der manuell durchgeführt werden muss. Die Schemadokumentation auf developers.android.com wird in Zukunft aktualisiert, sobald das Plug-in behoben wurde und das Plug-in stabil läuft. Probieren Sie es aus.
API-Änderungen
RoomDatabase.QueryCallback
wurde als funktionale Schnittstelle definiert, die die Verwendung von SAM-Conversions ermöglicht. (Iab8ea, b/281008549)
Fehlerkorrekturen
- Behebung eines Problems, das bei der Instanziierung der Datenbank in Robolectric nach der Migration der Room-Quellen von Java zu Kotlin aufgetreten ist. (IC053c, b/274924903)
Version 2.6.0-alpha01
22. März 2023
androidx.room:room-*:2.6.0-alpha01
wurde veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Unterstützende Wertklassen in Room für KSP. Room unterstützt jetzt Wertklassen in Entitäten. (4194095)
- Die Kotlin-Codegenerierung(oder „Kotlin CodeGen“) kann jetzt in Room (4297ec0) aktiviert werden. Wenn Sie Kotlin CodeGen in Room aktivieren möchten, fügen Sie den Prozessoroptionen für KSP den Namen der Option
room.generateKotlin
hinzu. Weitere Informationen zur Übergabe von Verarbeitungsoptionen für KSP finden Sie in der Dokumentation zu KSP.
Hinweis:Bei der Verwendung von Kotlin CodeGen wurden zusätzliche Einschränkungen hinzugefügt. Abstrakte Eigenschaften als DAO-Getter oder DAO-Abfragen in Kotlin CodeGen sind nicht zulässig. Sie werden stattdessen als Funktionen umgeschrieben, um den falschen Eindruck zu vermeiden, dass der Eigenschaftswert unveränderlich ist und ein festes gespeichertes Ergebnis hat. Eine weitere Einschränkung besteht darin, dass Rückgabetypen für die Sammlung von Nullables in Room for Kotlin CodeGen nicht mehr zulässig sind.
Warnung:Bei der Verwendung von Kotlin CodeGen kann es sein, dass Ihre Projekte in Bezug auf die Null-Zulässigkeit strenger sind. Bei Kotlin CodeGen ist die Null-Zulässigkeit von Typargumenten wichtig, was in Java meistens ignoriert wird. Angenommen, Sie haben den Rückgabetyp „Flow<foo\>“ und die Tabelle ist leer. In Java CodeGen verursacht dies keine Probleme, bei Kotlin CodeGen erhalten Sie jedoch eine Fehlermeldung. Um dies zu vermeiden, müssen Sie `Flow<foo?\>` verwenden, vorausgesetzt, ein NULL-Wert wird ausgegeben. </foo?\></foo\>
API-Änderungen
- Schutz vor bedeutungsloser Nutzung von Sammlungen, für die Nullwerte zulässig sind, in Rückgabetypen von DAO-Methoden. (I777dc, b/253271782, b/259426907)
- Fügen Sie eine API zum Erstellen eines Ablaufs hinzu, der Änderungen des Entwertungs-Trackers ausgibt. Die API ist nützlich zum Erstellen von Streams, die auf Datenbankänderungen reagieren müssen. (I8c790, b/252899305)
Fehlerkorrekturen
- Lassen Sie in Kotlin-Codegen abstrakte Attribute als DAO-Getter oder DAO-Abfragen nicht zu. Sie sollten stattdessen als Funktionen umgeschrieben werden, um den falschen Eindruck zu vermeiden, dass der Attributwert unveränderlich ist und ein festes gespeichertes Ergebnis hat. (If6a13, b/127483380, b/257967987)
Version 2.5.2
Version 2.5.2
21. Juni 2023
androidx.room:room-*:2.5.2
wurde veröffentlicht. Version 2.5.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Kompatibilitätsproblem mit „kotlinx-metadata-jvm“ wurde behoben. (386d5c)
- Ein Problem wurde behoben, bei dem Room bei der Verwendung in einem Robolectric-Test einen Fehler ausgibt. (f79bea, b/274924903)
Version 2.5.1
Version 2.5.1
22. März 2023
androidx.room:room-*:2.5.1
wurde veröffentlicht. Version 2.5.1 enthält diese Commits.
Fehlerkorrekturen
- Prüfen Sie das übergeordnete Datenbankverzeichnis in
FrameworkSQLiteHelper
nicht, wenn die Datenbank bereits geöffnet ist. (5de86b8) - Verwenden Sie eine
isOpenInternal
-Prüfung, wenn Sie prüfen, ob die Datenbank bereits geöffnet ist. (e91fb35) - Der Fall von eintretenden Personen im Raum „
acquireTransactionThread()
“ lässt sich jetzt besser bearbeiten. (219f98b) Während einer aussetzenden Transaktion verwendet Room einen Thread aus dem Transaktions-Executor, startet eine Ereignisschleife darin und löst aussetzende Datenbankvorgänge an ihn aus, damit sie alle von der Transaktionskoroutine gekapselt werden. Normalerweise wird erwartet, dass sich der Transaktions-Thread von dem unterscheidet, der die Transaktion startet. In einigen Fällen sind sie jedoch identisch. Zur Verarbeitung solcher nicht berücksichtigter Fälle wurde diewithTransaction()
so refaktoriert, dass sie nicht mehr auf einen Kontrolljob angewiesen ist. Stattdessen wird der ansetzende Transaktionsblock innerhalb desrunBlocking
im Transaktionsthread ausgeführt.
Version 2.5.0
Version 2.5.0
22. Februar 2023
androidx.room:room-paging-guava:2.5.0
, androidx.room:room-paging-rxjava2:2.5.0
und androidx.room:room-paging-rxjava3:2.5.0
wurden veröffentlicht. Version 2.5.0 enthält diese Commits.
Version 2.5.0
11. Januar 2023
androidx.room:room-*:2.5.0
wurde veröffentlicht. Version 2.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.4.0
- Alle
room-runtime
-Quellen wurden von Java in Kotlin konvertiert. Wenn Ihr Code in Kotlin geschrieben wurde, kann es aufgrund der Konvertierung der Bibliothek in Kotlin zu Inkompatibilitätsproblemen kommen. Eine bekannte nicht mit der Quelle kompatible Änderung ist beispielsweise, dass Sie inInvalidationTracker
jetztonInvalidate()
inObserver
deklarieren müssen, um einen Parameter vom TypSet
und nichtMutableSet
zu haben. Darüber hinaus wurden bestimmte Getter-Methoden in Eigenschaften konvertiert, die die Eigenschaftszugriffssyntax in Kotlin-Dateien erforderten. Bitte melden Sie einen Fehler, wenn wesentliche Inkompatibilitäten vorliegen. - Die neue Annotationsannotation
@Upsert
wurde hinzugefügt. Mit dieser wird versucht, eine Entität einzufügen, wenn kein Eindeutigkeitskonflikt vorliegt, oder die Entität zu aktualisieren, wenn ein Konflikt vorliegt. (I7aaab, b/241964353) - Die neuen Artefakte für die Raumauslagerung wurden hinzugefügt,
room-paging-rxjava2
,room-paging-rxjava3
undroom-paging-guava
. - Es wurden APIs zum Bereitstellen von Schlüssel- und Werttabellennamen zur Unterscheidung in
@MapInfo
(Icc4b5) hinzugefügt.
Version 2.5.0-rc01
7. Dezember 2022
androidx.room:room-*:2.5.0-rc01
wurde veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.
- Dieser Release ist mit
2.5.0-beta02
identisch.
Version 2.5.0-beta02
9. November 2022
androidx.room:room-*:2.5.0-beta02
wurde veröffentlicht. Version 2.5.0-beta02 enthält diese Commits.
API-Änderungen
- Korrigieren Sie verschiedene APIs, die Abfrageargumente von „invariant“ (
Array<Any?>
) in kontravariant (Array<out Any?>
) ändern, um das Arrayverhalten von Java anzupassen. (b/253531073)
Version 2.5.0-beta01
5. Oktober 2022
androidx.room:room-*:2.5.0-beta01
wurde veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.
API-Änderungen
- Beschränken Sie die Mindestversion, die
@Upsert
unterstützt, auf API 16. Dies liegt daran, dass ein Konflikt bei der Primärschlüsseleinschränkung in älteren APIs nicht identifiziert werden kann. (I5f67f, b/243039555)
Fehlerkorrekturen
- Schattentabellen wurden nicht richtig in die
.json
-Schemadateien exportiert, wodurch sie beschädigt wurden. Dieses Problem wurde behoben. (I4f83b, b/246751839)
Version 2.5.0-alpha03
24. August 2022
androidx.room:room-*:2.5.0-alpha03
wurde veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.
Neue Funktionen
- Die neue Annotationsannotation
@Upsert
wurde hinzugefügt. Mit dieser wird versucht, eine Entität einzufügen, wenn kein Eindeutigkeitskonflikt vorliegt, oder die Entität zu aktualisieren, wenn ein Konflikt vorliegt. (I7aaab, b/241964353)
Fehlerkorrekturen
- Während einer Prüfung der Fremdschlüsseleinschränkung der automatischen Migration wird jetzt eine
SQLiteConstraintException
statt einerIllegalStateException
ausgegeben. (I328dd) - Eine mit Kotlin-Quelle nicht kompatible Änderung für den Getter / die Attribute
getOpenHelper
,getQueryExecutor
undgetTransactionExecutor
wurde behoben. (Iad0ac)
Version 2.5.0-alpha02
1. Juni 2022
androidx.room:room-*:2.5.0-alpha02
wurde veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.
Neue Funktionen
- Neue
room-paging
-Artefakteroom-paging-rxjava2
,room-paging-rxjava3
undroom-paging-guava
wurden zur Unterstützung bei der Paging in Räumen hinzugefügt (41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/2063)
API-Änderungen
- Die gesamte Datei
room-runtime
wurde von Java in Kotlin konvertiert. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c265, b/6)Hinweis:Aufgrund der Konvertierung der Bibliothek in Kotlin können Kompatibilitätsprobleme mit der Quelle auftreten. Wenn Sie den Code in Kotlin geschrieben haben und die alte Version von Room aufrufen, müssen diese Fälle von der neuen Version behoben werden. Eine bekannte nicht mit der Quelle kompatible Änderung ist beispielsweise, dass Sie in
InvalidationTracker
jetztonInvalidate()
inObserver
deklarieren müssen, um einen Parameter vom TypSet
und nichtMutableSet
zu haben. - Es wurden APIs zum Bereitstellen von Schlüssel- und Werttabellennamen zur Unterscheidung in
@MapInfo
(Icc4b5) hinzugefügt. - Behebe ein Kompatibilitätsproblem mit der Quelle, um
@Ignore
wieder in Property-Getter zuzulassen. (Ifc2fb)
Fehlerkorrekturen
- Heuristischer Algorithmus für die Spaltenauflösung. Der Chatroom versucht jetzt, mehrdeutige Spalten in einer Multimap-Abfrage aufzulösen. Dadurch können JOINs mit Tabellen, die Tabellen mit demselben Namen enthalten, einem Ergebnisdatenobjekt korrekt zugeordnet werden. (I4b444, b/201306012, b/212279118)
Version 2.5.0-alpha01
23. Februar 2022
androidx.room:room-*:2.5.0-alpha01
wurde veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.
API-Änderungen
- Die Nutzung von Raum
@IntDef
wurde in Kotlin-Quellen nicht erzwungen. (I75f41, b/217951311) - Es wurde ein Kompatibilitätsproblem mit der Quelle behoben, durch das
@Query
in Property-Getter wieder zugelassen wurde. (I0a09b) - „room-common“ wurde von Java in Kotlin konvertiert. (I69c48, b/206858235)
Hinweis:Es können Kompatibilitätsprobleme mit der Quelle auftreten, da einige Attribute während der Konvertierung der Bibliothek zu Kotlin in Companion-Objekte verschoben wurden. Wenn Sie den Code in Kotlin verwenden und die alte Version von Room aufrufen, ist in der neuen Version die Datei „.Companion“ erforderlich. -Suffix beim Zugriff auf diese Eigenschaften.
- Raummigration von Java zu Kotlin wurde konvertiert. (I2724b, b/206858622)
paging
ähnliche Dateien inroom-runtime
wurden von Java in Kotlin konvertiert. (I82fc8, b/206859668)- Es wurde eine API für die Multi-Prozess-Sperre und -Nutzung auf FrameworkSQLite*-Ebene hinzugefügt, um die Ersterstellung und Migration von Multi-Prozess-Datenbanken zu schützen. (Ied267, b/193182592)
Fehlerkorrekturen
- Zusätzliche Unterstützung für interne Properties in Kotlin-Quellen.
Dies ist eine geringfügige Änderung des Verhaltens in Room, wo die Quelle verwendet wird
Funktionsnamen und sie den Eigenschaften als Getter/Setter zuordnen
(Früher wurde der JVM-Name der Funktion verwendet,
für interne Funktionen/Eigenschaften).
Wenn Sie benutzerdefinierte
@JvmName
-Annotationen verwenden, um Getter/Setter abzugleichen zu privaten Properties hinzufügen, überprüfen Sie den generierten Code nach dem Aktualisierung (If6531, b/205289020)
Version 2.4.3
Version 2.4.3
27. Juli 2022
androidx.room:room-*:2.4.3
wurde veröffentlicht. Version 2.4.3 enthält diese Commits.
Fehlerkorrekturen
- In Kotlin 1.7 (b/236612358) wurden Sperrfunktionen von Room nicht erkannt. Dieses Problem wurde behoben.
Version 2.4.2
Version 2.4.2
23. Februar 2022
androidx.room:room-*:2.4.2
wurde veröffentlicht. Version 2.4.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem beim Generieren von Code für eine Dao-
@Transaction
-Aussetzungsfunktion mit einem Text behoben, der aufgrund der Kompilierung mit-Xjvm-default=all
oder einer vergleichbaren Methode eine Standardschnittstellenmethode generiert. (Ia4ce5) - Behebung eines Fehlers, bei dem Room Code für eine Abfragemethode des Rückgabetyps
Array<ByteArray>
generiert. (If086e, b/213789489)
Version 2.4.1
Version 2.4.1
12. Januar 2022
androidx.room:room-*:2.4.1
wurde veröffentlicht. Version 2.4.1 enthält diese Commits.
Fehlerkorrekturen
- Zusätzliche Unterstützung für interne Properties in Kotlin-Quellen.
Dies ist eine geringfügige Änderung des Verhaltens in Room, wo die Quelle verwendet wird
Funktionsnamen und sie den Eigenschaften als Getter/Setter zuordnen
(Früher wurde der JVM-Name der Funktion verwendet,
für interne Funktionen/Eigenschaften).
Wenn Sie benutzerdefinierte
@JvmName
-Annotationen verwenden, um Getter/Setter abzugleichen zu privaten Properties hinzufügen, überprüfen Sie den generierten Code nach dem Aktualisierung (If6531, b/205289020)
Version 2.4.0
Version 2.4.0
15. Dezember 2021
androidx.room:room-*:2.4.0
wurde veröffentlicht. Version 2.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.3.0
- Automatische Migrationen: Room bietet jetzt eine API zum automatischen Generieren von Migrationen, sofern Schemas exportiert werden. Um Room mitzuteilen, dass eine automatische Migration generiert werden soll, können Sie eine neue Eigenschaft
@Database#autoMigrations
verwenden, um die Versionen zu deklarieren, von und zu denen sie automatisch migriert werden sollen. Wenn Room zusätzliche Informationen zum Umbenennen oder Löschen von Tabellen und Spalten benötigt, kann die Annotation@AutoMigration
eine Spezifikationsklasse deklarieren, die solche Eingaben enthält. Weitere Informationen finden Sie in der@AutoMigration
-Dokumentation. - Abhängigkeitsinjektion bei automatischen Migrationen:
@ProvidedAutoMigrationSpec
ist eine neue API, mit der deklariert wird, dass einAutoMigrationSpec
zur Laufzeit überRoomDatabase.Builder#addAutoMigrationSpec()
bereitgestellt wird. Dadurch kann ein Abhängigkeitsinjektions-Framework solche Spezifikationen bereitstellen, wenn sie komplexe Abhängigkeiten benötigen. - Unterstützung der Migrationstesthilfe für automatische Migrationen: Der
MigrationTestHelper
des Raums wurde aktualisiert, um automatische Migrationen zu unterstützen. Dazu wurde eine neue Konstruktor-API bereitgestellt, die die zu testende Datenbankklasse empfängt. So kann das Hilfsprogramm währendrunMigrationsAndValidate
automatisch automatische Migrationen auf dieselbe Weise hinzufügen. - Chatroom-Paging Support:
androidx.room:room-paging
wird veröffentlicht, um native Paging 3.0-Unterstützung für Raumabfragen zu bieten, dieandroidx.paging.PagingSource
zurückgeben. - Relationale Abfragemethoden: Room unterstützt jetzt
@Dao
-Methoden für Multimap-Rückgabetypen, die für JOIN-Anweisungen nützlich sind. Die unterstützten Typen von Multimaps sindMap
,SparseArray
,LongSparseArray
sowieImmutableMap
,ImmutableSetMultimap
undImmutableListMultimap
von Guava.
Version 2.4.0-rc01
1. Dezember 2021
androidx.room:room-*:2.4.0-rc01
wurde veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.
Neue Funktionen
- Aktualisierung der Raumabhängigkeit vom KSP auf
1.6.0-1.0.1
, um Kotlin 1.6 zu unterstützen
Version 2.4.0-beta02
17. November 2021
androidx.room:room-*:2.4.0-beta02
wurde veröffentlicht. Version 2.4.0-beta02 enthält diese Commits.
Neue Funktionen
- SparseArray und LongSparseArray werden jetzt in @MapInfo unterstützt. (IC91a2b/138910317)
Fehlerkorrekturen
- Wir haben einen neuen TypeConverter-Analysator hinzugefügt, der die Null-Zulässigkeit berücksichtigt. Informationen in Typen berücksichtigen. Da diese Informationen nur ist sie beim KSP standardmäßig nur bei KSP aktiviert. Wenn es Probleme verursacht, können Sie sie deaktivieren, indem Sie Room.useNullAwareTypeAnalysis=false zur Annotation. Prozessor. In diesem Fall sollten Sie einen Dateifehler melden. in Zukunft entfernt werden. Bei diesem neuen TypeConverter-Analysator wird empfohlen, nur Der neue Analysator kann den Empfang von TypeConverters nicht null erhalten, da er die Möglichkeit hat, um sie mit einer Nullprüfung zu kapseln. Beachten Sie, dass dies keine Auswirkungen auf Nutzer hat, die KAPT oder Java als API verwenden. Annotationsprozessoren (im Gegensatz zu KSP) haben keine Informationen zur Null-Zulässigkeit. in Typen. (Ia88f9, b/193437407)
- Es wurde ein Fehler behoben, bei dem Room nicht mit einem SQL-Fehler kompiliert wurde, wenn eine FTS-Entität zur Verwendung des ICU-Tokenizers deklariert wurde. (I00db9, b/201753224)
- Ein Problem bei automatischen Migrationen in Bezug auf eine neue Spalte, die einer eingebetteten Entität zwischen Versionen hinzugefügt wurde, wurde behoben. (I5fcb1b/193798291)
- Wir haben ein Problem bezüglich der Rückgabetypen relationaler Abfragemethoden in LEFT JOIN-Abfragen gelöst. Mit diesen Änderungen enthält die für einen Schlüssel zurückgegebene Sammlung bei einer 1:n-Zuordnung kein ungültiges Wertobjekt, wenn es nicht im Cursor gefunden wird. Wenn keine gültigen Werte gefunden werden, wird ein Schlüssel einer leeren Sammlung zugeordnet. (Id5552b/201946438)
- Das Problem bei der automatischen Migration wurde behoben, bei dem SQLite-Schlüsselwörter in Spaltennamen nicht mit Escapezeichen versehen wurden. (Idbed4b/197133152)
Version 2.4.0-beta01
13. Oktober 2021
androidx.room:room-*:2.4.0-beta01
wurde veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Bei der automatischen Migration wurden keine neuen Spalten hinzugefügt, wenn eine andere Tabelle in derselben automatischen Migration auch eine neue Spalte mit demselben Namen hatte. (Ia5db5, b/200818663)
- Die durch Room-Paging generierte PagingSource-Implementierung
verwendet den über
RoomDatabase.Builder
übergebenenqueryExecutor
, sodass er überschrieben werden kann, statt zuvorDispatchers.IO
. (Iae259)
Version 2.4.0-alpha05
29. September 2021
androidx.room:room-*:2.4.0-alpha05
wurde veröffentlicht. Version 2.4.0-alpha05 enthält diese Commits.
Neue Funktionen
- Ein integrierter Typkonverter für UUID wurde hinzugefügt. (I671e8, b/73132006)
API-Änderungen
Der TypeConverters-Anmerkung wurde eine neue Eigenschaft hinzugefügt, mit der Entwickler integrierte Enum- und UUID-Konverter deaktivieren können. Diese Konverter sind standardmäßig aktiviert, können aber für einen bestimmten Bereich oder für die gesamte Datenbank deaktiviert werden. Weitere Informationen finden Sie in der TypeConverters-Dokumentation. (36ae9e, b/195413406)
Unterstützung von Nicht-POJO-Schlüsseln/Werten für Multimap-Rückgabetypen in DAOs über die Annotation
@MapInfo
. (I4d704)
@MapInfo
ist erforderlich, wenn die Schlüssel- oder Wertspalte der Zuordnung aus einer einzelnen Spalte stammt. Beispiel:
@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>
- Machen Sie
room-paging
zu einem erforderlichen Artefakt, wenn Sie Paging3 mit Raum verwenden. (Ieaffe)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem die Ergebnisse von Multimap-Abfragen nicht korrekt angeordnet wurden, wenn die Abfrage die ORDER BY-Klausel einer Spalte aus dem Kartenschlüssel enthielt. (I6b887)
Externer Beitrag
- Neue API zur Angabe der Indexreihenfolge in @Index hinzugefügt. Dank Nikita Zhelonkin. (I033fc)
Version 2.4.0-alpha04
21. Juli 2021
androidx.room:room-*:2.4.0-alpha04
wurde veröffentlicht. Version 2.4.0-alpha04 enthält diese Commits.
Neue Funktionen
Der Raum unterstützt jetzt
@Dao
-Methoden der Multimap-Rückgabetypen, die für JOIN-Anweisungen nützlich sind. Die unterstützten Typen von Multimaps sindMap
zusammen mitImmutableMap
von Guava,ImmutableSetMultimap
undImmutableListMultimap
.Im Folgenden finden Sie Beispiele für Multimap-Abfragen:
1:1-Beziehungskarte
@Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId") fun getSongAndArtist(): Map<Song, Artist>
1:n-Beziehungskarte (Standard-Multimap)
@Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId") fun getArtistAndAlbums(): Map<Artist, List<Album>>
Das Multimap-Ergebnis kann auch in die unterstützten asynchronen Rückgabetypen wie
LiveData
,Observable
von Rx oder KoroutinenFlow
zusammengefasst werden.
Zimmer-Paging
androidx.room:room-paging
wird veröffentlicht und bietet native Unterstützung für Paging 3.0 für Raumabfragen, dieandroidx.paging.PagingSource
zurückgeben.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun loadUsers(): PagingSource<Int, User> }
Dieses Artefakt ersetzt die von Room generierte Implementierung
androidx.paging.PagingSource
durch eine Implementierung, die auf Paging 3.0 APIs basiert. Die neue PagingSource-Implementierung parst Schlüssel auf andere Weise. Daher muss jeder Schlüssel, der manuell für die PagingSource von Room bereitgestellt wird, diese Verhaltensänderung berücksichtigen, einschließlich des initialKey, der über den Konstruktor von Pager übergeben wird. Seiten werden ab demKey
geladen, wobeiKey
das erste geladene Element ist. Dies unterscheidet sich vom bisherigen Verhalten, bei demLoadParams.Refresh.Key
als Scrollposition des Nutzers behandelt wird und Elemente sowohl vor als auch nach dem Schlüssel geladen werden.Das Artefakt ist optional und die Deaktivierung erfolgt als Fallback auf die bestehende Unterstützung für Paging 3.0, die in Raum 2.3 eingeführt wurde. Dieses Artefakt wird jedoch in einer zukünftigen Version für Nutzer von Room mit Paging 3.0 nicht mehr optional sein. Fügen Sie das neue Artefakt für die Raumauslagerung Ihrem Klassenpfad hinzu, um die Funktion zu aktivieren. Wenn Sie Gradle verwenden, können Sie das folgende Snippet in Ihre build.gradle-Datei einfügen:
dependency { implementation("androidx.room:room-paging:2.4.0-alpha04") }
Fehlerkorrekturen
- Beheben Sie ein Problem bei automatischen Migrationen, das den Umgang mit Fremdschlüsselverstößen betrifft. (b/190113935)
Version 2.4.0-alpha03
16. Juni 2021
androidx.room:room-*:2.4.0-alpha03
wurde veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.
API-Änderungen
- Aktualisieren Sie die
MigrationTestHelper
von Room, um automatische Migrationen zu unterstützen. Stellen Sie dazu eine neue Konstruktor-API bereit, die die zu testende Datenbankklasse empfängt. So kann das Hilfsprogramm währendrunMigrationsAndValidate
automatisch automatische Migrationen auf dieselbe Weise hinzufügen.
Fehlerkorrekturen
Ein Problem mit der nativen SQLite-Bibliothek von Room wurde behoben, um die M1-Chips von Apple zu unterstützen. (b/174695268
Es wurde ein Problem behoben, bei dem „Room“ nicht ausgegeben wurde, wenn der Rückgabetyp einer @Transaction-Funktion ein Flow war (I56ddd, b/190075899).
Beheben Sie ein Problem bei der automatischen Migration in Bezug auf Indexe. b/177673291
Aktualisierung der Abhängigkeiten
- Die KSP-Unterstützung in Room hängt jetzt vom KSP
1.5.10-1.0.0-beta01
ab. (1ecb11, b/160322705)
Version 2.4.0-alpha02
5. Mai 2021
androidx.room:room-*:2.4.0-alpha02
wurde veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.
API-Änderungen
@ProvidedAutoMigrationSpec
ist eine neue API, mit der deklariert werden kann, dass eineAutoMigrationSpec
zur Laufzeit überRoomDatabase.Builder#addAutoMigrationSpec()
bereitgestellt wird. Dadurch kann ein Abhängigkeitsinjektions-Framework solche Spezifikationen bereitstellen, wenn sie komplexe Abhängigkeiten benötigen.
Fehlerkorrekturen
- Ein Problem bei automatischen Migrationen wurde behoben, bei dem
@DatabaseView
s nicht korrekt neu erstellt wurden.
Externer Beitrag
- Beheben Sie ein Problem im
JournalMode.TRUNCATE
des Raums, bei dem derInvalidationTracker
-Callback manchmal ungültig, zu spät oder gar nicht aufgerufen wurde. Vielen Dank anUli Bubenheimer | bubenheimer@users.noreply.github.com
(b/154040286)
Version 2.4.0-alpha01
21. April 2021
androidx.room:room-*:2.4.0-alpha01
wurde veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.
Neue Funktionen
- Automatische Migrationen: Room bietet jetzt eine API zum automatischen Generieren von Migrationen, sofern Schemas exportiert werden. Um Room mitzuteilen, dass eine automatische Migration generiert werden soll, können Sie eine neue Eigenschaft
@Database#autoMigrations
verwenden, um die Versionen zu deklarieren, von und zu denen sie automatisch migriert werden sollen. Wenn Room zusätzliche Informationen zum Umbenennen oder Löschen von Tabellen und Spalten benötigt, kann die Annotation@AutoMigration
eine Spezifikationsklasse deklarieren, die solche Eingaben enthält. Weitere Informationen finden Sie in der Dokumentation zu@AutoMigration
.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem „
defaultValue
“ mit zusätzlichen Klammern von der Schemavalidierung für den Raum falsch validiert wurde. b/182284899
Version 2.3.0
Version 2.3.0
21. April 2021
androidx.room:room-*:2.3.0
wurde veröffentlicht. Version 2.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.2.0
- Integrierte Enum-Unterstützung: In Chatrooms wird jetzt standardmäßig ein Enum-Wert in String umgewandelt und umgekehrt, wenn keiner angegeben ist. Wenn für eine Aufzählung bereits ein Typkonverter vorhanden ist, wird dieser vor dem Standardkonverter priorisiert.
- Abfragerückruf: Room bietet jetzt eine allgemeine Callback-API „RoomDatabase.QueryCallback“ für den Fall, dass Abfragen ausgeführt werden. Dies kann beim Logging in Debug-Builds nützlich sein. Der Callback kann über
RoomDatabase.Builder#setQueryCallback()
festgelegt werden. - Vorkonfigurierte Verbesserung: Room verfügt jetzt über APIs zum Erstellen einer Datenbank mit einer vorkonfigurierten Datenbank, die aus einem Eingabestream gelesen wird. Das ist zum Beispiel in Fällen möglich, in denen die vorinstallierte Datenbank mit gzip komprimiert wird.
- Bereitgestellte Typkonverter: In Room gibt es jetzt APIs zur Bereitstellung von Instanzen von Typkonvertern, sodass die App ihre Initialisierung steuern kann. Um einen Typkonverter zu markieren, der für Room bereitgestellt wird, verwenden Sie die neue Annotation @ProvidedTypeConverter.
- Unterstützung von RxJava3: Room unterstützt jetzt RxJava3-Typen. Ähnlich wie bei RxJava2 können Sie DAO-Methoden deklarieren, deren Rückgabetyp „Fließend“, „Einzeln“, „Vielleicht“ und „Vervollständigbar“ ist. Außerdem steht ein neues Artefakt
androidx.room:room-rxjava3
zur Unterstützung von RxJava3 zur Verfügung. - Unterstützung für Paging 3.0: Room unterstützt jetzt das Generieren von Implementierungen für mit
@Query
annotierte Methoden, deren Rückgabetypandroidx.paging.PagingSource
ist.
Version 2.3.0-rc01
24. März 2021
androidx.room:room-*:2.3.0-rc01
wurde veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem von Room erstellte Coroutine-Ablaufabfragen nicht in einem sperrenden
withTransaction
-Block verwendet werden konnten. (I797bf)
Version 2.3.0-beta03
10. März 2021
androidx.room:room-*:2.3.0-beta03
wurde veröffentlicht. Version 2.3.0-beta03 enthält diese Commits.
Neue Funktionen
- Unterstützung für inkrementelle Kompilierung für KSP wurde hinzugefügt. (I031c1, b/176453350)
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem das Erstellen von PagingSource im Hauptthread einen ANR-Fehler auslösen konnte. (I42b74, b/181221318)
- Die Sichtbarkeit von
@ExperimentalRoomApi
wurde korrigiert. Jetzt ist die Sichtbarkeit des Pakets auf „Öffentlich“ statt auf „Privates Paket“ festgelegt. (b/181356119)
Externer Beitrag
- Zulassen, dass Room einen POJO-Rückgabetyp in einer mit
@Query
annotierten DAO-Methode akzeptiert, wenn dieser auch mit@SkipQueryVerification
annotiert ist. Room konvertiert das Ergebnis der Abfrage auf die gleiche Weise in den POJO-Rückgabetyp wie bei einer mit@RawQuery
annotierten DAO-Methode. Dank an Markus Riegel | hey@marcorei.com“. (I45acb)
Version 2.3.0-beta02
18. Februar 2021
androidx.room:room-*:2.3.0-beta02
wurde veröffentlicht. Version 2.3.0-beta02 enthält diese Commits.
Neue Funktionen
Room bietet jetzt experimentelle Unterstützung für die Kotlin-Symbolverarbeitung KSP.
KSP ist ein Ersatz für KAPT, um Annotationsprozessoren nativ auf dem Kotlin-Compiler auszuführen, wodurch die Build-Zeiten erheblich reduziert werden.
Wenn Sie Room mit KSP verwenden möchten, können Sie das KSP-Gradle-Plug-in anwenden und die
kapt
-Konfiguration in Ihrer Build-Datei durchksp
ersetzen. Verwenden Sie beispielsweiseksp 'androidx.room:room-compiler:2.3.0-beta02'
stattkapt 'androidx.room:room-compiler:2.3.0-beta02'
. Weitere Informationen finden Sie in der Dokumentation zu KPIs.Da sich dieser Kampagnentyp noch in der Testphase befindet, wird empfohlen, KAPT für Produktionscode weiterhin zu verwenden. Die Build-Dauer kann nur verkürzt werden, wenn keine anderen Prozessoren KAPT verwenden. Informationen zu bekannten Problemen finden Sie unter b/160322705.
Version 2.3.0-beta01
27. Januar 2021
androidx.room:room-*:2.3.0-beta01
wurde veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.
Neue Funktionen
- Automatisch schließende Datenbanken: In diesem Chatroom können Datenbanken jetzt geschlossen werden, auf die nach einer bestimmten Zeit nicht mehr zugegriffen wird. Dies ist eine experimentelle Funktion, die durch Aufrufen von
RoomDatabase.Builder#setAutoCloseTimeout()
aktiviert werden kann. Diese Funktion ist nützlich für Anwendungen mit mehreren Datenbanken.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem DAo-Methoden mit mehreren
@Update
- oder@Delete
-Methoden mit unterschiedlichen Konfliktstrategien Code mit nur einer der Strategien generieren und die definierte Strategie effektiv ignorieren. (/I0b90d, b/176138543)
Version 2.3.0-alpha04
16. Dezember 2020
androidx.room:room-*:2.3.0-alpha04
wurde veröffentlicht. Version 2.3.0-alpha04 enthält diese Commits.
Neue Funktionen
- Room bietet jetzt eine allgemeine Callback-API
RoomDatabase.QueryCallback
für den Fall, dass Abfragen ausgeführt werden. Dies kann beim Logging von Debug-Builds nützlich sein. Der Callback kann überRoomDatabase.Builder#setQueryCallback()
festgelegt werden. (Iaa513, b/174478034, b/74877608) - In Room wird jetzt standardmäßig ein Enum-zu-String-Konverter verwendet und umgekehrt. Wenn für eine Aufzählung bereits ein Typkonverter vorhanden ist, wird dieser vor dem Standardkonverter priorisiert. (b/73132006)
Bekanntes Problem
- Wenn für die Enum bereits ein Einwegtypkonverter zum Lesen vorhanden ist, verwendet Room möglicherweise versehentlich den integrierten Converter „String to Enum“, was möglicherweise nicht erwünscht ist. Dies ist ein bekanntes Problem, das behoben werden kann, indem es in einen Zwei-Wege-Konverter umgewandelt wird. Siehe b/175707691
Fehlerkorrekturen
- In neueren JDK-Versionen hat Room die inkrementelle Anmerkungsverarbeitung fälschlicherweise deaktiviert. Dieses Problem wurde behoben. (b/171387388)
- Es wurde ein Problem behoben, bei dem die generierte Klasse bei der Suche nach einem Raum gefunden wurde, wenn mehrere Klassenladeprogramme verwendet wurden. Danke für die Korrektur „Serendipity | 892449346@qq.com“. (b/170141113)
- Ein Problem wurde behoben, bei dem Room falschen Code generiert hat, wenn ein Kotlin-
@Dao
eine Basisklasse hatte, deren generische Elemente in der JVM Primitive waren. (b/160258066)
Externer Beitrag
- In Chatrooms wird jetzt standardmäßig
beginTransactionNonExclusive
verwendet, wenn der WAL-Modus aktiviert und die API-Version 16 oder höher ist. Vielen Dank an 'Ahmed I. Khalil | ahmedibrahimkhali@gmail.com“! (b/126258791)
Version 2.3.0-alpha03
14. Oktober 2020
androidx.room:room-*:2.3.0-alpha03
wurde veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.
Neue Funktionen
Room verfügt jetzt über APIs, mit denen Instanzen von Typkonvertern bereitgestellt werden können, sodass die App ihre Initialisierung steuern kann. Um einen Typkonverter zu markieren, der in Room bereitgestellt wird, verwenden Sie die neue Annotation
@ProvidedTypeConverter
. Vielen Dank an mzgreen yairobbe@gmail.com. (Ie4fa5, b/121067210)Room hat jetzt APIs zum Erstellen einer Datenbank mit einer vorkonfigurierten Datenbank, die aus einem Eingabestream gelesen wird. Das ist zum Beispiel in Fällen möglich, in denen die vorinstallierte Datenbank mit gzip komprimiert wird. Vielen Dank an „Ahmed El-Helw ahmedre@gmail.com“ (3e6792, b/146911060).
API-Änderungen
Fehlendes Ziel zur Anmerkung
@ForeignKey
hinzugefügt, wodurch die Verwendung außerhalb der Anmerkung@Entity
verhindert wird. (Iced1e)Das Feld
mCallbacks
inRoomDatabase.java
ist jetzt ausgeblendet. (d576cb, b/76109329)
Fehlerkorrekturen
In der TypeConverters-Dokumentation wurde klargestellt, dass mit TypeConverters nur Spalten / Felder und nicht Zeilen konvertiert werden können. (I07c56, b/77307836)
Aktualisieren Sie auf den DaoProcessor, um einen Compiler-Fehler in Dao mit einem generischen Supertyp mit Kotlin-Primitiven zu beheben. (Ice6bb, b/160258066)
Dokumentation zum Hinzufügen/Entfernen von Beobachtermethoden aktualisieren, um das Threading zu verdeutlichen (Ifd1d9, b/153948821)
Es wurde ein Problem behoben, bei dem „Room“ FTS-Tabellen fälschlicherweise validiert hat, in denen ihre „rowid“-Spalte deklariert wurde. (d62ebc, b/145858914)
Externe Beiträge
Probleme mit dem Gebietsschema in Groß-/Kleinschreibung im Zusammenhang mit Türkisch (5746e3), b/68159494 beheben
Ersetzen Sie
ConcurrentHashMap
inRoomDatabase
durchCollections.synchronizedMap()
, um Probleme unter Android Lollipop zu vermeiden (d1cfc7, b/162431855).Fügen Sie einen onOpenPrepackagedDatabase-Callback hinzu, wenn ein vorgefertigtes Datenbank wurde kopiert. (I1ba74, b/148934423)
Version 2.3.0-alpha02
22. Juli 2020
androidx.room:room-*:2.3.0-alpha02
wurde veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- Unterstützung von RxJava3: Room unterstützt jetzt RxJava3-Typen. Ähnlich wie bei RxJava2 können Sie DAO-Methoden deklarieren, deren Rückgabetyp „Fließend“, „Einzeln“, „Vielleicht“ und „Vervollständigbar“ ist. Außerdem steht ein neues Artefakt
androidx.room:room-rxjava3
zur Unterstützung von RxJava3 zur Verfügung. (b/152427884)
API-Änderungen
- Das Deklarieren eines
@TypeConverter
in der Kotlin-Objektklasse wird jetzt unterstützt. (b/151110764) - Die Option zur inkrementellen Verarbeitung von Anmerkungen für diesen Chatroom ist jetzt standardmäßig aktiviert. (b/112110217)
Version 2.3.0-alpha01
10. Juni 2020
androidx.room:room-*:2.3.0-alpha01
wurde veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.
Neue Funktionen
Unterstützung für Paging 3.0: Room unterstützt jetzt das Generieren von Implementierungen für
@Query
-annotierte Methoden, deren Rückgabetypandroidx.paging.PagingSource
ist.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
API-Änderungen
@RewriteQueriesToDropUnusedColumns
ist eine neue praktische Anmerkung, die dafür sorgt, dass Room die Projektion „*“ in einer Abfrage so umschreibt, dass nicht verwendete Spalten im Ergebnis entfernt werden.- Die Prozessoroption
room.expandProjection
wurde verworfen. Verwenden Sie@RewriteQueriesToDropUnusedColumns
als Ersatz für Abfragen zur Raumoptimierung mit Sternprojektionen. Hinweis:@RewriteQueriesToDropUnusedColumns
ersetzt nicht die Lösungroom.expandProjection
für Spaltenkonflikte, die für Rückgabetypen mit Feldern vom Typ@Embedded
angeboten wird.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room die JDK-Version, die zum Aktivieren des Prozessors für inkrementelle Anmerkungen verwendet wurde, nicht korrekt erkannte. Vielen Dank an Blaz Solar (me@blaz.solar) (b/155215201)
- Room bettet jetzt seine ANTLR-Abhängigkeit in den Annotationsprozessor ein, um Versionskonflikte mit anderen Prozessoren zu vermeiden, die ebenfalls ANTLR verwenden. (b/150106190)
Version 2.2.6
Version 2.2.6
16. Dezember 2020
androidx.room:room-*:2.2.6
wurde veröffentlicht. Version 2.2.6 enthält diese Commits.
Fehlerkorrekturen
- In neueren JDK-Versionen hat Room die inkrementelle Anmerkungsverarbeitung fälschlicherweise deaktiviert. Dieses Problem wurde behoben. (b/171387388)
Version 2.2.5
Version 2.2.5
18. März 2020
androidx.room:room-*:2.2.5
wurde veröffentlicht. Version 2.2.5 enthält diese Commits.
Fehlerkorrekturen
MultiInstanceInvalidationService
„directBootAware“ erstellen. Vielen Dank an „Mygod contact-git@mygod.be“ (b/148240967)- Es wurde ein Fehler behoben, der zu einem Absturz führte, wenn die Entwertung mehrerer Instanzen aktiviert war und die Datenbank eine FTS-Entität enthielt. (b/148969394)
- Es wurde ein Problem behoben, bei dem beim Laden der nativen SQLite-Bibliotheken in den Room-Annotationsprozessor der Compiler aufgrund paralleler Kompilierungen abstürzte. (b/146217083)
Version 2.2.4
Version 2.2.4
19. Februar 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
und androidx.room:room-testing:2.2.4
wurden veröffentlicht. Version 2.2.4 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem beim Anhalten von Transaktionen behoben, bei dem Transaktionen blockiert wurden, wenn die Koroutine schnell vor dem tatsächlichen Start der Transaktion abgebrochen wurde. (b/148181325)
- Es wurde ein Problem behoben, bei dem @Generated bei der Entwicklung mit JDK 9 falsch verwendet wurde. (b/146538330)
- Ein Problem wurde behoben, bei dem Room inkorrekter Code generiert hat, wenn eine DAO-Schnittstelle in Kotlin eine konkrete Funktion hatte. (b/146825845)
Version 2.2.3
Version 2.2.3
18. Dezember 2019
androidx.room:room-*:2.2.3
wurde veröffentlicht. Version 2.2.3 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem Room eine Datenbank nicht validieren konnte, die keine Migration durchlaufen hatte und einen alten Hash mit Indexen im Schema enthielt. (b/139306173)
Version 2.2.2
Version 2.2.2
20. November 2019
androidx.room:room-*:2.2.2
wurde veröffentlicht. Version 2.2.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem das Erfassen einer 1:1-Beziehung mit mehr als 999 Zeilen dazu führte, dass Room Null-bezogene Elemente zurückgibt. (b/143105450)
Version 2.2.1
Version 2.2.1
23. Oktober 2019
androidx.room:room-*:2.2.1
wurde veröffentlicht. Version 2.2.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem Room fälschlicherweise eine Warnung vor
CURSOR_MISMATCH
war, wenn die Compiler-OptionexpandProjection
aktiviert war. (b/140759491) - Es wurde ein Wiederholungsmechanismus zur Handhabung der fehlenden nativen Bibliothek zur Überprüfung von Abfragen während der Kompilierungszeit hinzugefügt.
Version 2.2.0
Version 2.2.0
9. Oktober 2019
androidx.room:room-*:2.2.0
wurde veröffentlicht. Version 2.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.1.0
- Vorkonfigurierte Datenbank: Zwei neue APIs in
RoomDatabase.Builder
sind jetzt verfügbar zum Erstellen einerRoomDatabase
unter Verwendung einer bereits ausgefüllten Datenbank -Datei.createFromAsset()
wird verwendet, wenn sich die vorab ausgefüllte Datenbankdatei befindet des Assets-Ordners des APK, währendcreateFromFile()
für den Zeitpunkt an einem beliebigen Ort platzieren. Durch die Nutzung dieser API ändert sich das Verhalten der destruktive Migrationen, bei denen bei einer Fallback-Migration um die vorab ausgefüllte Datenbank noch einmal zu kopieren, falls verfügbar. Andernfalls wird auf einfach alle Tabellen löschen und neu erstellen. b/62185732 - Schemastandardwerte:
@ColumnInfo
hat jetzt eine neue EigenschaftdefaultValue
mit dem der Standardwert einer Spalte angegeben werden kann. Standardwerte sind Teil eines Datenbankschemas und wird während der Migration validiert, wenn angegeben ist. b/64088772 - N-zu-N-Beziehungen:
@Relation
hat jetzt eine neue PropertyassociateBy
, die die neue Anmerkung@Junction
annimmt, mit der eine Beziehung deklariert wird, die muss über eine Verknüpfungstabelle (auch Join-Tabelle genannt) erfüllt werden. b/69201917 - 1:1-Beziehungen: Die Einschränkung in POJO-Feldern, die mit
@Relation
wurde vom TypList
oderSet
erhöht. sodass Einzelwertbeziehungen dargestellt werden können. b/62905145 - Zielentität: Die DAO-Anmerkungen
@Insert
,@Update
und@Delete
jetzt hat die neue EigenschafttargetEntity
, mit der die Zieltabelle angegeben werden kann, Die DAO-Methode dient dazu, Maßnahmen zu ergreifen. Dadurch können die Parameter dieser DAO können beliebige POJOs sein, die als Teilentitäten interpretiert werden. In der Praxis sind damit auch Teileinfügungen, Löschungen und Aktualisierungen möglich. b/127549506 - Coroutines-Ablauf:
@Query
DAO-Methoden können jetzt vom RückgabetypFlow<T>
sein. Der zurückgegebene Ablauf gibt einen neuen Satz von Werten aus, wenn die die Abfrage ungültig gemacht wird. DAO-Funktion mit einerChannel<T>
-Rückgabe deklarieren Typ ist ein Fehler, empfiehlt Room stattdessenFlow
und dann die benachbarten Funktionen, umFlow
inChannel
zu konvertieren. b/130428884 - Gradle Inkrementeller Annotationsprozessor: Room ist jetzt eine Gradle-Isolierung.
Annotation Processor und Inkrementierbarkeit können über den Prozessor aktiviert werden
Option
room.incremental
. Weitere Informationen finden Sie unter Optionen für Raum-Compiler . Falls Probleme auftreten, reichen Sie bitte eine finden Sie hier. Wir planen, die Erweiterungsfunktion in einer zukünftigen, stabilen Version standardmäßig zu aktivieren. b/112110217 - Expandable Projections (Projektionen erweitern): eine neue experimentelle Compiler-Option
room.expandProjection
wurde hinzugefügt, wodurch Room eine Abfrage umschreibt mit eine Sternprojektion, die nur die Spalten im zurückgegebenen Typ POJO enthält. Für Für eine DAO-Methode mit@Query("SELECT * FROM Song")
, die eine POJO mit dem NamenSongIdAndTitle
mit nur zwei Feldern. Dann schreibt Room Abfrage anSELECT id, title FROM Song
, sodass die Mindestanzahl an Spalten die dem Rückgabetyp entsprechen, abgerufen werden. Dadurch wird im WesentlichenCURSOR_MISMATCH
-Warnung, die angezeigt wird, wenn die Abfrage zusätzliche Spalten, die mit keinem Feld im zurückgegebenen POJO-Typ übereinstimmen.
Version 2.2.0-rc01
5. September 2019
androidx.room:room:2.2.0-rc01
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Keine öffentlichen Änderungen seit Raum 2.2.0-beta01
.
Version 2.2.0-beta01
22. August 2019
androidx.room:room-*:2.2.0-beta01
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem eine Coroutine-Ablaufabfrage nach einer bestimmten Zeit keine neuen Werte mehr ausgibt. (b/139175786)
- Es wurde ein Fehler behoben, bei dem Room keinen Hash-Code des alten Schemas akzeptierte, während eine Datenbank geöffnet wurde, die seit Raum 1.0 keine Migration durchgeführt hatte. Dies führte zu einem Laufzeitabsturz aufgrund eines ungültigen Schemas. (b/139306173)
Version 2.2.0-alpha02
7. August 2019
androidx.room:room-*:2.2.0-alpha02
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Coroutines-Ablauf:
@Query
DAO-Methoden können jetzt vom RückgabetypFlow<T>
sein. Der zurückgegebene Ablauf gibt einen neuen Satz von Werten aus, wenn die die Abfrage ungültig gemacht wird. DAO-Funktion mit einerChannel<T>
-Rückgabe deklarieren Typ ist ein Fehler, empfiehlt Room stattdessenFlow
und dann die benachbarten Funktionen, umFlow
inChannel
zu konvertieren. b/130428884 - Expandable Projections (Projektionen erweitern): eine neue experimentelle Compiler-Option
room.expandProjection
wurde hinzugefügt, wodurch Room eine Abfrage umschreibt mit eine Sternprojektion, die nur die Spalten im zurückgegebenen Typ POJO enthält. Für Für eine DAO-Methode mit@Query("SELECT * FROM Song")
, die eine POJO mit dem NamenSongIdAndTitle
mit nur zwei Feldern. Dann schreibt Room Abfrage anSELECT id, title FROM Song
, sodass die Mindestanzahl an Spalten die dem Rückgabetyp entsprechen, abgerufen werden. Dadurch wird im WesentlichenCURSOR_MISMATCH
-Warnung, die angezeigt wird, wenn die Abfrage zusätzliche Spalten, die mit keinem Feld im zurückgegebenen POJO-Typ übereinstimmen. onDestructiveMigrate
ist eine neue Callback-API, die zuRoomDatabase.Callback
hinzugefügt wurde wenn Room eine Datenbank destruktiv migriert. b/79962330
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem Room unter Verwendung einer Methode als Feld falschen Code generiert hat festlegen, wenn das Feld geschützt ist. b/136194628
- Es wurde ein Fehler behoben, durch den der InvalidationTracker innerhalb einer Sekunde eine NPE auslöste. wenn die Entwertung mehrerer Instanzen aktiviert war und Dienst wurde unterbrochen. b/137454915
- Ein Fehler wurde behoben, durch den Room den Rückgabetyp eines
übernommene Sperrfunktion mit
@RawQuery
annotiert. b/137878827 - Der generierte Code für
@Relation
wurde aktualisiert, wenn der entsprechende Schlüssel vom Typ ist. BLOB, um einen vergleichbarenByteBuffer
-Wert zu verwenden. b/137881998 - Es wurde ein Fehler behoben, bei dem sich Room über fehlende Setter auf POJOs beschwert, die als
Teilentitätsparameter von
@Insert
,@Update
und@Delete
. b/138664463 - Es wurde ein Fehler behoben, bei dem sich Room über fehlende Getter und Setter für ein
ignorierte Spalte über
@Entity
, wenn die Entitätsklasse in einem bestimmten DAO verwendet wurde . b/138238182 - Ein Fehler wurde behoben, durch den Room benannte Bindungsargumente nicht korrekt in Positionsargumente, die eine Laufzeitausnahme verursachen, wenn eine Abfrage mit wiederverwendete Parameter. b/137254857
Version 2.2.0-alpha01
10. Juli 2019
Neue Funktionen
- Vorkonfigurierte Datenbank: Zwei neue APIs in
RoomDatabase.Builder
sind jetzt verfügbar zum Erstellen einerRoomDatabase
unter Verwendung einer bereits ausgefüllten Datenbank -Datei.createFromAsset()
wird verwendet, wenn sich die vorab ausgefüllte Datenbankdatei befindet des Assets-Ordners des APK, währendcreateFromFile()
für den Zeitpunkt an einem beliebigen Ort platzieren. Durch die Nutzung dieser API ändert sich das Verhalten der destruktive Migrationen, bei denen bei einer Fallback-Migration um die vorab ausgefüllte Datenbank noch einmal zu kopieren, falls verfügbar. Andernfalls wird auf einfach alle Tabellen löschen und neu erstellen. b/62185732 - Schemastandardwerte:
@ColumnInfo
hat jetzt eine neue EigenschaftdefaultValue
mit dem der Standardwert einer Spalte angegeben werden kann. Standardwerte sind Teil eines Datenbankschemas und wird während der Migration validiert, wenn angegeben ist. b/64088772Hinweis:Wenn in Ihrem Datenbankschema bereits die Standardeinstellung verwenden, z. B. über
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z
hinzugefügte Werte, und Sie möchten mithilfe von@ColumnInfo
Standardwerte für die Spalten enthält, müssen Sie möglicherweise eine Migration zur Validierung nicht berücksichtigte Standardwerte. Weitere Informationen finden Sie unter Raummigrationen . - N-zu-N-Beziehungen:
@Relation
hat jetzt eine neue PropertyassociateBy
, die die neue Anmerkung@Junction
annimmt, mit der eine Beziehung deklariert wird, die muss über eine Verknüpfungstabelle (auch Join-Tabelle genannt) erfüllt werden. b/69201917 - 1:1-Beziehungen: Die Einschränkung in POJO-Feldern, die mit
@Relation
wurde vom TypList
oderSet
erhöht. sodass Einzelwertbeziehungen dargestellt werden können. b/62905145 - Zielentität: Die DAO-Anmerkungen
@Insert
,@Update
und@Delete
jetzt hat die neue EigenschafttargetEntity
, mit der die Zieltabelle angegeben werden kann, Die DAO-Methode dient dazu, Maßnahmen zu ergreifen. Dadurch können die Parameter dieser DAO können beliebige POJOs sein, die als Teilentitäten interpretiert werden. In der Praxis sind damit auch Teileinfügungen, Löschungen und Aktualisierungen möglich. b/127549506 - Gradle Inkrementeller Annotationsprozessor: Room ist jetzt eine Gradle-Isolierung.
Annotation Processor und Inkrementierbarkeit können über den Prozessor aktiviert werden
Option
room.incremental
. Weitere Informationen finden Sie unter Optionen für Raum-Compiler . Falls Probleme auftreten, reichen Sie bitte eine finden Sie hier. Wir planen, die Erweiterungsfunktion in einer zukünftigen, stabilen Version standardmäßig zu aktivieren. b/112110217
Fehlerkorrekturen
- Der Raum „
EmptySetResultException
“ gibt dann nicht mehr an den Globaler Fehler-Handler, wenn der Rx-Stream einer Abfrage vor dem ist die Abfrage abgeschlossen. b/130257475 - Es wurde ein Fehler behoben, bei dem in Room eine falsche Fehlermeldung angezeigt wurde, wenn eine Sperrung
Die mit
@RawQuery
annotierte DAO-Funktion hatte keinen Rückgabetyp. b/134303897 - Der Chatroom generiert dann keine DAO-Adapter mit Rohtypen mehr. b/135747255
Version 2.1.0
Version 2.1.0
13. Juni 2019
Raum 2.1.0 wurde ohne Änderungen gegenüber 2.1.0-rc01
freigegeben. Die in der Version enthaltenen Commits finden Sie hier.
Wichtige Änderungen seit Version 2.0.0
- FTS: In diesem Chatroom werden jetzt Entitäten mit einer Zuordnung unterstützt.
FTS3- oder FTS4-Tabelle. Mit annotierte Klassen
@Entity
kann jetzt zur Deklarierung zusätzlich mit@Fts3
oder@Fts4
annotiert werden mit einer Zuordnungstabelle für die Volltextsuche. FTS-Optionen für weitere Anpassungen sind über die Methoden der Anmerkung möglich. - Ansichten: Room unterstützt jetzt das Deklarieren einer Klasse als gespeicherte Abfrage, auch bekannt als
als Datenansicht mit der Methode
@DatabaseView
-Anmerkung. - Couroutinen: DAO-Methoden können jetzt Sperrenfunktionen sein.
room-ktx
einschließen in Ihren Abhängigkeiten, um diese Funktion zu nutzen. Das KTX-Artefakt stellt außerdem die ErweiterungsfunktionRoomDatabase.withTransaction
für Datenbanktransaktionen innerhalb einer Koroutine ausführen. - Automatischer Wert: Der Raum unterstützt jetzt die Deklarierung.
AutoValue
Klassen als Entitäten und POJOs angegeben. Die Raumanmerkungen
@PrimaryKey
@ColumnInfo
,@Embedded
und@Relation
können jetzt in einer automatischen abstrakten Methoden der annotierten Klasse an. Diese Annotationen müssen auch wird von@CopyAnnotations
begleitet, damit Room sie richtig versteht. - Zusätzliche asynchrone Unterstützung: DAO-Methoden annotiert mit
@Insert
,@Delete
oder@Update
, zusammen mit@Query
, dieINSERT
,DELETE
oderUPDATE
enthalten Anweisungen unterstützen jetzt Rx-RückgabetypenCompletable
,Single
,Maybe
, und Guavas RückgabetypListenableFuture
. Sie können auch gesperrt werden, Funktionen. enableMultiInstanceInvalidation
ist eine neue API inRoomDatabase.Builder
für ermöglichen die Entwertung über mehrere Instanzen von RoomDatabase hinweg mit demselben Datenbankdatei.fallbackToDestructiveMigrationOnDowngrade
ist eine neue API inRoomDatabase.Builder
, um die Datenbank bei einem Downgrade automatisch neu zu erstellen passiert.ignoredColumns
ist eine neue API in der Annotation@Entity
, die für Folgendes verwendet werden kann: ignorierte Felder nach Name aufgelistet.- Der primäre Konstruktor von Kotlin wird in Room jetzt in Datenklassen verwendet.
sodass die Attribute nicht als
vars
deklariert werden müssen.
Version 2.1.0-rc01
29. Mai 2019
Fehlerkorrekturen
- Es wurde ein Fehler bei der Initialisierung des Chatrooms behoben, der möglicherweise aufgrund einer bereits eingerichteten Einrichtung aufgetreten ist. temp_store konfigurieren. b/132602198
- Es wurde eine Warnung zur Verwendung von doppelten Anführungszeichen für Nutzer mit SQLite 3.27.0 und höher behoben. b/131712640
- Es wurde ein Fehler behoben, bei dem der InvalidationTracker einen Absturz verursachte, wenn mehrere Validierungsprüfungen gleichzeitig erfolgen. b/133457594
Version 2.1.0-beta01
7. Mai 2019
androidx.room 2.1.0-beta01
wird ohne Änderungen gegenüber 2.1.0-alpha07 veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Version 2.1.0-alpha07
25. April 2019
API-/Verhaltensänderungen
- Die Erweiterungsfunktion „
RoomDatabase.withTransaction
“ wurde geändert zu keinen Funktionsblock mitCoroutineScope
mehr als Empfänger. Dadurch wird verhindert, dass der zusätzlichecoroutineScope { }
-Wrapper übersprungen wird. um Dinge gleichzeitig im Transaktionsblock auszuführen.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem Room einem TypeConverter für einen Kotlin-DAO nicht zugeordnet werden konnte. -Funktion, die einen Parameter des Sammlungstyps enthält. b/122066791
Version 2.1.0-alpha06
22. März 2019
API-/Verhaltensänderungen
- Asynchrone Transaktionsabfragen sind jetzt serialisiert, sodass Room
mehrere Threads
zum Ausführen von Datenbanktransaktionen.
RoomDatabase.Builder.setTransactionExecutor(Executor)
wurde zum Zulassen hinzugefügt Konfigurieren des Executors, der für Transaktionen verwendet werden soll. - „
RoomDatabase.runInTransaction(Callable)
“ wird nicht mehr umgebrochen Ausnahmen in RuntimeExceptions. b/128623748
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem der Entwertungs-Tracker einen Inhalt nicht mehr beobachtete. wenn Beobachter sowohl für die Content-Tabelle als auch für einen externen Content-FTS Tabelle hinzugefügt. b/128508917
- SQLite-Grammatik von Room wurde an SQLite 3.24.0 angepasst. b/110883668
Version 2.1.0-alpha05
13. März 2019
Neue Funktionen
- Mit der Erweiterungsfunktion
RoomDatabase.withTransaction
können Sie Datenbanktransaktionen innerhalb einer Koroutine sicher ausführen. Raumerweiterungen werden zusammen mit Koroutinen unterstützt. Sie sind im Artefaktroom-ktx
verfügbar. - Nicht abstrakte DAO-Methoden, die mit
@Transaction
annotiert sind, können jetzt zum Anhalten verwendet werden. b/120241587
API-/Verhaltensänderungen
- Das Artefakt
room-coroutines
wurde inroom-ktx
umbenannt und hat denselben Namen wie andere Androidx-Artefakte. beginTransaction
,setTransactionSuccessful
undendTransaction
inRoomDatabase
wurden zugunsten vonrunInTransaction
und derroom-ktx
-ErweiterungsfunktionwithTransaction
eingestellt.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem Tokenizer-Argumente verworfen wurden, wenn der verwendete Tokenizer SIMPLE war. b/125427014
- Es wurde ein Fehler behoben, bei dem die Sperre von Funktionen mit Parametern, deren Typ eine innere Klasse war, in Room nicht korrekt identifiziert wurde. b/123767877
- Es wurde ein Fehler behoben, bei dem die verzögerte DAO-Methode
@Query
mitINSERT
-,UPDATE
- oderDELETE
-Anweisungen die Abfrage im Hauptthread eifrig vorbereitete. b/123695593 - Es wurden verschiedene Fehler behoben, bei denen Room falschen Code für bestimmte Sperrungsfunktionen generiert hat. b/123466702 und b/123457323
- Es wurde ein Fehler behoben, bei dem eingestellte Methoden im generierten Code nicht korrekt unterdrückt wurden. b/117602586
- Die Raumabhängigkeit von androidx.sqlite wurde auf 1.0.2 aktualisiert. Diese enthält Fehlerkorrekturen für die korrekte Handhabung beschädigter Datenbanken. b/124476912
Bekannte Probleme
- Raum 2.1.0-alpha05 hängt vom Artefakt
kotlinx-metadata-jvm
ab, das derzeit nicht in Maven Central (KT-27991) verfügbar ist. Diese Abhängigkeit kann aufgelöst werden, indem Siemaven { url "https://kotlin.bintray.com/kotlinx/" }
zu Ihren Projekt-Repositories hinzufügen.
Version 2.1.0-alpha04
25. Januar 2019
Neue Funktionen
- DAO-Methoden, die mit
@Query
annotiert sind undINSERT
-,UPDATE
- oderDELETE
-Anweisungen enthalten, können jetzt asynchrone TypenSingle
,Mayble
,Completable
undListenableFuture
zurückgeben. Darüber hinaus können sie auch Anhalten-Funktionen sein. b/120227284
API-/Verhaltensänderungen
- Der Chatroom gibt jetzt einen Fehler aus, wenn eine nicht abstrakte DAO-Methode, die mit
@Transaction
annotiert ist, einen asynchronen Typ wieSingle
,Mayble
,Completable
,LiveData
oderListenableFuture
zurückgibt. Da Transaktionen auf Threads beschränkt sind, ist es derzeit in Room nicht möglich, eine Transaktion um eine Funktion herum zu starten und zu beenden, die Abfragen in verschiedenen Threads ausführen kann. b/120109336 OnConflictStrategy.FAIL
undOnConflictStrategy.ROLLBACK
wurden als@Deprecated
festgelegt, da sie sich mit den aktuellen SQLite-Bindungen von Android nicht wie vorgesehen verhalten. b/117266738
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem Room den TypeConverter eines Rückgabetyps nicht korrekt verwendete, wenn die DAO-Methode eine Unterbrechungsfunktion war. b/122988159
- Ein Fehler wurde behoben, bei dem in Room übernommene Sperrungsfunktionen fälschlicherweise als nicht anhaltend identifiziert wurden. b/122902595
- Es wurde ein Fehler behoben, bei dem in Room ein falscher Code generiert wurde, wenn sich das Feld
@Embedded
in einer übergeordneten Klasse befand und in mehreren untergeordneten Klassen verwendet wurde. b/121099048 - Ein Problem wurde behoben, bei dem die Datenbank beim Aufrufen von DAO-Aussetzungsfunktionen zwischen
beginTransaction()
undendTransaction()
ein Deadlock auslöste. b/120854786
Version 2.1.0-alpha03
4. Dezember 2018
API-Änderungen
- Für den FTS
tokenizer
in@Fts3
/@Fts4
wird jetzt ein String anstelle einer Enum verwendet. Dadurch können benutzerdefinierte Tokenizer von Room verwendet werden. Integrierte Tokenizer sind inFtsOptions
weiterhin als Stringkonstanten definiert. b/119234881
Neue Funktionen
- Couroutinen: DAO-Methoden können jetzt Sperrenfunktionen sein. Zur Unterstützung von Sperrungsfunktionen in Room wurde ein neues Artefakt veröffentlicht:
room-coroutines
. b/69474692 - DAO-Methoden, die mit
@Insert
,@Delete
oder@Update
gekennzeichnet sind, unterstützen jetztListenableFuture
als Rückgabetyp. b/119418331
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room fälschlicherweise versucht, einen Konstruktor mit Spalten in der
ignoredColumns
-Eigenschaft von@Entity
zu finden. b/119830714 - Es wurde ein Fehler behoben, bei dem Room DAO-Methodenparameter in der generierten Implementierung nicht als endgültig markiert hat. b/118015483
- Es wurde ein Fehler behoben, bei dem der Room-Prozessor abstürzte, wenn bei einer Abfrage mit Sonderzeichen ein Fehler gemeldet wurde. b/119520136
- Ein Fehler wurde behoben, bei dem Room andere
Collection
-Implementierungen als Argumente einesIN
-Ausdrucks ablehnte. b/119884035 - Es wurde ein Fehler behoben, bei dem von Room zurückgegebene LiveData-Daten automatisch bereinigt wurden, sodass keine neuen Daten mehr ausgegeben wurden. b/74477406
- Die Schließsperre von
RoomDatabase
wurde aktualisiert, um Sperrenkonflikte zu reduzieren. b/117900450
Version 2.1.0-alpha02
30. Oktober 2018
Neue Funktionen
- Unterstützung für Verweise auf eine
@DatabaseView
in einer@Relation
wurde hinzugefügt. b/117680932
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem Room Laufwerks-E/A im Hauptthread ausgeführt wurden, wenn ein Rx-Rückgabetyp abonniert und entfernt wurde. b/117201279
- Es wurde ein Fehler behoben, bei dem Room für ein Feld in einer Kotlin-Entitätsklasse keinen geeigneten Typkonverter finden konnte. b/111404868
- Ein Fehler wurde behoben, bei dem Room falschen Code für eine
DAO
-Schnittstellenimplementierung generiert hat, die eine Kotlin-Standardmethode ohne Argumente enthielt. b/117527454 - Der SQLite-Grammatikparser von Room wurde aktualisiert. Es wurde ein Leistungsproblem behoben, das zu langen Build-Zeiten führen würde. b/117401230
Version 2.1.0-alpha01
8. Oktober 2018
Neue Funktionen
- FTS: Der Chatroom unterstützt jetzt Entitäten mit einer Zuordnungstabelle FTS3 oder FTS4. Mit
@Entity
annotierte Klassen können jetzt zusätzlich mit@Fts3
oder@Fts4
annotiert werden, um eine Klasse mit einer Zuordnungstabelle für die Volltextsuche zu deklarieren. FTS-Optionen für weitere Anpassungen sind über die Methoden der Annotation verfügbar. b/62356416 - Ansichten: Room unterstützt jetzt die Deklaration einer Klasse als gespeicherte Abfrage, auch als Ansicht bezeichnet. Hierzu wird die @DatabaseView-Annotation verwendet. b/67033276
- Automatischer Wert: Der Raum unterstützt jetzt die Deklaration von mit AutoValue gekennzeichneten Klassen als Entitäten und POJOs. Die Raumanmerkungen
@PrimaryKey
,@ColumnInfo
,@Embedded
und@Relation
können jetzt in den abstrakten Methoden einer Klasse mit automatischem Wert deklariert werden. Beachten Sie, dass diese Anmerkung auch durch@CopyAnnotations
ergänzt werden muss, damit sie von Room richtig verstanden werden. b/62408420 - Zusätzliche Unterstützung für Rx-Rückgabetypen: Mit
@Insert
,@Delete
oder@Update
gekennzeichnete DAO-Methoden unterstützen jetzt Rx-RückgabetypenCompletable
,Single<T>
undMaybe<T>
. b/63317956 - Unveränderliche Typen mit
@Relation
: Bisher waren für diesen Raum@Relation
-annotierte Felder erforderlich, die festgelegt werden konnten. Jetzt können sie aber auch Konstruktorparameter sein. enableMultiInstanceInvalidation
: Ist eine neue API inRoomDatabase.Builder
, die die Entwertung mehrerer Instanzen von RoomDatabase unter Verwendung derselben Datenbankdatei ermöglicht. Dieser Mechanismus zur Entwertung mehrerer Instanzen funktioniert auch über mehrere Prozesse hinweg. b/62334005fallbackToDestructiveMigrationOnDowngrade
: Ist eine neue API inRoomDatabase.Builder
, die die Datenbank bei einem Downgrade automatisch neu erstellt. b/110416954ignoredColumns
: Ist eine neue API in der Annotation@Entity
, mit der ignorierte Felder nach Name aufgelistet werden können. Nützlich, um übernommene Felder für eine Entität zu ignorieren. b/63522075
API-/Verhaltensänderungen
mCallback
undmDatabase
inRoomDatabase
sind jetzt@Deprecated
und werden in der nächsten Hauptversion von Room entfernt. b/76109329
Fehlerkorrekturen
- Es wurden zwei Probleme behoben, bei denen Room von einer beschädigten Datenbank oder einer fehlerhaften Migration während der Initialisierung nicht ordnungsgemäß wiederhergestellt werden konnte. b/111504749 und b/111519144
- In Room wird jetzt der primäre Konstruktor von Kotlin in Datenklassen verwendet, sodass die Felder nicht als
vars
deklariert werden müssen. b/105769985
Version 2.0.0
Version 2.0.0
1. Oktober 2018
androidx.room 2.0.0
wurde ohne Änderungen gegenüber 2.0.0 bis rc01 veröffentlicht.
Version 2.0.0-rc01
20. September 2018
androidx.room 2.0.0-rc01
wurde ohne Änderungen gegenüber 2.0.0-beta01 veröffentlicht.
Version 2.0.0-beta01
2. Juli 2018
API-/Verhaltensänderungen
RoomDatabase.Builder.setQueryExecutor()
wurde hinzugefügt, um die Anpassung des Ausführungsorts von Abfragen zu ermöglichen- RxJava2-
Observable
-Unterstützung hinzugefügt - Generierte DAO- und Datenbankimplementierungen sind jetzt endgültig
Fehlerkorrekturen
- Klassen-/Feldnamen in „Getter für Feld nicht finden“ angeben Fehler b/73334503
- Die Abwärtskompatibilität von RoomOpenHelper mit älteren Versionen von Room b/110197391 wurde behoben.
Abhängigkeiten vor AndroidX
Für die Versionen vor AndroidX von Room sind die folgenden Abhängigkeiten eingeschlossen:
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"
}
Version 1.1.1
Version 1.1.1
19. Juni 2018
Raum 1.1.1
ist identisch mit Raum 1.1.1-rc1
.
Version 1.1.1-rc1
16. Mai 2018
Wir sehr
empfehlen, bei Migrationen den Raum 1.1.1-rc1
statt 1.1.0
zu verwenden.
Ein Fehler wurde behoben, bei dem Room die Initialisierung der Migration nach der Migration nicht richtig verarbeitete b/79362399.
Version 1.1.0
Version 1.1.0-beta3
19. April 2018
Fehlerkorrekturen
- Kompilierungsfehler beheben, wenn ein Kotlin-POJO auf eine Beziehungsentität verweist, die wurde in Java definiert: b/78199923
Version 1.1.0-beta2
5. April 2018
Fehlerkorrekturen
Ein kritischer Fehler in den Implementierungen von Rx
Single
undMaybe
des Raums wurde behoben. würde die Abfrage vorzeitig wiederverwenden, was zu Problemen führt, wenn Sie mehr als 1 in die zurückgegebenenSingle
- oderMaybe
-Instanzen ein. b/76031240[RoomDatabase.clearAllTables][ref-clearAllTables]
VACUUM
bearbeitet die Datenbank nicht, wenn sie aufgerufen wird. innerhalb einer Transaktion. b/77235565
Version 1.1.0-beta1
21. März 2018
API-Änderungen
- Laut Feedback zur API-Überprüfung akzeptiert
@RawQuery
die Übergabe einerString
als Abfrageparameter nicht mehr. Sie müssen [SupportSQLiteQuery][ref-SupportSQLiteQuery] verwenden. (siehe [SimpleSQLiteQuery][ref-SimpleSQLiteQuery]), um ganz einfach eine Instanz von [SupportSQLiteQuery][ref-SupportSQLiteQuery] mit Argumentunterstützung zu erstellen. - Für die Methode [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] von RoomDatabase.Builder wird jetzt
vararg int
anstelle vonvararg Integer
akzeptiert.
Fehlerkorrekturen
- [RoomDatabase.clearAllTables][ref-clearAllTables] versucht jetzt, Speicherplatz an das Betriebssystem zurückzugeben, indem ein WAL-Prüfpunkt festgelegt und die Datenbank
VACUUM
aktiviert wird. - [
@RawQuery
][ref-RawQuery] akzeptiert jetzt jedes Pojo für dieobservedEntities
-Eigenschaft, solange das Pojo über seineEmbedded
-Felder oderRelation
s auf eine oder mehrere Entitäten verweist. b/74041772 - Paging: Die DataSource-Implementierung von Room verarbeitet jetzt Abhängigkeiten aus mehreren Tabellen (wie Beziehungen und Joins). Bisher lösten diese keine neuen Ergebnisse aus oder konnten nicht kompiliert werden. b/74128314
Version 1.1.0-alpha1
22. Januar 2018
Neue Funktionen
RawQuery
: Diese neue API ermöglicht es@Dao
-Methoden, die SQL als Abfrageparameter zu empfangen. b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: Diese neue API inRoomDatabase.Builder
ermöglicht Detaillierte Kontrolle darüber, von welchen Startschemaversionen die destruktiven Migrationen ausgeführt werden zulässig (im Vergleich zu „fallbackToDestructiveMigration“) b/64989640- Room unterstützt jetzt nur neuere Paging APIs (Alpha-4+). Die eingestellten
LivePagedListProvider
Wenn Sie die neue Alphaversion von „Raum“ verwenden möchten, müssen Sie Paging verwendenalpha-4
oder höher und wechsle vonLivePagedListProvider
zuLivePagedListBuilder
, falls du das noch nicht getan hast.
Fehlerkorrekturen
- Verbesserte Unterstützung für Kotlin Kapt-Typen. b/69164099
- Die Reihenfolge der Felder macht das Schema nicht mehr entwerten. b/64290754