Zimmer
Letzte Aktualisierung | Stabile Version | Release Candidate | Beta-Ausgabe | Alphaversion |
---|---|---|---|---|
11. Dezember 2024 | 2.6.1 | - | - | 2.7.0-alpha12 |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Room hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Zu den Abhängigkeiten für Room gehören Room-Migrationen testen und Room RxJava.
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:
Kotlin
dependencies { val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP) // See Add the KSP plugin to your project ksp("androidx.room:room-compiler:$room_version") // If this project only uses Java source, use the Java annotationProcessor // No additional plugins are necessary annotationProcessor("androidx.room:room-compiler:$room_version") // optional - Kotlin Extensions and Coroutines support for Room implementation("androidx.room:room-ktx:$room_version") // optional - RxJava2 support for Room implementation("androidx.room:room-rxjava2:$room_version") // optional - RxJava3 support for Room implementation("androidx.room:room-rxjava3:$room_version") // optional - Guava support for Room, including Optional and ListenableFuture implementation("androidx.room:room-guava:$room_version") // optional - Test helpers testImplementation("androidx.room:room-testing:$room_version") // optional - Paging 3 Integration implementation("androidx.room:room-paging:$room_version") }
Groovy
dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP) // See KSP Quickstart to add KSP to your build ksp "androidx.room:room-compiler:$room_version" // If this project only uses Java source, use the Java annotationProcessor // No additional plugins are necessary annotationProcessor "androidx.room:room-compiler:$room_version" // optional - RxJava2 support for Room implementation "androidx.room:room-rxjava2:$room_version" // optional - RxJava3 support for Room implementation "androidx.room:room-rxjava3:$room_version" // optional - Guava support for Room, including Optional and ListenableFuture implementation "androidx.room:room-guava:$room_version" // optional - Test helpers testImplementation "androidx.room:room-testing:$room_version" // optional - Paging 3 Integration implementation "androidx.room:room-paging:$room_version" }
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.
Weitere 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 können Sie für nicht-Android-Bibliotheken (d.h. nur Java- oder Kotlin-Gradle-Module) androidx.room:room-common
verwenden, um Room-Anmerkungen zu verwenden.
Compileroptionen konfigurieren
Für Room stehen die folgenden Optionen für den Anmerkungs-Prozessor zur Verfügung.
room.schemaLocation |
directory
Ermöglicht den Export von Datenbankschemata in JSON-Dateien im angegebenen Verzeichnis. Weitere Informationen finden Sie unter Zimmermigrationen. |
room.incremental |
boolean
Aktiviert den inkrementellen Annotations-Prozessor von Gradle. Der Standardwert ist true .
|
room.generateKotlin |
boolean
Kotlin-Quelldateien anstelle von Java-Quelldateien generieren. Erfordert KSP. Der Standardwert ist false .
Weitere Informationen finden Sie in den Hinweisen zur Version 2.6.0.
|
Room Gradle-Plug-in verwenden
Ab Room-Version 2.6.0 können Sie mit dem Room-Gradle-Plug-in Optionen für den Room-Compiler konfigurieren. Das Plug-in konfiguriert das Projekt so, dass generierte Schemas (die eine Ausgabe der Kompilierungsaufgaben sind und für automatische Migrationen verwendet werden) korrekt für reproduzierbare und im Cache ablenbare Builds konfiguriert sind.
Um das Plug-in hinzuzufügen, müssen Sie es und seine Version in der übergeordneten Gradle-Builddatei definieren.
Groovy
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
Wenden Sie das Plug-in in der Gradle-Builddatei auf Modulebene an und verwenden Sie die Erweiterung room
.
Groovy
plugins { id 'androidx.room' } android { ... room { schemaDirectory "$projectDir/schemas" } }
Kotlin
plugins { id("androidx.room") } android { ... room { schemaDirectory("$projectDir/schemas") } }
Wenn Sie das Room Gradle-Plug-in verwenden, ist die Angabe einer schemaDirectory
erforderlich. Dadurch werden der Room-Compiler und die verschiedenen Kompilierungsaufgaben und deren Backends (javac, KAPT, KSP) so konfiguriert, dass Schemadateien in Ordnern mit unterschiedlichen Formaten ausgegeben werden, z. B. schemas/flavorOneDebug/com.package.MyDatabase/1.json
. Diese Dateien sollten in das Repository eingecheckt werden, um sie für die Validierung und automatische Migration zu verwenden.
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 die einzelnen Optionen aufgeführt. Außerdem wird die Version des Room-Gradle-Plug-ins angegeben, mit der die Option mithilfe der room
-Erweiterung konfiguriert werden kann. Wenn Sie eine niedrigere Version verwenden oder die Option noch nicht unterstützt wird, können Sie stattdessen die Optionen für den Anmerkungs-Prozessor verwenden.
Option | Ab Version |
---|---|
room.schemaLocation (erforderlich) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
Optionen für den Anmerkungs-Prozessor verwenden
Wenn Sie das Room Gradle-Plug-in nicht verwenden oder die gewünschte Option von Ihrer Version des Plug-ins nicht unterstützt wird, können Sie Room mithilfe von Anmerkungs-Prozessoroptionen konfigurieren, wie unter Build-Abhängigkeiten hinzufügen beschrieben. Wie Sie die Anmerkungsoptionen angeben, hängt davon ab, ob Sie KSP oder KAPT für Room verwenden.
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... ) } } } }
Da room.schemaLocation
ein Verzeichnis und kein primitiver Typ ist, müssen Sie beim Hinzufügen dieser Option ein CommandLineArgumentsProvider
verwenden, damit Gradle dieses Verzeichnis bei der Aktualisierungsprüfung kennt.
In Room-Datenbank migrieren wird eine vollständige Implementierung von CommandLineArgumentsProvider
gezeigt, die den Speicherort des Schemas angibt.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 2.7
Version 2.7.0-alpha12
11. Dezember 2024
androidx.room:room-*:2.7.0-alpha12
wird veröffentlicht. Version 2.7.0-alpha12 enthält diese Commits.
API-Änderungen
- Fügen Sie die experimentelle API
RoomDatabase.Builder.setInMemoryTrackingMode()
hinzu, um zu konfigurieren, ob Room eine In-Memory-Tabelle für die Invalidation-Verfolgung verwendet. (I2a9b2, b/185414040)
Fehlerkorrekturen: Bei zerstörerischen Migrationen werden jetzt Ansichten gelöscht, damit sie neu erstellt werden. Dadurch wird das Verhalten bei aktivierter (KMP-Standardeinstellung) und deaktivierter allowDestructiveMigrationForAllTables
angeglichen. (0a3e83, b/381518941)
Version 2.7.0-alpha11
30. Oktober 2024
androidx.room:room-*:2.7.0-alpha11
wird veröffentlicht. Version 2.7.0-alpha11 enthält diese Commits.
API-Änderungen
- Ändern Sie die Signatur der neu hinzugefügten
convertRows()
-Methode in eine Suspend-Funktion, die eineRawRoomQuery
für die Raumsuche empfängt. (Ie57b5, b/369136627)
Fehlerkorrekturen
- Das Problem bei der Raumaufruf-Funktion wurde behoben, bei dem bei Verwendung von
@Relation
in Verbindung mitPagingSource
ungültiger Code generiert wurde.
Version 2.7.0-alpha10
16. Oktober 2024
androidx.room:room-*:2.7.0-alpha10
wird veröffentlicht. Version 2.7.0-alpha10 enthält diese Commits.
API-Änderungen
- Interne
ByteArrayWrapper
-Klasse erstellen, um Beziehungen mitByteBuffer
auf Plattformen zu unterstützen, die nicht Android oder JVM sind (I75543, b/367205685) - Fügen Sie
SQLiteStatement.getColumnType()
zusammen mit den verschiedenenSQLITE_DATA_*
-Ergebniskonstanten hinzu, um den Datentyp einer Spalte abzurufen. (I1985c, b/369636251)
Version 2.7.0-alpha09
2. Oktober 2024
androidx.room:room-*:2.7.0-alpha09
wird veröffentlicht. Version 2.7.0-alpha09 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Problems mit der KMP-Implementierung von
room-paging
, das zu einerError code: 8, message: attempt to write a readonly database
führte, weil eine Schreibtransaktion auf einer Leseverbindung gestartet wurde. (b/368380988)
Version 2.7.0-alpha08
18. September 2024
androidx.room:room-*:2.7.0-alpha08
wird veröffentlicht. Version 2.7.0-alpha08 enthält diese Commits.
Neue Funktionen
- Die
room-paging
Artefakte wurden migriert, damit sie KMP-kompatibel sind. (Ib8756, b/339934824) - Die API
invalidationTrackerFlow()
wurde alsInvalidationTracker.createFlow()
als eigene API standardisiert und ist jetzt für nicht-Android-Quellsätze in KMP-Projekten verfügbar. (I1fbfa, (I8fb29), b/329291639, b/329315924)
API-Änderungen
- Alle Warnungen und Fehlermeldungen in Room, in denen das Wort
Cursor
verwendet wird, wurden entfernt oder ersetzt, daCursor
in der KMP-Version von Room nicht mehr als allgemeiner Begriff verwendet werden kann. (Id8cd9, b/334087492)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Room KMP versuchte, Code mit
UUID
für nicht JVM-Plattformen auszugeben. (b/362994709) - Ein Problem mit dem Room Gradle-Plug-in wurde behoben, das bei Verwendung in einem KMP-Projekt mit Compose Multiplatform zu Fehlern wie „Cannot change attributes of configuration… after it has been locked for mutation“ (Attribute der Konfiguration können nicht geändert werden, nachdem sie für Mutationen gesperrt wurde) führte. (b/343408758)
Version 2.7.0-alpha07
21. August 2024
androidx.room:room-*:2.7.0-alpha07
wird 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 Android-Ressourcenquellen für den Instrumentierungstest hinzu, damit sie von der
MigrationTestHelper
verwendet werden können.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der generierte „actual“-Wert der
RoomDatabaseConstructor
den Modifikator „actual“ in derinitialize
-Funktion fehlte, wenn diese Funktion auch in der „expect“-Deklaration überschrieben wurde. (359631627) - Ein Problem wurde behoben, bei dem das generierte „actual“ der
RoomDatabaseConstructor
nicht mit der Sichtbarkeit der „expect“-Deklaration übereinstimmte. (358138953)
Version 2.7.0-alpha06
7. August 2024
androidx.room:room-*:2.7.0-alpha06
wird veröffentlicht. Version 2.7.0-alpha06 enthält diese Commits.
API-Änderungen
- Ändern Sie die Instanzeinrichtung für eine
RoomDatabase
in einem KMP-Projekt.
Aufgrund des Kotlin 2.0-Kompilierungsmodells ist die Strategie, auf eine zu generierende Funktion namens instantiateImpl()
zu verweisen, nicht mehr möglich. Es werden zwei neue APIs eingeführt, @ConstructedBy
und RoomDatabaseConstructor
, die die Strategie instantiateImpl()
ersetzen. Die neue Strategie sieht so aus:
Definieren Sie ein Objekt vom Typ „expect“, das
RoomDatabaseConstructor
implementiert.expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
Objekt mit der
@Database
-Deklaration über@ConstructedBy
verknüpfen@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()
Korrekturen für b/316978491, b/338446862 und b/342905180
- Unterstützung für
@RawQuery
in Room KMP durch Hinzufügen einer neuen API namensRoomRawQuery
, dieSupportSQLiteQuery
ähnelt, da sie den Roh-SQL-String enthält, und einer Funktion zum Binden von Argumenten in eine Anweisung. Für mit@RawQuery
annotierte Funktionen kann jetzt einRoomRawQuery
als einziger Parameter verwendet werden. (Iea844, b/330586815) - Fügen Sie eine Überladung von
setQueryCallback()
hinzu, die einCoroutineContext
akzeptiert. (Id66ff, b/309996304) - Unterstützung für
linuxArm64
Kotlin Multiplatform-Ziele hinzugefügt (I139d3, b/338268719)
Fehlerkorrekturen
- Behoben: Room generierte in Nicht-Android-Zielen fälschlicherweise einen Aufruf an
recursiveFetchArrayMap
. (710c36, b/352482325) - Ein Problem wurde behoben, bei dem in einem KMP-Projekt manchmal eine Ausnahmemeldung vom Typ „Zeitüberschreitung beim Verbindungsaufbau“ von Room ausgegeben wurde. (fa72d0, b/347737870)
- Behebung eines Problems bei automatischen Migrationen, bei dem zu früh nach Fremdschlüsseln gesucht wurde, bevor andere Tabellen ihre Schemas an die neuen Fremdschlüssel angepasst hatten. (7672c0, b/352085724)
Version 2.7.0-alpha05
10. Juli 2024
androidx.room:room-*:2.7.0-alpha05
wird veröffentlicht. Version 2.7.0-alpha05 enthält diese Commits.
API-Änderungen
SQLiteKt
wurde inSQLite
undBundledSQLiteKt
inBundledSQLite
umbenannt. (I8b501)
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem ein
RoomDatabase
bei Verwendung desAndroidSQLiteDriver
zu einer Deadlock-Situation oder einem Verbindungstimeout führte.
Version 2.7.0-alpha04
12. Juni 2024
androidx.room:room-*:2.7.0-alpha04
wird veröffentlicht. Version 2.7.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das der Anmerkungs-Prozessor von Room inkompatiblen KMP-Code generierte, wenn in einer DAO ein Rückgabetyp mit mehreren Maps definiert wurde. (b/340983093)
- Ein Problem wurde behoben, bei dem Room die generierte Datenbankimplementierung nicht finden konnte, wenn die mit
@Database
annotierte Klasse kein Paket hatte. (b/342097292) - Ein Problem wurde behoben, durch das beim Aktivieren der automatischen Schließung und der Invalidation für mehrere Instanzen manchmal eine
ConcurrentModificationException
ausgegeben wurde, wenn die Datenbank aufgrund von Inaktivität automatisch geschlossen wurde.
Version 2.7.0-alpha03
29. Mai 2024
androidx.room:room-*:2.7.0-alpha03
wird veröffentlicht. Version 2.7.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Verschiedene Probleme im Zusammenhang mit Kotlin 2.0 und KSP 2.0 behoben Kotlin 2.0 mit KSP 2-Unterstützung ist noch nicht fertig. Das Team arbeitet an den verschiedenen APIs und Verhaltensänderungen im neuen Compiler. (b/314151707)
Version 2.7.0-alpha02
14. Mai 2024
androidx.room:room-*:2.7.0-alpha02
wird veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Verschiedene KSP-Probleme behoben.
Version 2.7.0-alpha01
1. Mai 2024
androidx.room:room-*:2.7.0-alpha01
wird veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.
Neue Funktionen
- Unterstützung für Kotlin Multiplatform (KMP): In dieser Version wurde Room zu einer Kotlin Multiplatform-Bibliothek (KMP) umstrukturiert. Es gibt noch einiges zu tun, aber mit dieser Version von Room werden die meisten Funktionen für alle Plattformen verfügbar gemacht. Derzeit werden Android, iOS, JVM (Desktop), native Mac- und native Linux-Plattformen unterstützt. Alle fehlenden Funktionen auf den neu unterstützten Plattformen werden in zukünftigen Room-Releases vollständig implementiert.
Weitere Informationen zum Einstieg in Room KMP finden Sie in der offiziellen Room KMP-Dokumentation.
- Die Kotlin-Codegenerierung für KSP ist standardmäßig aktiviert, wenn die Verarbeitung über KSP erfolgt. Für KAPT- oder Java-Projekte werden weiterhin Java-Quellcodes generiert.
API-Änderungen
- Es wurde eine Überladung von
Room.databaseBuilder()
hinzugefügt, die einen Lambda-Parameter annimmt, der mit einer von Room generierten Funktion verwendet werden soll, um die Verwendung von Reflection bei der Instanziierung der generiertenRoomDatabase
-Implementierung zu vermeiden. Beispiel:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
- Dem Builder wurde eine API zum Konfigurieren eines Raums mit einem
CoroutineContext
hinzugefügt:RoomDatabase.Builder.setQueryCoroutineContext
. EineRoomDatabase
kann nur mit Executoren mitsetQueryExecutor
oder mit einem Coroutine-Kontext konfiguriert werden, aber nicht mit beiden. - Es wurde eine API zum Konfigurieren von Räumen mit einem
SQLite
-Treiber hinzugefügt:RoomDatabase.Builder.setDriver()
. Weitere Informationen zurSQLite
Driver API finden Sie in der SQLite KMP-Dokumentation. - Es wurden APIs zum Zugriff auf die zugrunde liegende
SQLiteConnection
über Treiber-APIs hinzugefügt:RoomDatabase.useReaderConnection
undRoomDatabase.useWriterConnection
. - Einige raumbezogene Rückrufe haben jetzt eine überladene Version, die
SQLiteConnection
anstelle vonSupportSQLiteDatabase
empfängt. Diese werden bei der Migration zu einem KMP-Projekt überschrieben. Weitere Informationen zum Migrieren von Room-Nutzungen in einer Android-App zu einem gemeinsamen KMP-Modul finden Sie im Migrationsleitfaden. Die Callbacks sind: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 zusammen mit allen zugehörigen APIs inandroidx.room:room-runtime
zusammengeführt. Das Artefakt ist jetzt leer. Bitte entfernen Sie es aus der Abhängigkeitsliste.
Version 2.6
Version 2.6.1
29. November 2023
androidx.room:room-*:2.6.1
wird veröffentlicht. Version 2.6.1 enthält diese Commits.
Fehlerkorrekturen
- Behobenes Problem im generierten Code, bei dem der Standardwert für Doppelspalten in
EntityCursorConverter
auf „0“ statt auf „0,0“ gesetzt wurde. Außerdem wurde eine potenzielle Fehlerbehebung für einen ähnlichen Grenzfall bei Spalten vom Typ „Float“ implementiert. (Id75f5, b/304584179) - Ausnahmen, die von
PagingSource
-Ladungen geworfen werden, werden jetzt alsLoadStateUpdate
vonLoadResult.Error
mit dem Throwable weitergegeben. Dieser Fehlerstatus kann überPagingDataAdapter.loadStateFlow(Views)
oderLazyPagingItems.loadState(Compose)
beobachtet werden. Beachten Sie, dass dies eine Verhaltensänderung darstellt. Bisher wurden Ladefehler als Ausnahme ausgelöst, die von der Dao-Methode geworfen wurde, die die Ladung ausgelöst hat. (I93887, b/302708983)
Version 2.6.0
18. Oktober 2023
androidx.room:room-*:2.6.0
wird 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 Optionennamen
room.generateKotlin
zu den Prozessoroptionen für KSP hinzu. Weitere Informationen zum Übergeben von Prozessoroptionen für KSP finden Sie in der KSP-Dokumentation.
Hinweis:Bei der Verwendung von Kotlin CodeGen gelten zusätzliche Einschränkungen. Abstrakte Properties als DAO-Getter oder DAO-Abfragen sind in Kotlin CodeGen nicht zulässig. Stattdessen sollten sie als Funktionen umgeschrieben werden, um den falschen Eindruck zu vermeiden, dass der Property-Wert unveränderlich ist und ein festes gespeichertes Ergebnis hat. Außerdem sind in Room für Kotlin-CodeGen keine Nullable-Sammlungsrückgabetypen mehr zulässig.
Warnung:Wenn Sie Kotlin CodeGen verwenden, sind Ihre Projekte möglicherweise strenger in Bezug auf die Nullbarkeit. In der Kotlin-Codegenerierung ist die Null-Zulässigkeit von Typargumenten wichtig, während dies in Java größtenteils ignoriert wird. Angenommen, Sie haben den Rückgabetyp „Flow<foo>“ und die Tabelle ist leer. Bei der Java-CodeGen-Funktion führt dies nicht zu Problemen, bei der Kotlin-CodeGen-Funktion jedoch zu einem Fehler. Um dies zu vermeiden, müssen Sie „Flow<foo?>“ verwenden, vorausgesetzt, es wird eine Null gesendet. </foo?\></foo\>
- Das neue Artefakt für das Room Gradle-Plug-in wurde Room mit der ID
androidx.room
hinzugefügt. Dadurch werden verschiedene bestehende Probleme in Room behoben, die sich auf Inputs und Outputs von Schemas über Gradle-Anmerkungs-Prozessoroptionen beziehen. Weitere Informationen finden Sie in den Versionshinweisen zur Room-Version 2.6.0-alpha02. - Wertklassen in Raumelementen werden jetzt für KSP unterstützt. (4194095)
- Verschachtelte Map-Rückgabetypen 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
wird 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
wird veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Umgang mit der Sonderfall-
SQLite
-Ausnahme beim Upsert, die auftritt, wenn die2067 SQLITE_CONSTRAINT_UNIQUE
-Ausnahme während eines Upserts ausgelöst wird. (If2849, b/243039555)
Version 2.6.0-alpha03
9. August 2023
androidx.room:room-*:2.6.0-alpha03
wird veröffentlicht. Version 2.6.0-alpha03 enthält diese Commits.
Neue Funktionen
- Verschachtelte Map-Rückgabetypen in DAO-Funktionen werden jetzt in Room unterstützt. (I13f48, 203008711)
API-Änderungen
- Die neue Anmerkung vom Typ
@MapColumn
ersetzt die nun eingestellte Anmerkung@MapInfo
. Für jeden Spaltennamen (keyColumnName
,valueColumnName
oder beide), der in einer@MapInfo
-Anmerkung angegeben ist, müssen Sie eine@MapColumn
-Anmerkung mit nur dercolumnName
deklarieren und die Anmerkung auf das spezifische Typargument anwenden, auf das verwiesen wird (Schlüssel oder Wert der Map) im Rückgabetyp der DAO-Funktion. Das liegt daran, dass die@MapColumn
-Anmerkung direkt auf das Typargument im Rückgabetyp einer DAO-Funktion angewendet wird, nicht wie bei@MapInfo
auf die Funktion selbst. Weitere Informationen finden Sie in der@MapColumn
-Dokumentation. (Ib0305, b/203008711) - API-Dateien wurden aktualisiert, um die Unterdrückung der Kompatibilität zu vermerken (I8e87a, b/287516207)
- Die APIs des Room Gradle-Plug-ins wurden aktualisiert, sodass nicht immer Konfigurationen pro Variante erforderlich sind. Das bedeutet, dass das Plug-in einen globalen Speicherort für alle Varianten akzeptieren kann, ohne mehrere Verzeichnisse zu erstellen. Dies ermöglicht eine reibungslosere Migration, ist aber auch flexibel genug, um Flavors oder Build-Typ-Schemas manuell zu konfigurieren und gleichzeitig die Vorteile des Plug-ins (reproduzierbare und cachbare Builds) beizubehalten. (I09d6f, b/278266663)
Fehlerkorrekturen
- Potenzielle Sicherheitslücke durch Speicherlecks in
QueryInterceptorStatement
behoben. (I193d1) - Es wurde ein Fehler in der Funktion
QueryInterceptorDatabase execSQL()
behoben. (Iefdc8)
Version 2.6.0-alpha02
21. Juni 2023
androidx.room:room-*:2.6.0-alpha02
wird veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.
Room Gradle-Plug-in
Diese neue Version enthält ein neues Artefakt für das Room-Gradle-Plug-in mit der ID androidx.room
, mit dem verschiedene bestehende Probleme in Room behoben werden, die sich auf Inputs und Outputs von Schemas über Gradle-Anmerkungs-Prozessoroptionen beziehen. Das Room Gradle-Plug-in konfiguriert das Projekt so, dass generierte Schemas, die für automatische Migrationen verwendet werden und die Ausgabe der Kompilierungsaufgaben sind, korrekt für reproduzierbare und im Cache ablenbare Builds konfiguriert sind. Das Plug-in bietet eine DSL zum Konfigurieren des Speicherorts des Basisschemas:
room {
schemaDirectory("$projectDir/schemas/")
}
Das Plug-in konfiguriert dann den Room-Compiler und die verschiedenen Kompilierungsaufgaben und deren Backends (javac, KAPT, KSP), um Schemadateien in Ordnern mit unterschiedlichen Geschmacksrichtungen auszugeben, z.B. schemas/flavorOneDebug/com.package.MyDatabase/1.json
. Wie gewohnt werden diese Dateien in das Repository eingecheckt, um für die Validierung und automatische Migration verwendet zu werden. Wenn Sie das Plug-in anstelle der Optionen für den Anmerkungs-Prozessor verwenden, müssen die vorhandenen Schemadateien in die vom Plug-in erstellten generierten Flavor-Verzeichnisse kopiert werden. Dies ist ein einmaliger Migrationsvorgang, der manuell durchgeführt werden muss. Die Schemadokumentation unter developers.android.com wird in Zukunft aktualisiert, sobald das Feedback berücksichtigt wurde und das Plug-in stabil ist. Probieren Sie es also einfach aus.
API-Änderungen
RoomDatabase.QueryCallback
wurde als funktionale Schnittstelle definiert, um die Verwendung von SAM-Conversions zu ermöglichen. (Iab8ea, b/281008549)
Fehlerkorrekturen
- Behebung eines Problems, das nach der Migration von Room-Quellen von Java nach Kotlin beim Instanziieren der Datenbank in Robolectric aufgetreten ist. (Ic053c, b/274924903)
Version 2.6.0-alpha01
22. März 2023
androidx.room:room-*:2.6.0-alpha01
wird veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Unterstützung von Wertklassen in Room für KSP. In Google Tabellen können jetzt Wertklassen in Entitäten unterstützt werden. (4194095)
- Die Kotlin-Codegenerierung(oder „Kotlin CodeGen“) kann jetzt in Room aktiviert werden (4297ec0). Wenn Sie Kotlin CodeGen in Room aktivieren möchten, fügen Sie den Optionennamen
room.generateKotlin
zu den Prozessoroptionen für KSP hinzu. Weitere Informationen zum Übergeben von Prozessoroptionen für KSP finden Sie in der KSP-Dokumentation.
Hinweis:Bei der Verwendung von Kotlin CodeGen gelten zusätzliche Einschränkungen. Abstrakte Properties als DAO-Getter oder DAO-Abfragen sind in Kotlin CodeGen nicht zulässig. Stattdessen sollten sie als Funktionen umgeschrieben werden, um den falschen Eindruck zu vermeiden, dass der Property-Wert unveränderlich ist und ein festes gespeichertes Ergebnis hat. Außerdem sind in Room für Kotlin-CodeGen keine Nullable-Sammlungsrückgabetypen mehr zulässig.
Warnung:Wenn Sie Kotlin CodeGen verwenden, sind Ihre Projekte möglicherweise strenger in Bezug auf die Nullbarkeit. In der Kotlin-Codegenerierung ist die Null-Zulässigkeit von Typargumenten wichtig, während dies in Java größtenteils ignoriert wird. Angenommen, Sie haben den Rückgabetyp „Flow<foo>“ und die Tabelle ist leer. Bei der Java-CodeGen-Funktion führt dies nicht zu Problemen, bei der Kotlin-CodeGen-Funktion jedoch zu einem Fehler. Um dies zu vermeiden, müssen Sie „Flow<foo?>“ verwenden, vorausgesetzt, es wird eine Null gesendet. </foo?\></foo\>
API-Änderungen
- Vermeidung der sinnlosen Verwendung von nullable-Sammlungen in Rückgabetypen von DAO-Methoden. (I777dc, b/253271782, b/259426907)
- Fügen Sie eine API zum Erstellen eines Ablaufs hinzu, der Änderungen am Invalidation-Tracker ausgibt. Die API eignet sich zum Erstellen von Streams, die auf Datenbankänderungen reagieren müssen. (I8c790, b/252899305)
Fehlerkorrekturen
- Abstrakte Eigenschaften dürfen in der Kotlin-Codegenerierung nicht als DAO-Getter oder DAO-Abfragen verwendet werden. Stattdessen sollten sie als Funktionen umgeschrieben werden, um die falsche Annahme zu vermeiden, dass der Eigenschaftenwert 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
wird veröffentlicht. Version 2.5.2 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Kompatibilitätsproblems mit kotlinx-metadata-jvm. (386d5c)
- Behebung eines Problems, bei dem Room in einem Robolectric-Test einen Fehler auslöste. (f79bea, b/274924903)
Version 2.5.1
Version 2.5.1
22. März 2023
androidx.room:room-*:2.5.1
wird veröffentlicht. Version 2.5.1 enthält diese Commits.
Fehlerkorrekturen
- Prüfen Sie nicht das übergeordnete Verzeichnis der Datenbank in
FrameworkSQLiteHelper
, wenn die Datenbank bereits geöffnet ist. (5de86b8) - Verwende ein Häkchen
isOpenInternal
, um zu prüfen, ob die Datenbank bereits geöffnet ist. (e91fb35) - Die
acquireTransactionThread()
-Funktion in Room kann jetzt reentrante Fälle besser verarbeiten. (219f98b). Während einer angehaltenen Transaktion verwendet Room einen Thread aus dem Transaktionsausführer, startet darin einen Ereignis-Loop und sendet angehaltene Datenbankvorgänge an ihn, sodass sie alle in der Transaktions-Coroutine gekapselt sind. Normalerweise sollte der Transaktions-Thread sich von dem unterscheiden, mit dem die Transaktion gestartet wird. In einigen Fällen sind sie jedoch identisch. Um solche rekursiven Fälle zu behandeln, wurdewithTransaction()
so umstrukturiert, dass es nicht mehr auf einen Kontrolljob angewiesen ist. Stattdessen wird der blockierende Transaktionsblock vonrunBlocking
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
werden losgelassen. Version 2.5.0 enthält diese Commits.
Version 2.5.0
11. Januar 2023
androidx.room:room-*:2.5.0
wird 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. Hinweis: Wenn Ihr Code in Kotlin ist, können aufgrund der Umwandlung der Bibliothek in Kotlin Probleme mit der Quellkompatibilität auftreten. Eine bekannte nicht kompatible Quelländerung ist beispielsweise, dass inInvalidationTracker
onInvalidate()
inObserver
jetzt als Parameter vom TypSet
und nichtMutableSet
deklariert werden muss. Außerdem wurden bestimmte Gettermethoden in Properties umgewandelt, für die die Syntax für den Property-Zugriff in Kotlin-Dateien erforderlich ist. Bitte melden Sie uns einen Fehler, wenn es erhebliche Inkompatibilitäten gibt. - Die neue Kurznotiz
@Upsert
wurde hinzugefügt. Damit wird versucht, eine Entität einzufügen, wenn kein Konflikt vorliegt, oder sie zu aktualisieren, wenn ein Konflikt vorliegt. (I7aaab, b/241964353) - Für die Unterstützung von Room Paging wurden neue Artefakte für die Zimmersuche hinzugefügt:
room-paging-rxjava2
,room-paging-rxjava3
undroom-paging-guava
. - APIs zum Angeben von Schlüssel- und Wertetabellennamen zur Disambiguierung in
@MapInfo
hinzugefügt (Icc4b5)
Version 2.5.0-rc01
7. Dezember 2022
androidx.room:room-*:2.5.0-rc01
wird 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
wird veröffentlicht. Version 2.5.0-beta02 enthält diese Commits.
API-Änderungen
- Korrekturen an verschiedenen APIs, die Abfrageargumente von invariant (
Array<Any?>
) zu kontravariant (Array<out Any?>
) ändern, um dem Array-Verhalten von Java zu entsprechen. (b/253531073)
Version 2.5.0-beta01
5. Oktober 2022
androidx.room:room-*:2.5.0-beta01
wird 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. Das liegt daran, dass in älteren APIs keine Primärschlüsseleinschränkungskonflikte erkannt werden können. (I5f67f, b/243039555)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Schattentabellen fälschlicherweise in die Schema-
.json
-Dateien exportiert und beschädigt wurden. (I4f83b, b/246751839)
Version 2.5.0-alpha03
24. August 2022
androidx.room:room-*:2.5.0-alpha03
wird veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.
Neue Funktionen
- Die neue Kurznotiz
@Upsert
wurde hinzugefügt. Damit wird versucht, eine Entität einzufügen, wenn kein Konflikt vorliegt, oder sie zu aktualisieren, wenn ein Konflikt vorliegt. (I7aaab, b/241964353)
Fehlerkorrekturen
- Bei der automatischen Migration wird bei der Überprüfung der Fremdschlüsselbeschränkung jetzt eine
SQLiteConstraintException
statt einerIllegalStateException
für den Raum ausgegeben. (I328dd) - Behebung einer inkompatiblen Änderung an der Kotlin-Quelle für Getter / Properties von
getOpenHelper
,getQueryExecutor
undgetTransactionExecutor
. (Iad0ac)
Version 2.5.0-alpha02
1. Juni 2022
androidx.room:room-*:2.5.0-alpha02
wird 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 hinzugefügt, um die Weiterleitung in Räume zu unterstützen.(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/203666906)
API-Änderungen
room-runtime
wurde vollständig von Java in Kotlin konvertiert. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25, b/206859668)Hinweis:Aufgrund der Umwandlung der Bibliothek in Kotlin können Probleme mit der Quellinkompatibilität auftreten. Wenn Ihr Code in Kotlin war und die alte Version von Room aufgerufen hat, müssen diese Fälle von der neuen Version verarbeitet werden. Eine bekannte nicht kompatible Quelländerung ist beispielsweise, dass in
InvalidationTracker
onInvalidate()
inObserver
jetzt als Parameter vom TypSet
und nichtMutableSet
deklariert werden muss.- APIs zum Angeben von Schlüssel- und Wertetabellennamen zur Disambiguierung in
@MapInfo
hinzugefügt (Icc4b5) - Behebung eines Problems mit der Quellkompatibilität, durch das
@Ignore
in Property-Gettern nicht mehr zulässig war. (Ifc2fb)
Fehlerkorrekturen
- Heuristischer Algorithmus zur Lösung von Duplikatspalten. Room versucht jetzt, mehrdeutige Spalten in einer Multimap-Abfrage aufzulösen. So können JOINs mit Tabellen mit demselben Namen 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
wird veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.
API-Änderungen
- Ein Problem wurde behoben, bei dem die Verwendung von Room
@IntDef
in Kotlin-Quellen nicht erzwungen wurde. (I75f41, b/217951311) - Ein Problem mit der Quellkompatibilität wurde behoben, sodass
@Query
in Property-Gettern wieder zulässig ist. (I0a09b) - „room-common“ von Java in Kotlin konvertiert. (I69c48, b/206858235)
Hinweis:Möglicherweise treten Probleme mit der Quellkompatibilität auf, da einige Properties bei der Umwandlung der Bibliothek in Kotlin in Companion-Objekte verschoben wurden. Wenn Ihr Code in Kotlin war und die alte Version von Room aufgerufen hat, ist für den Zugriff auf diese Properties in der neuen Version das Suffix „.Companion“ erforderlich.
- Die Raummigration wurde von Java zu Kotlin konvertiert. (I2724b, b/206858622)
paging
zugeordnete Dateien inroom-runtime
von Java nach Kotlin konvertiert. (I82fc8, b/206859668)- API für die Sperrung und Verwendung mehrerer Prozesse auf FrameworkSQLite*-Ebene hinzugefügt, um die Ersterstellung und Migration von Datenbanken mit mehreren Prozessen zu schützen. (Ied267, b/193182592)
Fehlerkorrekturen
- Unterstützung für interne Properties in Kotlin-Quellen hinzugefügt.
Das ist eine geringfügige Verhaltensänderung in Room. Dort wird der Quellname von Funktionen verwendet, während sie mit Eigenschaften als Getter/Setter abgeglichen werden. Bisher wurde der JVM-Name der Funktion verwendet, der sich für interne Funktionen/Eigenschaften unterscheidet.
Wenn Sie benutzerdefinierte
@JvmName
-Anmerkungen verwenden, um Getter/Setter mit privaten Eigenschaften abzugleichen, prüfen Sie den generierten Code nach dem Update noch einmal. (If6531, b/205289020)
Version 2.4.3
Version 2.4.3
27. Juli 2022
androidx.room:room-*:2.4.3
wird veröffentlicht. Version 2.4.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das Room in Kotlin 1.7 keine suspend-Funktionen erkannte (b/236612358)
Version 2.4.2
Version 2.4.2
23. Februar 2022
androidx.room:room-*:2.4.2
wird veröffentlicht. Version 2.4.2 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Problems beim Generieren von Code für eine Dao-
@Transaction
-Suspend-Funktion mit einem Body, der aufgrund der Kompilierung mit-Xjvm-default=all
oder einem ähnlichen Tool eine Standard-Schnittstellenmethode generiert. (Ia4ce5) - Behebung eines Fehlers, bei dem Room Code für eine Abfragemethode mit dem Rückgabetyp
Array<ByteArray>
generiert. (If086e, b/213789489)
Version 2.4.1
Version 2.4.1
12. Januar 2022
androidx.room:room-*:2.4.1
wird veröffentlicht. Version 2.4.1 enthält diese Commits.
Fehlerkorrekturen
- Unterstützung für interne Properties in Kotlin-Quellen hinzugefügt.
Das ist eine geringfügige Verhaltensänderung in Room. Dort wird der Quellname von Funktionen verwendet, während sie mit Eigenschaften als Getter/Setter abgeglichen werden. Bisher wurde der JVM-Name der Funktion verwendet, der sich für interne Funktionen/Eigenschaften unterscheidet.
Wenn Sie benutzerdefinierte
@JvmName
-Anmerkungen verwenden, um Getter/Setter mit privaten Eigenschaften abzugleichen, prüfen Sie den generierten Code nach dem Update noch einmal. (If6531, b/205289020)
Version 2.4.0
Version 2.4.0
15. Dezember 2021
androidx.room:room-*:2.4.0
wird 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, kann mit einer neuen Property
@Database#autoMigrations
angegeben werden, von und zu welcher Version automatisch migriert werden soll. Wenn Room zusätzliche Informationen zu Tabellen und Spaltenumbenennungen oder ‑löschungen benötigt, kann die@AutoMigration
-Anmerkung eine Spezifikationsklasse mit solchen Eingaben deklarieren. Weitere Informationen finden Sie in der@AutoMigration
-Dokumentation. - Dependency Injection bei automatischen Migrationen:
@ProvidedAutoMigrationSpec
ist eine neue API, mit der angegeben werden kann, dass eineAutoMigrationSpec
bei der Laufzeit überRoomDatabase.Builder#addAutoMigrationSpec()
bereitgestellt wird. So kann ein Dependency Injection-Framework solche Spezifikationen bereitstellen, wenn komplexe Abhängigkeiten erforderlich sind. - Unterstützung für automatische Migrationen durch den Migrationstestassistenten:
MigrationTestHelper
von Room wurde aktualisiert, um automatische Migrationen zu unterstützen. Dazu wurde eine neue Konstruktor-API bereitgestellt, die die zu testende Datenbankklasse empfängt. So kann der Assistent während derrunMigrationsAndValidate
automatisch Migrationen auf die gleiche Weise hinzufügen. - Unterstützung für das Räume-Paging:
androidx.room:room-paging
wurde veröffentlicht und bietet native Paging 3.0-Unterstützung für Room-Abfragen, dieandroidx.paging.PagingSource
zurückgeben. - Relationale Abfragemethoden: Room unterstützt jetzt
@Dao
-Methoden für Multimap-Rückgabetypen, die sich für JOIN-Anweisungen eignen. 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
wird veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.
Neue Funktionen
- Aktualisieren Sie die Abhängigkeit von Room auf 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
wird veröffentlicht. Version 2.4.0-beta02 enthält diese Commits.
Neue Funktionen
- Wir haben die Unterstützung für SparseArray und LongSparseArray in @MapInfo hinzugefügt. (Ic91a2b/138910317)
Fehlerkorrekturen
- Wir haben einen neuen TypeConverter-Analysator hinzugefügt, der Informationen zur Nullbarkeit in Typen berücksichtigt. Da diese Informationen nur in KSP verfügbar sind, sind sie standardmäßig nur in KSP aktiviert. Wenn Probleme auftreten, können Sie die Funktion deaktivieren, indem Sie dem Anmerkungs-Prozessor „room.useNullAwareTypeAnalysis=false“ übergeben. In diesem Fall melden Sie bitte den Fehler, da diese Markierung in Zukunft entfernt wird. Bei diesem neuen TypeConverter-Analysator wird empfohlen, nur TypeConverters anzugeben, die nicht null sind, da der neue Analysator sie in eine Null-Prüfung einschließen kann. Hinweis: Dies hat keine Auswirkungen auf Nutzer, die KAPT oder Java als Anmerkungs-Prozessor verwenden und keine Informationen zur Nullbarkeit in Typen haben (im Gegensatz zu KSP). (Ia88f9, b/193437407)
- Ein Fehler wurde behoben, durch den Room bei der Kompilierung einer FTS-Entität, für die der ICU-Tokenisierer verwendet werden soll, mit einem SQL-Fehler abstürzte. (I00db9, b/201753224)
- Behobenes Problem bei automatischen Migrationen im Zusammenhang mit einer neuen Spalte, die zwischen Versionen einem eingebetteten Element hinzugefügt wurde. (I5fcb1b/193798291)
- Wir haben ein Problem mit den Rückgabetypen der relationalen Abfragemethode in LEFT JOIN-Abfragen behoben. Durch diese Änderungen wird bei einer 1:n-Zuordnung das Objekt mit dem ungültigen Wert nicht in die für einen Schlüssel zurückgegebene Sammlung aufgenommen, wenn es im Cursor nicht 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, bei dem SQLite-Schlüsselwörter in Spaltennamen nicht korrekt geescaped wurden, wurde behoben. (Idbed4b/197133152)
Version 2.4.0-beta01
13. Oktober 2021
androidx.room:room-*:2.4.0-beta01
wird veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Behoben wurde ein Problem, bei dem bei automatischen Migrationen keine neuen Spalten hinzugefügt wurden, wenn eine andere Tabelle in derselben automatischen Migration auch eine neue Spalte mit demselben Namen hatte. (Ia5db5, b/200818663)
- Bei der durch die Raum-Paging-Funktion generierten PagingSource-Implementierung wird jetzt
queryExecutor
verwendet, das überRoomDatabase.Builder
übergeben wird, sodass es überschrieben werden kann. Bisher war das nicht möglich.Dispatchers.IO
(Iae259)
Version 2.4.0-alpha05
29. September 2021
androidx.room:room-*:2.4.0-alpha05
wird 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 Anmerkung „TypeConverters“ wurde eine neue Eigenschaft hinzugefügt, mit der Entwickler integrierte Enum- und UUID-Konverter deaktivieren können. Diese Konverter sind standardmäßig aktiviert, Sie können sie jedoch für einen bestimmten Bereich oder für die gesamte Datenbank deaktivieren. Weitere Informationen finden Sie in der Dokumentation zu TypeConverters. (36ae9e, b/195413406)
Unterstützung von nicht POJO-Schlüsseln/-Werten für Multimap-Rückgabetypen in DAOs über die Anmerkung
@MapInfo
. (I4d704)
@MapInfo
ist erforderlich, wenn die Schlüssel- oder Wertespalte 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 Room verwenden. (Ieaffe)
Fehlerkorrekturen
- Behebung eines Problems, bei dem die Ergebnisse von Abfragen mit mehreren Karten nicht korrekt sortiert wurden, wenn die Abfrage eine ORDER BY-Klausel für eine Spalte aus dem Schlüssel der Karte enthielt. (I6b887)
Externer Beitrag
- Neue API zum Angeben der Indexreihenfolge in @Index hinzugefügt. Vielen Dank an Nikita Schelonkin. (I033fc)
Version 2.4.0-alpha04
21. Juli 2021
androidx.room:room-*:2.4.0-alpha04
wird veröffentlicht. Version 2.4.0-alpha04 enthält diese Commits.
Neue Funktionen
Room unterstützt jetzt
@Dao
-Methoden für Multimap-Rückgabetypen, die für JOIN-Anweisungen nützlich sind. Die unterstützten Multimap-Typen sindMap
sowieImmutableMap
,ImmutableSetMultimap
undImmutableListMultimap
von Guava.Im Folgenden finden Sie Beispiele für Multimap-Abfragen:
1:1-Beziehungszuordnung
@Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId") fun getSongAndArtist(): Map<Song, Artist>
Beziehungskarte vom Typ „Eins-zu-N“ (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 oderFlow
von Coroutinen eingewickelt werden.
Räumliche Ansage
androidx.room:room-paging
wurde veröffentlicht und bietet native Unterstützung für Paging 3.0 für Room-Abfragen, 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
androidx.paging.PagingSource
-Implementierung durch eine, die auf Paging 3.0 APIs basiert. Die neue PagingSource-Implementierung analysiert Schlüssel anders. Daher muss jeder Schlüssel, der der PagingSource von Room manuell zugewiesen wird, diese Verhaltensänderung berücksichtigen, einschließlich des initialKey, der über den Konstruktor von Pager übergeben wird. Die Seiten werden ab demKey
geladen, wobeiKey
das erste geladene Element ist. Das weicht vom bisherigen Verhalten ab, 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. Wenn Sie es deaktivieren, wird der vorhandene Support für Paging 3.0 verwendet, der in Room 2.3 eingeführt wurde. In einer zukünftigen Version ist dieses Artefakt jedoch für Nutzer von Room with Paging 3.0 obligatorisch. Wenn Sie die Funktion aktivieren möchten, fügen Sie Ihrem ClassPath das neue Artefakt für die Raumzuordnung hinzu. Wenn Sie Gradle verwenden, können Sie Ihrer build.gradle-Datei das folgende Snippet hinzufügen:
dependency { implementation("androidx.room:room-paging:2.4.0-alpha04") }
Fehlerkorrekturen
- Behebung eines Problems bei automatischen Migrationen im Zusammenhang mit der Verarbeitung von Fremdschlüsselverstößen. (b/190113935)
Version 2.4.0-alpha03
16. Juni 2021
androidx.room:room-*:2.4.0-alpha03
wird 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. Dazu müssen Sie eine neue Konstruktor-API bereitstellen, die die zu testende Datenbankklasse empfängt. So kann der Assistent während derrunMigrationsAndValidate
automatisch Migrationen auf die gleiche Weise hinzufügen.
Fehlerkorrekturen
Ein Problem mit der nativen SQLite-Bibliothek von Room wurde behoben, um die Unterstützung von Apple-M1-Chips zu ermöglichen. (b/174695268
Ein Problem wurde behoben, bei dem in Room kein Fehler ausgegeben wurde, wenn der Rückgabetyp einer @Transaction-Funktion ein Ablauf war (I56ddd, b/190075899)
Ein Problem bei automatischen Migrationen im Zusammenhang mit Indexen wurde behoben. b/177673291
Abhängigkeitsupdates
- Die KSP-Unterstützung für den Gruppenbereich hängt jetzt von 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
wird veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.
API-Änderungen
@ProvidedAutoMigrationSpec
ist eine neue API, mit der angegeben werden kann, dass einAutoMigrationSpec
zur Laufzeit überRoomDatabase.Builder#addAutoMigrationSpec()
bereitgestellt wird. So kann ein Dependency Injection-Framework solche Spezifikationen bereitstellen, wenn komplexe Abhängigkeiten erforderlich sind.
Fehlerkorrekturen
- Behebung eines Problems bei automatischen Migrationen, bei dem
@DatabaseView
s nicht richtig neu erstellt wurden.
Externer Beitrag
- Ein Problem in
JournalMode.TRUNCATE
von Room wurde behoben, 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
wird 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, kann mit einer neuen Property
@Database#autoMigrations
angegeben werden, von und zu welcher Version automatisch migriert werden soll. Wenn Room zusätzliche Informationen zu Tabellen und Spaltenumbenennungen oder ‑löschungen benötigt, kann die@AutoMigration
-Anmerkung eine Spezifikationsklasse mit solchen Eingaben deklarieren. Weitere Informationen finden Sie in der@AutoMigration
-Dokumentation.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das
defaultValue
mit zusätzlichen Klammern von der Schemavalidierung von Google Tabellen falsch validiert wurde. b/182284899
Version 2.3.0
Version 2.3.0
21. April 2021
androidx.room:room-*:2.3.0
wird veröffentlicht. Version 2.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.2.0
- Integrierte Enum-Unterstützung: Wenn kein Typkonverter angegeben ist, wird in Google Tabellen jetzt standardmäßig ein Typkonverter für Enums und Strings verwendet. Wenn bereits ein Typkonverter für ein Enum vorhanden ist, wird dieser in Google Tabellen dem Standardkonverter vorgezogen.
- Abfrage-Callback: Room bietet jetzt eine allgemeine Callback-API RoomDatabase.QueryCallback, die verwendet werden kann, wenn Abfragen ausgeführt werden sollen. Das kann für das Logging in Debug-Builds nützlich sein. Der Rückruf kann über
RoomDatabase.Builder#setQueryCallback()
festgelegt werden. - Vorkonfigurierte Verbesserung: Room bietet jetzt APIs zum Erstellen einer Datenbank mit einer vorkonfigurierten Datenbank, die aus einem Eingabestream gelesen wird. Dies ist beispielsweise der Fall, wenn die vorkonfigurierte Datenbank gezippt ist.
- Bereitgestellte Typkonverter: Room bietet jetzt APIs zum Bereitstellen von Instanzen von Typkonvertern, damit die App ihre Initialisierung steuern kann. Verwenden Sie die neue Anmerkung @ProvidedTypeConverter, um einen Typkonverter zu kennzeichnen, der an Room übergeben wird.
- RxJava3-Unterstützung: Room unterstützt jetzt RxJava3-Typen. Ähnlich wie bei RxJava2 können Sie DAO-Methoden deklarieren, deren Rückgabetyp Flowable, Single, Maybe und Completable ist. Außerdem ist ein neues Artefakt
androidx.room:room-rxjava3
verfügbar, das RxJava3 unterstützt. - Unterstützung von Paging 3.0: In Room können jetzt Implementierungen für mit
@Query
annotierte Methoden generiert werden, deren Rückgabetypandroidx.paging.PagingSource
ist.
Version 2.3.0-rc01
24. März 2021
androidx.room:room-*:2.3.0-rc01
wird veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, aufgrund dessen von Room erstellte Coroutine Flow-Abfragen nicht in einem blockierenden
withTransaction
-Block verwendet werden konnten. (I797bf)
Version 2.3.0-beta03
10. März 2021
androidx.room:room-*:2.3.0-beta03
wird veröffentlicht. Version 2.3.0-beta03 enthält diese Commits.
Neue Funktionen
- Unterstützung für die inkrementelle Kompilierung für KSP hinzugefügt. (I031c1, b/176453350)
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem das Erstellen von PagingSource im Hauptthread einen ANR-Fehler auslösen konnte. (I42b74, b/181221318)
- Die Sichtbarkeit von
@ExperimentalRoomApi
wurde von „Paket privat“ zu „Öffentlich“ geändert. (b/181356119)
Externer Beitrag
- Ermöglichen Sie es Room, einen POJO-Rückgabetyp in einer DAO-Methode zu akzeptieren, die mit
@Query
und@SkipQueryVerification
annotiert ist. Room versucht, das Ergebnis der Abfrage auf die gleiche Weise in den POJO-Rückgabetyp umzuwandeln wie bei einer mit@RawQuery
annotierten DAO-Methode. Vielen Dank an Markus Riegel | hey@marcorei.com. (I45acb)
Version 2.3.0-beta02
18. Februar 2021
androidx.room:room-*:2.3.0-beta02
wird veröffentlicht. Version 2.3.0-beta02 enthält diese Commits.
Neue Funktionen
Room unterstützt jetzt experimentell die Kotlin-Symbolverarbeitung KSP.
KSP ist ein Ersatz für KAPT, um Anmerkungs-Prozessoren nativ im Kotlin-Compiler auszuführen. Dadurch werden die Build-Zeiten erheblich reduziert.
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'
anstelle vonkapt 'androidx.room:room-compiler:2.3.0-beta02'
. Weitere Informationen finden Sie in der KSP-Dokumentation.Da KSP noch experimentell ist, wird empfohlen, KAPT für Produktionscode zu verwenden. Die Verkürzung der Buildzeit gilt nur, wenn es keine anderen Prozessoren gibt, die KAPT verwenden. Bekannte Probleme finden Sie unter b/160322705.
Version 2.3.0-beta01
27. Januar 2021
androidx.room:room-*:2.3.0-beta01
wird veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.
Neue Funktionen
- Automatisch schließbare Datenbanken: In Google Tabellen können jetzt Datenbanken 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
- Behebung eines Problems, bei dem bei Dao-Methoden mit mehreren
@Update
- oder@Delete
-Methoden mit unterschiedlichen Konfliktstrategien Code nur mit einer der Strategien generiert wurde, wodurch die definierte Strategie effektiv ignoriert wurde. (/I0b90d, b/176138543)
Version 2.3.0-alpha04
16. Dezember 2020
androidx.room:room-*:2.3.0-alpha04
wird veröffentlicht. Version 2.3.0-alpha04 enthält diese Commits.
Neue Funktionen
- Room bietet jetzt eine allgemeine Callback API
RoomDatabase.QueryCallback
, die bei der Ausführung von Abfragen aufgerufen wird. Das kann für die Protokollierung in Debug-Builds nützlich sein. Der Rückruf kann überRoomDatabase.Builder#setQueryCallback()
festgelegt werden. (Iaa513, b/174478034, b/74877608) - Wenn kein Typkonverter angegeben ist, wird in Google Tabellen jetzt standardmäßig ein Typkonverter für die Umwandlung von Enum in String und umgekehrt verwendet. Wenn bereits ein Typkonverter für ein Enum vorhanden ist, wird dieser in Google Tabellen dem Standardkonverter vorgezogen. (b/73132006)
Bekanntes Problem
- Wenn für das Enum bereits ein Einweg-Typkonverter zum Lesen vorhanden ist, verwendet Room möglicherweise versehentlich den integrierten String-zu-Enum-Konverter, was nicht gewünscht sein kann. Das ist ein bekanntes Problem, das sich durch die Umwandlung in einen bidirektionalen Konverter beheben lässt. Weitere Informationen finden Sie unter b/175707691.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Room die inkrementelle Anmerkungsverarbeitung in neueren JDK-Versionen fälschlicherweise deaktivierte. (b/171387388)
- Ein Problem wurde behoben, bei dem Room die generierte Klasse nicht finden konnte, wenn mehrere Klassenlader verwendet wurden. Vielen Dank für die Fehlerbehebung von „Serendipity | 892449346@qq.com“ (b/170141113).
- Behoben: Room generierte fehlerhaften Code, wenn eine Kotlin-
@Dao
eine Basisklasse hatte, deren Generiken in der JVM primitive Typen waren. (b/160258066)
Externer Beitrag
- In Google Tabellen wird jetzt standardmäßig
beginTransactionNonExclusive
verwendet, wenn der WAL-Modus aktiviert ist und die API mindestens 16 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
wird veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.
Neue Funktionen
Room bietet jetzt APIs zum Bereitstellen von Instanzen von Typkonvertern, damit die App ihre Initialisierung steuern kann. Verwenden Sie die neue Anmerkung
@ProvidedTypeConverter
, um einen Typkonverter zu markieren, der an Room übergeben wird. Vielen Dank an „mzgreen yairobbe@gmail.com“. (Ie4fa5, b/121067210)Room bietet jetzt APIs zum Erstellen einer Datenbank mit einer vorkonfigurierten Datenbank, die aus einem Eingabestream gelesen wird. Dies ist beispielsweise der Fall, wenn die vorkonfigurierte Datenbank gezippt ist. Vielen Dank an „Ahmed El-Helw ahmedre@gmail.com“ (3e6792, b/146911060)
API-Änderungen
Der
@ForeignKey
-Anmerkung wurde ein fehlendes Ziel hinzugefügt, um ihre Verwendung außerhalb der@Entity
-Anmerkung zu verhindern. (Iced1e)Das Feld
mCallbacks
inRoomDatabase.java
ist jetzt ausgeblendet. (d576cb, b/76109329)
Fehlerkorrekturen
Die Dokumentation zu TypeConverters wurde aktualisiert, um zu verdeutlichen, dass TypeConverters nur zum Konvertieren von Spalten / Feldern und nicht von Zeilen verwendet werden können. (I07c56, b/77307836)
Aktualisierung des DaoProcessors, um einen Compilerfehler bei Daos mit einem generischen Supertyp mit Kotlin-„Primitiven“ zu beheben. (Ice6bb, b/160258066)
Die Dokumentation zu den Methoden zum Hinzufügen und Entfernen von Beobachtern wurde aktualisiert, um die Threading-Funktion zu verdeutlichen (Ifd1d9, b/153948821)
Behebung eines Problems, bei dem Room FTS-Tabellen, die eine rowid-Spalte deklariert haben, fälschlicherweise als ungültig eingestuft hat. (d62ebc, b/145858914)
Externe Beiträge
Behebung von Problemen mit Groß- und Kleinschreibung im türkischen Sprachcode (5746e3), b/68159494
Ersetzen Sie das
ConcurrentHashMap
inRoomDatabase
durchCollections.synchronizedMap()
, um Probleme unter Android Lollipop zu vermeiden (d1cfc7, b/162431855)Fügen Sie einen Callback für onOpenPrepackagedDatabase hinzu, wenn eine vorkonfigurierte Datenbank kopiert wird. (I1ba74, b/148934423)
Version 2.3.0-alpha02
22. Juli 2020
androidx.room:room-*:2.3.0-alpha02
wird veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- RxJava3-Unterstützung: Room unterstützt jetzt RxJava3-Typen. Ähnlich wie bei RxJava2 können Sie DAO-Methoden deklarieren, deren Rückgabetyp Flowable, Single, Maybe und Completable ist. Außerdem ist ein neues Artefakt
androidx.room:room-rxjava3
verfügbar, das RxJava3 unterstützt. (b/152427884)
API-Änderungen
- Die Deklaration eines
@TypeConverter
in der Kotlin-Objektklasse wird jetzt unterstützt. (b/151110764) - Die Option für die inkrementelle Anmerkungsverarbeitung für Räume ist jetzt standardmäßig aktiviert. (b/112110217)
Version 2.3.0-alpha01
10. Juni 2020
androidx.room:room-*:2.3.0-alpha01
wird veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.
Neue Funktionen
Unterstützung von Paging 3.0: In Room können jetzt Implementierungen für mit
@Query
annotierte Methoden generiert werden, 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, mit der Room die „*“-Projektion in einer Abfrage neu schreibt, sodass nicht verwendete Spalten im Ergebnis entfernt werden.- Die Prozessoroption
room.expandProjection
wird nicht mehr unterstützt. Verwenden Sie@RewriteQueriesToDropUnusedColumns
als Ersatz für Abfragen zur Raumoptimierung mit Sternprojektionen. Hinweis:@RewriteQueriesToDropUnusedColumns
ersetzt nicht die Lösung für Spaltenkonflikteroom.expandProjection
, die für Rückgabetypen mit@Embedded
-Feldern angeboten wird.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room die JDK-Version, die zum Aktivieren des inkrementellen Anmerkungs-Prozessors verwendet wurde, nicht richtig erkannte. Vielen Dank an Blaz Solar (me@blaz.solar) (b/155215201)
- Room bettet seine ANTLR-Abhängigkeit jetzt in den Anmerkungs-Prozessor 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
wird veröffentlicht. Version 2.2.6 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Room die inkrementelle Anmerkungsverarbeitung in neueren JDK-Versionen fälschlicherweise deaktivierte. (b/171387388)
Version 2.2.5
Version 2.2.5
18. März 2020
androidx.room:room-*:2.2.5
wird veröffentlicht. Version 2.2.5 enthält diese Commits.
Fehlerkorrekturen
- Machen Sie
MultiInstanceInvalidationService
zu einem directBootAware-Objekt. Mit freundlicher Unterstützung von „Mygod contact-git@mygod.be“ (b/148240967) - Ein Fehler wurde behoben, der zu einem Absturz führte, wenn die Invalidation für mehrere Instanzen aktiviert war und die Datenbank eine FTS-Entität enthielt. (b/148969394)
- Ein Problem beim Laden der nativen SQLite-Bibliotheken in den Room-Anmerkungs-Prozessor wurde behoben, das zu einem Absturz des Compilers aufgrund paralleler Kompilierungen führte. (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
werden freigegeben. Version 2.2.4 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit pausierten Transaktionen wurde behoben, bei dem es zu einem Deadlock kam, wenn die Coroutine kurz vor Beginn der Transaktion abgebrochen wurde. (b/148181325)
- Ein Problem wurde behoben, durch das @Generated beim Erstellen mit JDK 9 falsch verwendet wurde. (b/146538330)
- Ein Problem wurde behoben, bei dem Room fehlerhaften Code generierte, 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
wird veröffentlicht. Version 2.2.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room eine Datenbank, die nicht migriert wurde und ein altes Hash-Objekt mit Indizes im Schema enthielt, nicht validieren konnte. (b/139306173)
Version 2.2.2
Version 2.2.2
20. November 2019
androidx.room:room-*:2.2.2
wird veröffentlicht. Version 2.2.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den bei der Erhebung einer 1:1-Beziehung mit mehr als 999 Zeilen in Room Null-bezogene Elemente zurückgegeben wurden. (b/143105450)
Version 2.2.1
Version 2.2.1
23. Oktober 2019
androidx.room:room-*:2.2.1
wird veröffentlicht. Version 2.2.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room bei aktivierter Compileroption
expandProjection
fälschlicherweise vorCURSOR_MISMATCH
warnte. (b/140759491) - Es wurde ein Wiederholungsmechanismus für den Umgang mit der fehlenden nativen Bibliothek hinzugefügt, die zur Überprüfung von Abfragen zur Kompilierzeit verwendet wird.
Version 2.2.0
Version 2.2.0
9. Oktober 2019
androidx.room:room-*:2.2.0
wird veröffentlicht. Version 2.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.1.0
- Vorkonfigurierte Datenbank: Mit zwei neuen APIs in
RoomDatabase.Builder
können Sie jetzt eineRoomDatabase
auf Grundlage einer bereits ausgefüllten Datenbankdatei erstellen.createFromAsset()
ist für den Fall, dass sich die vorab ausgefüllte Datenbankdatei im Assets-Ordner des APK befindet.createFromFile()
ist für den Fall, dass sich die Datei an einem beliebigen Ort befindet. Die Verwendung dieser API ändert das Verhalten zerstörerischer Migrationen. Bei einer Fallback-Migration versucht Room, die vorab ausgefüllte Datenbank, falls verfügbar, noch einmal zu kopieren. Andernfalls werden alle Tabellen einfach gelöscht und neu erstellt. b/62185732 - Schema-Standardwerte:
@ColumnInfo
hat jetzt das neue AttributdefaultValue
, mit dem der Standardwert einer Spalte angegeben werden kann. Standardwerte sind Teil eines Datenbankschemas und werden bei Migrationen validiert, sofern angegeben. b/64088772 - Mehrfach-zu-Mehrfach-Beziehungen:
@Relation
hat jetzt das neue AttributassociateBy
, das eine neue Anmerkung@Junction
annimmt. Damit wird eine Beziehung deklariert, die über eine Verbindungstabelle (auch Join-Tabelle genannt) erfüllt werden muss. b/69201917 - Eins-zu-eins-Beziehungen: Die Einschränkung in POJO-Feldern, die mit
@Relation
als TypList
oderSet
annotiert sind, wurde aufgehoben. Damit können Beziehungen mit einzelnen Werten dargestellt werden. b/62905145 - Zielobjekt: Die DAO-Anmerkungen
@Insert
,@Update
und@Delete
haben jetzt das neue AttributtargetEntity
, mit dem die Zieltabelle angegeben werden kann, auf die die DAO-Methode angewendet werden soll. So können die Parameter dieser DAO-Methoden beliebige POJOs sein, die als Teilentitäten interpretiert werden. In der Praxis ermöglicht dies teilweise Einfügungen, Löschungen und Aktualisierungen. b/127549506 - Coroutines Flow:
@Query
DAO-Methoden können jetzt den RückgabetypFlow<T>
haben. Der zurückgegebene Stream sendet dann neue Werte aus, wenn die beobachteten Tabellen in der Abfrage ungültig werden. Die Deklarierung einer DAO-Funktion mit dem RückgabetypChannel<T>
ist ein Fehler. Stattdessen wird in Room empfohlen,Flow
zu verwenden und dann die benachbarten Funktionen zu verwenden, umFlow
inChannel
umzuwandeln. b/130428884 - Gradle Incremental Annotation Processor: Room ist jetzt ein Gradle-Isolierungs-Anmerkungs-Prozessor und die Inkrementierbarkeit kann über die Prozessoroption
room.incremental
aktiviert werden. Weitere Informationen finden Sie unter Optionen für den Room Compiler. Falls Probleme auftreten, können Sie hier einen Fehler melden. Wir planen, die Inkrementierbarkeit in einer zukünftigen stabilen Version standardmäßig zu aktivieren. b/112110217 - Erweiterte Projektionen: Es wurde eine neue experimentelle Compileroption namens
room.expandProjection
hinzugefügt, durch die Room eine Abfrage mit einer Sternprojektion so umschreibt, dass sie nur die Spalten im zurückgegebenen POJO-Typ enthält. Beispiel: Für eine DAO-Methode mit@Query("SELECT * FROM Song")
, die ein POJO mit dem NamenSongIdAndTitle
mit nur zwei Feldern zurückgibt. Anschließend wird die Abfrage von Room inSELECT id, title FROM Song
umgeschrieben, sodass die minimale Anzahl von Spalten abgerufen wird, die für den Rückgabetyp erforderlich ist. Dadurch wird dieCURSOR_MISMATCH
-Warnung weitgehend vermieden, die angezeigt wird, wenn die Abfrage zusätzliche Spalten zurückgibt, die keinem Feld im zurückgegebenen POJO-Typ entsprechen.
Version 2.2.0-rc01
5. September 2019
androidx.room:room:2.2.0-rc01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Seit Raum 2.2.0-beta01
gab es keine öffentlichen Änderungen.
Version 2.2.0-beta01
22. August 2019
androidx.room:room-*:2.2.0-beta01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den bei einer Coroutine Flow-Abfrage nach einer bestimmten Zeit keine neuen Werte mehr gesendet wurden. (b/139175786)
- Es wurde ein Fehler behoben, durch den Room beim Öffnen einer Datenbank, die seit Room 1.0 nicht migriert wurde, keinen Legacy-Schema-Hash-Code akzeptierte. 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
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Coroutines Flow:
@Query
DAO-Methoden können jetzt den RückgabetypFlow<T>
haben. Der zurückgegebene Stream sendet dann neue Werte aus, wenn die beobachteten Tabellen in der Abfrage ungültig werden. Die Deklarierung einer DAO-Funktion mit dem RückgabetypChannel<T>
ist ein Fehler. Stattdessen wird in Room empfohlen,Flow
zu verwenden und dann die benachbarten Funktionen zu verwenden, umFlow
inChannel
umzuwandeln. b/130428884 - Erweiterte Projektionen: Es wurde eine neue experimentelle Compileroption namens
room.expandProjection
hinzugefügt, durch die Room eine Abfrage mit einer Sternprojektion so umschreibt, dass sie nur die Spalten im zurückgegebenen POJO-Typ enthält. Beispiel: Für eine DAO-Methode mit@Query("SELECT * FROM Song")
, die ein POJO mit dem NamenSongIdAndTitle
mit nur zwei Feldern zurückgibt. Anschließend wird die Abfrage von Room inSELECT id, title FROM Song
umgeschrieben, sodass die minimale Anzahl von Spalten abgerufen wird, die für den Rückgabetyp erforderlich ist. Dadurch wird dieCURSOR_MISMATCH
-Warnung weitgehend vermieden, die angezeigt wird, wenn die Abfrage zusätzliche Spalten zurückgibt, die keinem Feld im zurückgegebenen POJO-Typ entsprechen. onDestructiveMigrate
ist eine neue Callback-API, dieRoomDatabase.Callback
hinzugefügt wurde, wenn Room eine Datenbank destruktiv migriert. b/79962330
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room fälschlicherweise Code generierte, in dem eine Methode als Feld-Setter verwendet wurde, wenn das Feld geschützt ist. b/136194628
- Ein Fehler wurde behoben, durch den der InvalidationTracker in einem zweiten Prozess eine NPE auslöste, wenn die Invalidation für mehrere Instanzen aktiviert und der Invalidation-Dienst beendet wurde. b/137454915
- Ein Fehler wurde behoben, bei dem Room den Rückgabetyp einer vererbten suspend-Funktion, die mit
@RawQuery
annotiert ist, nicht korrekt erkannt hat. b/137878827 - Der generierte Code für
@Relation
wurde aktualisiert, wenn der zugehörige Schlüssel vom Typ BLOB ist, um einen vergleichbarenByteBuffer
zu verwenden. b/137881998 - Ein Fehler wurde behoben, bei dem Room wegen fehlender Setter für POJOs, die als partielle Entitätsparameter von
@Insert
,@Update
und@Delete
verwendet wurden, eine Fehlermeldung ausgegeben hat. b/138664463 - Ein Fehler wurde behoben, bei dem Room bei Verwendung der Entitätsklasse in bestimmten DAO-Methoden über
@Entity
wegen fehlender Getter und Setter für eine ignorierte Spalte reklamierte. b/138238182 - Ein Fehler wurde behoben, durch den Room benannte Bindungsargumente nicht korrekt in Positionsargumente umwandelte, was bei der Ausführung einer Abfrage mit wiederverwendeten Parametern zu einer Laufzeitausnahme führte. b/137254857
Version 2.2.0-alpha01
10. Juli 2019
Neue Funktionen
- Vorkonfigurierte Datenbank: Mit zwei neuen APIs in
RoomDatabase.Builder
können Sie jetzt eineRoomDatabase
auf Grundlage einer bereits ausgefüllten Datenbankdatei erstellen.createFromAsset()
ist für den Fall, dass sich die vorab ausgefüllte Datenbankdatei im Assets-Ordner des APK befindet.createFromFile()
ist für den Fall, dass sich die Datei an einem beliebigen Ort befindet. Die Verwendung dieser API ändert das Verhalten zerstörerischer Migrationen. Bei einer Fallback-Migration versucht Room, die vorab ausgefüllte Datenbank, falls verfügbar, noch einmal zu kopieren. Andernfalls werden alle Tabellen einfach gelöscht und neu erstellt. b/62185732 - Schema-Standardwerte:
@ColumnInfo
hat jetzt das neue AttributdefaultValue
, mit dem der Standardwert einer Spalte angegeben werden kann. Standardwerte sind Teil eines Datenbankschemas und werden bei Migrationen validiert, sofern angegeben. b/64088772Hinweis:Wenn Ihr Datenbankschema bereits Standardwerte enthält, z. B. solche, die über
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z
hinzugefügt wurden, und Sie für dieselben Spalten Standardwerte über@ColumnInfo
definieren möchten, müssen Sie möglicherweise eine Migration durchführen, um die nicht berücksichtigten Standardwerte zu validieren. Weitere Informationen finden Sie unter Zimmermigrationen. - Mehrfach-zu-Mehrfach-Beziehungen:
@Relation
hat jetzt das neue AttributassociateBy
, das eine neue Anmerkung@Junction
annimmt. Damit wird eine Beziehung deklariert, die über eine Verbindungstabelle (auch Join-Tabelle genannt) erfüllt werden muss. b/69201917 - Eins-zu-eins-Beziehungen: Die Einschränkung in POJO-Feldern, die mit
@Relation
als TypList
oderSet
annotiert sind, wurde aufgehoben. Damit können Beziehungen mit einzelnen Werten dargestellt werden. b/62905145 - Zielobjekt: Die DAO-Anmerkungen
@Insert
,@Update
und@Delete
haben jetzt das neue AttributtargetEntity
, mit dem die Zieltabelle angegeben werden kann, auf die die DAO-Methode angewendet werden soll. So können die Parameter dieser DAO-Methoden beliebige POJOs sein, die als Teilentitäten interpretiert werden. In der Praxis ermöglicht dies teilweise Einfügungen, Löschungen und Aktualisierungen. b/127549506 - Gradle Incremental Annotation Processor: Room ist jetzt ein Gradle-Isolierungs-Anmerkungs-Prozessor und die Inkrementierbarkeit kann über die Prozessoroption
room.incremental
aktiviert werden. Weitere Informationen finden Sie unter Optionen für den Room Compiler. Falls Probleme auftreten, können Sie hier einen Fehler melden. Wir planen, die Inkrementierbarkeit in einer zukünftigen stabilen Version standardmäßig zu aktivieren. b/112110217
Fehlerkorrekturen
- Room überträgt den
EmptySetResultException
nicht mehr an den globalen Fehler-Handler, wenn der Rx-Stream einer Abfrage vor Abschluss der Abfrage freigegeben wurde. b/130257475 - Ein Fehler wurde behoben, bei dem in Room eine falsche Fehlermeldung angezeigt wurde, wenn eine mit
@RawQuery
annotierte DAO-Funktion keinen Rückgabetyp hatte. b/134303897 - Room generiert keine DAO-Adapter mehr mit Rohtypen. b/135747255
Version 2.1.0
Version 2.1.0
13. Juni 2019
Room 2.1.0 wird ohne Änderungen gegenüber 2.1.0-rc01
veröffentlicht. Die Commits, die in der Version enthalten sind, finden Sie hier.
Wichtige Änderungen seit Version 2.0.0
- FTS: In Google Tabellen werden jetzt Entitäten mit einer Zuordnungstabelle vom Typ FTS3 oder FTS4 unterstützt. Klassen, die mit
@Entity
gekennzeichnet sind, können jetzt zusätzlich mit@Fts3
oder@Fts4
gekennzeichnet werden, um eine Klasse mit einer Zuordnungstabelle für die Volltextsuche zu deklarieren. FTS-Optionen für weitere Anpassungen sind über die Methoden der Anmerkung verfügbar. - Ansichten: In Room kann jetzt mithilfe der Anmerkung
@DatabaseView
eine Klasse als gespeicherte Abfrage deklariert werden, auch als Ansicht bezeichnet. - Coroutinen: DAO-Methoden können jetzt Funktionen anhalten. Fügen Sie
room-ktx
zu Ihren Abhängigkeiten hinzu, um diese Funktion zu nutzen. Das ktx-Artefakt bietet außerdem die ErweiterungsfunktionRoomDatabase.withTransaction
zum Ausführen von Datenbanktransaktionen innerhalb einer Coroutine. - Auto Value: In Room können jetzt Klassen mit AutoValue-Anmerkungen als Entitäten und POJOs deklariert werden. Die Room-Anmerkungen
@PrimaryKey
,@ColumnInfo
,@Embedded
und@Relation
können jetzt in den abstrakten Methoden einer Klasse mit automatischen Werten deklariert werden. Beachten Sie, dass diese Anmerkungen auch von@CopyAnnotations
begleitet werden müssen, damit Room sie richtig versteht. - Zusätzliche Unterstützung für asynchrone Abläufe: DAO-Methoden, die mit
@Insert
,@Delete
oder@Update
annotiert sind, sowie@Query
-Elemente mitINSERT
-,DELETE
- oderUPDATE
-Anweisungen unterstützen jetzt die Rx-RückgabetypenCompletable
,Single
,Maybe
und den Guava-RückgabetypListenableFuture
. Außerdem können sie als suspendierende Funktionen verwendet werden. enableMultiInstanceInvalidation
ist eine neue API inRoomDatabase.Builder
, mit der die Daten in mehreren Instanzen der RoomDatabase mit derselben Datenbankdatei ungültig gemacht werden können.fallbackToDestructiveMigrationOnDowngrade
ist eine neue API inRoomDatabase.Builder
, mit der die Datenbank bei einem Downgrade automatisch neu erstellt wird.ignoredColumns
ist eine neue API in der@Entity
-Anmerkung, mit der ignorierte Felder nach Name aufgelistet werden können.- Room verwendet jetzt den primären Konstruktor von Kotlin in Datenklassen, sodass die Properties nicht mehr als
vars
deklariert werden müssen.
Version 2.1.0-rc01
29. Mai 2019
Fehlerkorrekturen
- Ein Fehler bei der Rauminitialisierung wurde behoben, der aufgrund einer bereits eingerichteten temp_store-Konfiguration auftreten kann. b/132602198
- Die Warnung zur Verwendung von doppelten Anführungszeichen für Nutzer mit SQLite 3.27.0 und höher wurde behoben. b/131712640
- Ein Fehler wurde behoben, durch den der InvalidationTracker einen Absturz verursachte, wenn mehrere Invalidation-Prüfungen parallel ausgeführt wurden. b/133457594
Version 2.1.0-beta01
7. Mai 2019
androidx.room 2.1.0-beta01
wurde 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, sodass sie keinen Funktionsblock mehr mit einemCoroutineScope
als Empfänger annehmen kann. Dadurch wird verhindert, dass der zusätzlichecoroutineScope { }
-Wrapper übersprungen wird, der erforderlich ist, um die Elemente im Transaktionsblock gleichzeitig auszuführen.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room keinen TypeConverter für eine Kotlin-DAO-Funktion mit einem Parameter vom Typ „Collection“ finden konnte. b/122066791
Version 2.1.0-alpha06
22. März 2019
API-/Verhaltensänderungen
- Asynchrone Transaktionsabfragen werden jetzt so serialisiert, dass Room nicht mehr als einen Thread für die Ausführung von Datenbanktransaktionen verwendet.
RoomDatabase.Builder.setTransactionExecutor(Executor)
wurde hinzugefügt, um den Executor für Transaktionen zu konfigurieren. RoomDatabase.runInTransaction(Callable)
umschließt geprüfte Ausnahmen nicht mehr in RuntimeExceptions. b/128623748
Fehlerkorrekturen
- Ein Fehler wurde behoben, aufgrund dessen der Invalidation-Tracker die Beobachtung einer Inhaltstabelle einstellte, wenn Beobachter sowohl für die Inhaltstabelle als auch für eine externe FTS-Tabelle für Inhalte hinzugefügt wurden. b/128508917
- Die 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 Coroutine sicher ausführen. Funktionen für Raumerweiterungen sowie Unterstützung für Coroutinen sind imroom-ktx
-Artefakt verfügbar. - Nicht abstrakte DAO-Methoden, die mit
@Transaction
annotiert sind, können jetzt als Suspend-Funktionen verwendet werden. b/120241587
API-/Verhaltensänderungen
- Das Artefakt
room-coroutines
wurde inroom-ktx
umbenannt, um der Benennung anderer androidx-Artefakte zu entsprechen. beginTransaction
,setTransactionSuccessful
undendTransaction
inRoomDatabase
wurden zugunsten vonrunInTransaction
und derroom-ktx
-ErweiterungsfunktionwithTransaction
eingestellt.
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den Tokenizer-Argumente entfernt wurden, wenn der verwendete Tokenizer „SIMPLE“ war. b/125427014
- Ein Fehler wurde behoben, bei dem Room ausstehende Funktionen mit Parametern, deren Typ eine innere Klasse war, nicht korrekt erkannt hat. b/123767877
- Ein Fehler wurde behoben, bei dem die Abfrage in der Hauptschleife vorzeitig vorbereitet wurde, wenn eine verzögerte
@Query
-DAO-Methode mitINSERT
-,UPDATE
- oderDELETE
-Anweisungen verwendet wurde. b/123695593 - Es wurden verschiedene Fehler behoben, bei denen Room für bestimmte Sperrfunktionen falschen Code generierte. b/123466702 und b/123457323
- Ein Fehler wurde behoben, durch den die Verwendung nicht mehr unterstützter Methoden im generierten Code nicht korrekt unterdrückt wurde. b/117602586
- Die Room-Abhängigkeit von androidx.sqlite wurde auf Version 1.0.2 aktualisiert. Diese enthält Fehlerkorrekturen für die korrekte Verarbeitung beschädigter Datenbanken. b/124476912
Bekannte Probleme
- Room 2.1.0-alpha05 hängt vom
kotlinx-metadata-jvm
-Artefakt ab, das derzeit nicht in Maven Central verfügbar ist (KT-27991). Diese Abhängigkeit kann behoben werden, indem Sie Ihren Projekt-Repositoriesmaven { url "https://kotlin.bintray.com/kotlinx/" }
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 die asynchronen TypenSingle
,Mayble
,Completable
undListenableFuture
zurückgeben. Außerdem können sie Funktionen pausieren. b/120227284
API-/Verhaltensänderungen
- Room gibt jetzt einen Fehler zurück, 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 für Room derzeit nicht möglich, eine Transaktion für eine Funktion zu beginnen und zu beenden, die Abfragen in verschiedenen Threads ausführen kann. b/120109336 OnConflictStrategy.FAIL
undOnConflictStrategy.ROLLBACK
wurden zu@Deprecated
, da sie sich nicht wie vorgesehen mit den aktuellen SQLite-Bindungen von Android verhalten. b/117266738
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room den TypeConverter eines Rückgabetyps nicht korrekt verwendete, wenn die DAO-Methode eine suspendierte Funktion war. b/122988159
- Ein Fehler wurde behoben, bei dem Room vererbte Suspend-Funktionen fälschlicherweise als nicht suspendierend identifizierte. b/122902595
- Ein Fehler wurde behoben, bei dem Room einen falschen Code generierte, wenn sich ein
@Embedded
-Feld in einer übergeordneten Klasse befand und in mehreren untergeordneten Klassen verwendet wurde. b/121099048 - Ein Problem wurde behoben, bei dem die Datenbank bei Aufruf von DAO-Suspend-Funktionen zwischen einer
beginTransaction()
und einerendTransaction()
zu einem Deadlock führte. b/120854786
Version 2.1.0-alpha03
4. Dezember 2018
API-Änderungen
- Für das FTS
tokenizer
in@Fts3
/@Fts4
wird jetzt ein String statt eines Enum verwendet. So können benutzerdefinierte Tokenisierer von Room verwendet werden. Integrierte Tokenisierer werden weiterhin inFtsOptions
als Stringkonstanten definiert. b/119234881
Neue Funktionen
- Coroutinen: DAO-Methoden können jetzt Funktionen anhalten. Zur Unterstützung von Pausierfunktionen in Google Tabellen wurde das neue Artefakt
room-coroutines
veröffentlicht. b/69474692 - DAO-Methoden, die mit
@Insert
,@Delete
oder@Update
annotiert sind, unterstützen jetztListenableFuture
als Rückgabetyp. b/119418331
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room fälschlicherweise versuchte, einen Konstruktor mit Spalten in der
ignoredColumns
-Eigenschaft von@Entity
zu finden. b/119830714 - Ein Fehler wurde behoben, bei dem DAO-Methodenparameter in der generierten Implementierung von Room nicht als final gekennzeichnet wurden. b/118015483
- Ein Fehler wurde behoben, bei dem der Room-Prozessor abstürzte, wenn ein Fehler bei einer Abfrage mit Sonderzeichen 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 bei einer dauerhaften Beobachtung automatisch gelöscht wurden, sodass keine neuen Daten mehr gesendet wurden. b/74477406
- Die Sperre für das Schließen von
RoomDatabase
wurde aktualisiert, um Sperrkonflikte zu reduzieren. b/117900450
Version 2.1.0-alpha02
30. Oktober 2018
Neue Funktionen
- Es ist jetzt möglich, in einer
@Relation
auf eine@DatabaseView
zu verweisen. b/117680932
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room beim Abonnieren und Entfernen von einem Rx-Rückgabetyp Festplatten-E/A-Vorgänge im Hauptthread ausführte. b/117201279
- Ein Fehler wurde behoben, durch den Room keinen geeigneten Typkonverter für ein Feld in einer Kotlin-Entitätsklasse finden konnte. b/111404868
- Ein Fehler wurde behoben, durch den Room bei einer
DAO
-Schnittstellenimplementierung mit einer Kotlin-Standardmethode ohne Argumente einen falschen Code generierte. b/117527454 - Der SQLite-Grammatik-Parser von Room wurde aktualisiert, um ein Leistungsproblem zu beheben, das zu langen Build-Zeiten führte. b/117401230
Version 2.1.0-alpha01
8. Oktober 2018
Neue Funktionen
- FTS: Räume unterstützen jetzt Entitäten mit einer Zuordnungstabelle vom Typ FTS3 oder FTS4. Klassen, die mit
@Entity
gekennzeichnet sind, können jetzt zusätzlich mit@Fts3
oder@Fts4
gekennzeichnet werden, um eine Klasse mit einer Zuordnungstabelle für die Volltextsuche zu deklarieren. FTS-Optionen für weitere Anpassungen sind über die Methoden der Anmerkung verfügbar. b/62356416 - Ansichten: In Room kann jetzt eine Klasse mithilfe der Anmerkung @DatabaseView als gespeicherte Abfrage deklariert werden, auch als Ansicht bezeichnet. b/67033276
- Auto Value: In Room können jetzt Klassen mit AutoValue-Anmerkungen als Entitäten und POJOs deklariert werden. Die Room-Anmerkungen
@PrimaryKey
,@ColumnInfo
,@Embedded
und@Relation
können jetzt in den abstrakten Methoden einer Klasse mit automatischen Werten deklariert werden. Diese Anmerkungen müssen auch von@CopyAnnotations
begleitet werden, damit Room sie richtig versteht. b/62408420 - Unterstützung zusätzlicher Rx-Rückgabetypen: DAO-Methoden, die mit
@Insert
,@Delete
oder@Update
annotiert sind, unterstützen jetzt die Rx-RückgabetypenCompletable
,Single<T>
undMaybe<T>
. b/63317956 - Unveränderliche Typen mit
@Relation
: Bisher mussten mit@Relation
annotierte Felder in Google Tabellen gesetzt werden können. Jetzt können sie auch Konstruktorparameter sein. enableMultiInstanceInvalidation
: Eine neue API inRoomDatabase.Builder
, mit der die Daten in mehreren Instanzen der RoomDatabase mit derselben Datenbankdatei ungültig gemacht werden können. Dieser Invalidation-Mechanismus für mehrere Instanzen funktioniert auch für mehrere Prozesse. b/62334005fallbackToDestructiveMigrationOnDowngrade
: Eine neue API inRoomDatabase.Builder
, mit der die Datenbank bei einem Downgrade automatisch neu erstellt wird. b/110416954ignoredColumns
: Eine neue API in der@Entity
-Anmerkung, mit der ignorierte Felder nach Name aufgelistet werden können. Hilfreich, um vererbte Felder einer 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
- Zwei Probleme wurden behoben, bei denen Room bei der Initialisierung nicht richtig von einer beschädigten Datenbank oder einer fehlerhaften Migration wiederhergestellt wurde: b/111504749 und b/111519144
- Room verwendet jetzt den primären Konstruktor von Kotlin in Datenklassen, sodass die Felder nicht mehr 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-rc01 veröffentlicht.
Version 2.0.0-rc01
20. September 2018
androidx.room 2.0.0-rc01
wird 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 festzulegen, wo Abfragen ausgeführt werden- Unterstützung für RxJava2
Observable
hinzugefügt - Die generierten DAO- und Datenbankimplementierungen sind jetzt endgültig.
Fehlerkorrekturen
- Name des Klassen-/Felds im Fehler „cannot find getter for field“ angeben b/73334503
- Abwärtskompatibilität von RoomOpenHelper mit älteren Versionen von Room behoben b/110197391
Abhängigkeiten vor AndroidX
Fügen Sie für die Versionen von Room vor AndroidX die folgenden Abhängigkeiten hinzu:
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 mit Raum 1.1.1-rc1
identisch.
Version 1.1.1-rc1
16. Mai 2018
Wir empfehlen dringend, bei Migrationen den Raum 1.1.1-rc1
anstelle von 1.1.0
zu verwenden.
Ein Fehler wurde behoben, durch den die Initiierung nach der Migration in Google Tabellen nicht richtig verarbeitet wurde b/79362399
Version 1.1.0
Version 1.1.0-beta3
19. April 2018
Fehlerkorrekturen
- Kompilierungsfehler beheben, wenn ein Kotlin-POJO auf ein Beziehungsobjekt verweist, das in Java definiert wurde b/78199923
Version 1.1.0-beta2
5. April 2018
Fehlerkorrekturen
Ein kritischer Fehler in den Rx-
Single
- undMaybe
-Implementierungen von Room wurde behoben, bei dem die Abfrage vorzeitig wiederverwendet wurde. Dies führte zu Problemen, wenn den zurückgegebenenSingle
- oderMaybe
-Instanzen mehr als ein Beobachter hinzugefügt wurde. b/76031240[RoomDatabase.clearAllTables][ref-clearAllTables]
VACUUM
die Datenbank nicht, wenn es innerhalb einer Transaktion aufgerufen wird. b/77235565
Version 1.1.0-beta1
21. März 2018
API-Änderungen
- Aufgrund von Feedback aus der API-Überprüfung wird bei
@RawQuery
keinString
mehr als Suchparameter akzeptiert. Sie müssen [SupportSQLiteQuery][ref-SupportSQLiteQuery] verwenden. (siehe [SimpleSQLiteQuery][ref-SimpleSQLiteQuery], um eine Instanz von [SupportSQLiteQuery][ref-SupportSQLiteQuery] mit Argumentunterstützung zu erstellen). - Die Methode [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] von RoomDatabase.Builder akzeptiert jetzt
vararg int
anstelle vonvararg Integer
.
Fehlerkorrekturen
- [RoomDatabase.clearAllTables][ref-clearAllTables] versucht jetzt, Speicherplatz an das Betriebssystem zurückzugeben, indem ein WAL-Checkpunkt festgelegt und die Datenbank
VACUUM
wird. - [
@RawQuery
][ref-RawQuery] akzeptiert jetzt jedes Pojo für die PropertyobservedEntities
, solange das Pojo über seineEmbedded
-Felder oderRelation
s auf eine oder mehrere Entitäten verweist. b/74041772 - Seitenaufbau: Die DataSource-Implementierung von Room verarbeitet jetzt korrekt Abhängigkeiten zwischen mehreren Tabellen (z. B. Beziehungen und Joins). Bisher wurden damit keine neuen Ergebnisse ausgelöst oder die Kompilierung schlug fehl. b/74128314
Version 1.1.0-alpha1
22. Januar 2018
Neue Funktionen
RawQuery
: Mit dieser neuen API können@Dao
-Methoden SQL als Abfrageparameter empfangen. b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: Diese neue API inRoomDatabase.Builder
ermöglicht eine detailliertere Kontrolle darüber, ab welcher Schemaversion zerstörerische Migrationen zulässig sind (im Vergleich zu fallbackToDestructiveMigration) b/64989640- In Google Chat werden jetzt nur noch neuere Paging APIs (alpha-4 und höher) unterstützt. Die Unterstützung für die eingestellte
LivePagedListProvider
wurde eingestellt. Wenn Sie die neue Room-Alphaversion verwenden möchten, müssen Sie diealpha-4
- oder eine höhere Version verwenden und vonLivePagedListProvider
aufLivePagedListBuilder
umstellen, falls Sie das noch nicht getan haben.
Fehlerkorrekturen
- Verbesserte Unterstützung für Kotlin-Kapt-Typen. b/69164099
- Die Reihenfolge der Felder macht das Schema nicht mehr ungültig. b/64290754