Zimmer

Die Room-Persistenzbibliothek bietet eine Abstraktionsschicht über SQLite, um einen stabileren Datenbankzugriff zu ermöglichen und gleichzeitig die volle Leistung von SQLite zu nutzen.
Letzte Aktualisierung Stabile Version Release Candidate Beta-Ausgabe Alpha-Release
30. Oktober 2024 2.6.1 - - 2.7.0-alpha11

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

Der Raum verfügt über die folgenden Optionen für Annotationsprozessoren.

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
Generieren Sie Kotlin-Quelldateien anstelle von Java. Erfordert KSP. Der Standardwert ist false. Weitere Informationen finden Sie in den Hinweisen zu 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 in der Gradle-Build-Datei auf Modulebene das Plug-in 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 Ihre Version niedriger ist oder die Option noch nicht unterstützt wird, können Sie stattdessen Optionen für Annotationsprozessoren 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 den Raum 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. Unter Raumdatenbank migrieren wird eine vollständige Implementierung von CommandLineArgumentsProvider angezeigt, die den Schemaspeicherort bereitstellt.

Feedback

Dein 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.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 2.7

Version 2.7.0-alpha11

30. Oktober 2024

androidx.room:room-*:2.7.0-alpha11 wurde 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 eine RawRoomQuery 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 mit PagingSource 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 mit ByteBuffer auf Plattformen zu unterstützen, die nicht Android oder JVM sind (I75543, b/367205685)
  • Fügen Sie SQLiteStatement.getColumnType() zusammen mit den verschiedenen SQLITE_DATA_*-Ergebniskonstanten hinzu, um das Abrufen des Datentyps einer Spalte zu ermöglichen. (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 einer Error 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 so migriert, dass sie KMP-kompatibel sind. (Ib8756, b/339934824)
  • Die API invalidationTrackerFlow() wurde als InvalidationTracker.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, da Cursor 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

  • Es wurde ein Problem behoben, bei dem im generierten „Ist“-Wert des RoomDatabaseConstructor-Objekts der „tatsächliche“-Modifikator in der initialize-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:

  1. Definieren Sie ein Objekt vom Typ „expect“, das RoomDatabaseConstructor implementiert.

      expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
    
  2. Verknüpfen Sie das Objekt mithilfe von @ConstructedBy mit der @Database-Deklaration.

      @Database(...)
      @ConstructedBy(MyDatabaseCtor::class) // NEW
      abstract class MyDatabase : RoomDatabase
    
  3. 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 namens RoomRawQuery, die SupportSQLiteQuery ähnelt, da sie den Roh-SQL-String enthält, und einer Funktion zum Binden von Argumenten in eine Anweisung. In @RawQuery annotierte Funktionen können jetzt RoomRawQuery als einzelnen Parameter akzeptiert werden. (Iea844, b/330586815)
  • Fügen Sie eine Überladung von setQueryCallback() hinzu, die ein CoroutineContext 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 in SQLite und BundledSQLiteKt in BundledSQLite umbenannt. (I8b501)

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem ein RoomDatabase bei Verwendung des AndroidSQLiteDriver 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, bei dem 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 annotierte @Database-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 wurde 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 zu den ersten Schritten mit Room KMP finden Sie in der offiziellen Dokumentation zu Room KMP.

  • Die Kotlin-Codegenerierung für KSP ist 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 Ü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 generierten RoomDatabase-Implementierung zu vermeiden. Verwendungsbeispiel:
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. Eine RoomDatabase kann nur mit Executoren mit setQueryExecutor oder mit einem Coroutinenkontext 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 zur SQLite 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 und RoomDatabase.useWriterConnection.
  • Callbacks im Zusammenhang mit Varios Room haben jetzt eine überlastete Version, die SQLiteConnection statt SupportSQLiteDatabase 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 Rückrufe 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 mit allen zugehörigen APIs in androidx.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

  • 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 als LoadStateUpdate von LoadResult.Error mit dem Throwable weitergegeben. Dieser Fehlerstatus kann über PagingDataAdapter.loadStateFlow(Views) oder LazyPagingItems.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 zur Übergabe von Verarbeitungsoptionen für KSP finden Sie in der Dokumentation zu KSP.

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. Eine weitere Einschränkung besteht darin, dass Rückgabetypen der Sammlung „Nullable“-Werte in Room für Kotlin CodeGen nicht mehr zulässig sind.

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, ein NULL-Wert wird ausgegeben. </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 für Raumversion 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 die 2067 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

  • 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 beide), der in einer @MapInfo-Anmerkung angegeben ist, müssen Sie eine @MapColumn-Anmerkung mit nur der columnName 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 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 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. 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 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-Anmerkungsverarbeitungsoptionen 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 cachbare 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 seine Back-Ends (javac, KAPT, KSP), um schema-Dateien in entsprechenden Ordnern, z.B. schemas/flavorOneDebug/com.package.MyDatabase/1.json, auszugeben. Wie gewohnt werden diese Dateien in das Repository eingecheckt, um für die Validierung und automatische Migration verwendet zu werden. Wenn Sie von den Optionen des Anmerkungsprocessors zum Plug-in migrieren, müssen die vorhandenen Schemadateien in die vom Plug-in erstellten Flavor-Verzeichnisse kopiert werden. 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, 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 (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 zum Übergeben von Prozessoroptionen für KSP finden Sie in der KSP-Dokumentation.

Hinweis:Bei der Verwendung von Kotlin CodeGen wurden zusätzliche Einschränkungen hinzugefügt. 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 sie in Java größtenteils 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

  • 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 ist nützlich 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 Inkompatibilitä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 unterstützt jetzt den reentrant case besser. (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 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, wurde withTransaction() so umstrukturiert, dass es nicht mehr auf einen Kontrolljob angewiesen ist. Stattdessen wird der blockierende Transaktionsblock von runBlocking 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 in InvalidationTracker onInvalidate() in Observer jetzt als Parameter vom Typ Set und nicht MutableSet 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 einen Fehler, wenn wesentliche Inkompatibilitäten vorliegen.
  • 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 Zimmeransagen wurden neue Artefakte für die Zimmeransage hinzugefügt: room-paging-rxjava2, room-paging-rxjava3 und room-paging-guava.
  • APIs zum Angeben von Namen von Schlüssel- und Wertetabellen für die Entfernung von Mehrdeutigkeiten in @MapInfo hinzugefügt (Icc4b5)

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 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 Arrayverhalten 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 einer IllegalStateException für den Raum ausgegeben. (I328dd)
  • Behebung einer inkompatiblen Änderung der Kotlin-Quelle für Getter / Properties von getOpenHelper, getQueryExecutor und getTransactionExecutor. (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

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 Konvertierung der Bibliothek in Kotlin können Kompatibilitätsprobleme mit der Quelle 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() in Observer jetzt als Parameter vom Typ Set und nicht MutableSet deklariert werden muss.

  • APIs zum Angeben von Namen von Schlüssel- und Wertetabellen für die Entfernung von Mehrdeutigkeiten 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: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, muss die neue Version beim Zugriff auf diese Eigenschaften das Suffix „.Companion“ haben.

  • Raummigration von Java zu Kotlin wurde konvertiert. (I2724b, b/206858622)
  • paging zugeordnete Dateien in room-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. Dies ist eine geringfügige Verhaltensänderung in Room, wo der Quellname von Funktionen verwendet und gleichzeitig mit Attributen als Getter/Setter abgeglichen wird. Zuvor wurde der JVM-Name der Funktion verwendet, der sich für interne Funktionen/Attribute 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

  • 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 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 eine AutoMigrationSpec bei der Laufzeit über RoomDatabase.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 das Hilfsprogramm während runMigrationsAndValidate automatisch automatische Migrationen auf dieselbe 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, die androidx.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 sind Map, SparseArray, LongSparseArray sowie ImmutableMap, ImmutableSetMultimap und ImmutableListMultimap 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

  • 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: Für Nutzer, die KAPT oder Java als Anmerkungs-Prozessor verwenden, hat dies keine Auswirkungen. Im Gegensatz zu KSP enthalten die Typen keine Informationen zur Nullbarkeit. (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)
  • 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 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 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 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 über RoomDatabase.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

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, 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 @MapInfo-Anmerkung. (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

  • 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 sind Map sowie ImmutableMap, ImmutableSetMultimap und ImmutableListMultimap 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>
    

    Eins-zu-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 Flow von Coroutinen eingewickelt werden.

Räumliche Ansage

  • androidx.room:room-paging wird veröffentlicht und bietet native Unterstützung für Paging 3.0 für Raumabfragen, die androidx.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 dem Key geladen, wobei Key das erste geladene Element ist. Das weicht vom bisherigen Verhalten ab, bei dem LoadParams.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 „Raum mit Weiterleitung“ 3.0 obligatorisch. Wenn du die Funktion aktivieren möchtest, füge deinem ClassPath das neue Artefakt für die Raumzuordnung hinzu. 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

  • 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 das Hilfsprogramm während runMigrationsAndValidate automatisch automatische Migrationen auf dieselbe 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)

  • 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 angegeben werden kann, dass ein AutoMigrationSpec zur Laufzeit über RoomDatabase.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 @DatabaseViews nicht richtig neu erstellt wurden.

Externer Beitrag

  • Beheben Sie ein Problem im JournalMode.TRUNCATE des Raums, bei dem der InvalidationTracker-Callback manchmal ungültig, zu spät oder gar nicht aufgerufen wurde. Vielen Dank an Uli Bubenheimer | [email protected] (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, 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 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 Dokumentation zu @AutoMigration.

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 für die Ausführung von Abfragen verwendet werden kann. 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. Um einen Typkonverter zu markieren, der für Room bereitgestellt wird, verwenden Sie die neue Annotation @ProvidedTypeConverter.
  • 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 @Query-annotierte Methoden generiert werden, deren Rückgabetyp androidx.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

  • 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 von „Paket privat“ zu „Öffentlich“ geändert. (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 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 | [email protected]. (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 bietet jetzt experimentelle Unterstützung für 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 durch ksp ersetzen. Verwenden Sie beispielsweise ksp 'androidx.room:room-compiler:2.3.0-beta02' statt kapt 'androidx.room:room-compiler:2.3.0-beta02'. Weitere Informationen finden Sie in der Dokumentation zu KPIs.

    Da KSP noch experimentell ist, wird empfohlen, KAPT für Produktionscode 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ß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 Callback kann über RoomDatabase.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 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. Das ist ein bekanntes Problem, das sich beheben lässt, indem Sie den Konverter zu einem bidirektionalen Konverter machen. 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 Korrektur "Serendipity | [email protected]"! (b/170141113)
  • Behoben: Room generierte inkorrekten Code, wenn eine Kotlin-@Dao eine Basisklasse hatte, deren Generiken in der JVM primitive Typen waren. (b/160258066)

Externer Beitrag

  • In Chatrooms wird jetzt standardmäßig beginTransactionNonExclusive verwendet, wenn der WAL-Modus aktiviert ist und die API-Version 16 oder höher ist. Vielen Dank an Ahmed I. Khalil | [email protected]“ (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 für Room bereitgestellt wird. Vielen Dank an „mzgreen [email protected]“. (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 [email protected]“ (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 in RoomDatabase.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 „Primitiven“ von Kotlin zu beheben. (Ice6bb, b/160258066)

  • Dokumentation zu Methoden zum Hinzufügen und Entfernen von Beobachtern aktualisiert, um die Thread-Verwaltung 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

  • Probleme mit dem Gebietsschema in Groß-/Kleinschreibung im Zusammenhang mit Türkisch (5746e3), b/68159494 beheben

  • Ersetzen Sie das ConcurrentHashMap in RoomDatabase durch Collections.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 „Fließend“, „Einzeln“, „Vielleicht“ und „Vervollständigbar“ 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 wurde 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ückgabetyp androidx.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 room.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 inkrementellen Anmerkungs-Prozessors verwendet wurde, nicht richtig erkannte. Vielen Dank an Blaz Solar ([email protected]) (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. Vielen Dank an „Mygod [email protected]“ (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 wurden veröffentlicht. 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)
  • 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 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 wurde veröffentlicht. Version 2.2.2 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, durch den beim Erfassen 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

  • Es wurde ein Fehler behoben, bei dem Room fälschlicherweise eine Warnung vor CURSOR_MISMATCH war, wenn die Compiler-Option expandProjection aktiviert war. (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 eine RoomDatabase anhand einer bereits ausgefüllten Datenbankdatei erstellen. createFromAsset() ist für den Fall, dass sich die vorab ausgefüllte Datenbankdatei im Assets-Ordner der 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
  • Schemastandardwerte: @ColumnInfo hat jetzt das neue Attribut defaultValue, 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-Mehrfacher-Beziehungen: @Relation hat jetzt ein neues Attribut associateBy, 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 Typ List oder Set annotiert sind, wurde aufgehoben. Damit können Beziehungen mit nur einem Wert dargestellt werden. b/62905145
  • Zielentität: Die DAO-Anmerkungen @Insert, @Update und @Delete haben jetzt das neue Attribut targetEntity, mit dem die Zieltabelle angegeben werden kann, auf die die DAO-Methode reagieren 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ückgabetyp Flow<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ückgabetyp Channel<T> ist ein Fehler. Stattdessen wird in Room empfohlen, Flow zu verwenden und dann die benachbarten Funktionen zu verwenden, um Flow in Channel 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 Raum-Compiler-Optionen. Falls Probleme auftreten, können Sie hier einen Fehler melden. Wir planen, die Erweiterungsfunktion standardmäßig in einer zukünftigen, stabilen Version zu aktivieren. b/112110217
  • Erweiterung von Projektionen: Die neue experimentelle Compiler-Option room.expandProjection wurde hinzugefügt. Sie bewirkt, dass Room eine Abfrage mit einer Sternprojektion umschreibt, sodass sie nur die Spalten im zurückgegebenen Typ POJO enthält. Beispiel: Für eine DAO-Methode mit @Query("SELECT * FROM Song"), die ein POJO mit dem Namen SongIdAndTitle mit nur zwei Feldern zurückgibt. Anschließend wird die Abfrage von Room in SELECT id, title FROM Song umgeschrieben, sodass die minimale Anzahl von Spalten abgerufen wird, die für den Rückgabetyp erforderlich ist. Dadurch wird die CURSOR_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.

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

  • 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, bei dem 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 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Coroutines-Ablauf: @Query DAO-Methoden können jetzt vom Rückgabetyp Flow<T> sein. Der zurückgegebene Stream sendet dann neue Werte aus, wenn die beobachteten Tabellen in der Abfrage ungültig werden. Die Deklaration einer DAO-Funktion mit dem Rückgabetyp Channel<T> ist ein Fehler. In Room wird stattdessen empfohlen, Flow zu verwenden und dann die benachbarten Funktionen zu verwenden, um Flow in ein Channel-Objekt zu konvertieren. 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 Namen SongIdAndTitle mit nur zwei Feldern zurückgibt. Anschließend wird die Abfrage von Room in SELECT id, title FROM Song umgeschrieben, sodass die minimale Anzahl von Spalten abgerufen wird, die für den Rückgabetyp erforderlich ist. Dadurch wird im Wesentlichen die Warnung CURSOR_MISMATCH beseitigt, die angezeigt wird, wenn die Abfrage zusätzliche Spalten zurückgibt, die mit keinem Feld im zurückgegebenen POJO-Typ übereinstimmen.
  • onDestructiveMigrate ist eine neue Callback-API, die RoomDatabase.Callback hinzugefügt wurde, wenn Room eine Datenbank destruktiv migriert. b/79962330

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem Room fälschlicherweise Code generierte, wenn eine Methode als Feld-Setter verwendet wurde, das Feld aber geschützt war. b/136194628
  • Es wurde ein Fehler behoben, der dazu führte, dass der InvalidationTracker in einem zweiten Prozess eine NPE auslöste, wenn die Entwertung mehrerer Instanzen aktiviert war und der Entwertungsdienst beendet wurde. b/137454915
  • Es wurde ein Fehler behoben, bei dem Room den Rückgabetyp einer übernommenen Sperrfunktion mit der Anmerkung @RawQuery nicht korrekt identifizierte. b/137878827
  • Der generierte Code für @Relation wurde aktualisiert, wenn der zugehörige Schlüssel vom Typ BLOB ist, um einen vergleichbaren ByteBuffer zu verwenden. b/137881998
  • Es wurde ein Fehler behoben, bei dem sich Room über fehlende Setter in POJOs beschwert, die als Teilentitätsparameter von @Insert, @Update und @Delete verwendet wurden. b/138664463
  • Ein Fehler wurde behoben, bei dem Room über @Entity wegen fehlender Getter und Setter für eine ignorierte Spalte beschwerte, wenn die Entitätsklasse in bestimmten DAO-Methoden verwendet wurde. 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 eine RoomDatabase anhand einer bereits ausgefüllten Datenbankdatei erstellen. createFromAsset() wird verwendet, wenn sich die vorab ausgefüllte Datenbankdatei im Ordner „Assets“ des APK befindet, während sich die Datei createFromFile() an einem beliebigen Speicherort 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 Attribut defaultValue, mit dem der Standardwert einer Spalte angegeben werden kann. Standardwerte sind Teil eines Datenbankschemas und werden bei Migrationen validiert, sofern angegeben. b/64088772

    Hinweis: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 Attribut associateBy, das eine neue Anmerkung @Junction annimmt. Damit wird eine Beziehung deklariert, die über eine Junction-Tabelle (auch Join-Tabelle genannt) erfüllt werden muss. b/69201917
  • Eins-zu-eins-Beziehungen: Die Einschränkung in POJO-Feldern, die mit @Relation als Typ List oder Set 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 Attribut targetEntity, 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
  • Inkrementeller Annotationsprozessor von Gradle: Room ist jetzt ein Gradle-Isolierungsprozessor. 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 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
  • Der Raum 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 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. 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.
  • Ansichten: Room unterstützt jetzt die Deklaration einer Klasse als gespeicherte Abfrage, auch als Ansicht bezeichnet, mithilfe der Annotation @DatabaseView.
  • Coroutinen: DAO-Methoden können jetzt Funktionen anhalten. Nehmen Sie room-ktx in Ihre Abhängigkeiten auf, um diese Funktionalität zu nutzen. Das ktx-Artefakt bietet auch die Erweiterungsfunktion RoomDatabase.withTransaction zum Ausführen von Datenbanktransaktionen innerhalb einer Koroutine.
  • 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 mit INSERT-, DELETE- oder UPDATE-Anweisungen unterstützen jetzt die Rx-Rückgabetypen Completable, Single, Maybe und den Guava-Rückgabetyp ListenableFuture. Außerdem können sie als suspendierende Funktionen verwendet werden.
  • enableMultiInstanceInvalidation ist eine neue API in RoomDatabase.Builder, mit der die Daten in mehreren Instanzen der RoomDatabase mit derselben Datenbankdatei ungültig gemacht werden können.
  • fallbackToDestructiveMigrationOnDowngrade ist eine neue API in RoomDatabase.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 ordnungsgemäß in Datenklassen, sodass die Attribute nicht 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
  • Behebung einer Warnung zur Verwendung von doppelten Anführungszeichen für Nutzer mit SQLite 3.27.0 und höher. 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 einem CoroutineScope als Empfänger akzeptiert. Dadurch wird verhindert, dass der zusätzliche coroutineScope { }-Wrapper übersprungen wird, der zum gleichzeitigen Ausführen von Elementen im Transaktionsblock erforderlich ist.

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 sind jetzt serialisiert, sodass Room für die Ausführung von Datenbanktransaktionen nicht mehr als einen Thread 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 Google Tabellen 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. Funktionen für Raumerweiterungen sowie Unterstützung für Coroutinen sind im room-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 in room-ktx umbenannt und hat denselben Namen wie andere Androidx-Artefakte.
  • beginTransaction, setTransactionSuccessful und endTransaction in RoomDatabase wurden zugunsten von runInTransaction und der room-ktx-Erweiterungsfunktion withTransaction 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 aussetzende Funktionen mit Parametern, deren Typ eine innere Klasse war, in Room nicht korrekt identifiziert wurden. b/123767877
  • Es wurde ein Fehler behoben, bei dem die verzögerte DAO-Methode @Query mit INSERT-, UPDATE- oder DELETE-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
  • Ein Fehler wurde behoben, durch den die Verwendung nicht mehr unterstützter Methoden im generierten Code nicht korrekt unterdrückt wurde. b/117602586
  • Die Raumabhängigkeit von androidx.sqlite wurde auf 1.0.2 aktualisiert. Diese enthält Fehlerkorrekturen für die korrekte Handhabung von beschädigten 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-Repositories maven { 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 und INSERT-, UPDATE- oder DELETE-Anweisungen enthalten, können jetzt die asynchronen Typen Single, Mayble, Completable und ListenableFuture 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 wie Single, Mayble, Completable, LiveData oder ListenableFuture 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 und OnConflictStrategy.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, durch den Room übernommene Sperrfunktionen fälschlicherweise als nicht anhaltend identifiziert hat. 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
  • Es wurde ein Problem behoben, bei dem die Datenbank beim Aufrufen von DAO-Aussetzungsfunktionen zwischen beginTransaction() und endTransaction() ein Deadlock auslöste. b/120854786

Version 2.1.0-alpha03

4. Dezember 2018

API-Änderungen

  • Für die FTS-Datei tokenizer in @Fts3/@Fts4 wird jetzt ein String anstelle einer Enum verwendet. Dadurch können benutzerdefinierte Tokenizer von Room verwendet werden. Integrierte Tokenisierer werden weiterhin in FtsOptions als Stringkonstanten definiert. b/119234881

Neue Funktionen

  • Coroutinen: DAO-Methoden können jetzt Funktionen anhalten. Zur Unterstützung von Funktionen zum Pausieren in Gruppenbereichen wurde das neue Artefakt room-coroutines veröffentlicht. b/69474692
  • DAO-Methoden, die mit @Insert, @Delete oder @Update annotiert sind, unterstützen jetzt ListenableFuture 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 Room DAO-Methodenparameter in der generierten Implementierung nicht als endgültig markiert hat. 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 eines IN-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 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, bei dem Room für eine DAO-Schnittstellenimplementierung mit einer Kotlin-Standardmethode ohne Argumente falschen Code generierte. 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: 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 außerdem von @CopyAnnotations begleitet werden, damit Room sie richtig versteht. b/62408420
  • Zusätzliche Unterstützung für Rx-Rückgabetypen: Mit @Insert, @Delete oder @Update gekennzeichnete DAO-Methoden unterstützen jetzt Rx-Rückgabetypen Completable, Single<T> und Maybe<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 Konstruktorparameter sein.
  • enableMultiInstanceInvalidation: Ist eine neue API in RoomDatabase.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/62334005
  • fallbackToDestructiveMigrationOnDowngrade: Eine neue API in RoomDatabase.Builder, mit der die Datenbank bei einem Downgrade automatisch neu erstellt wird. b/110416954
  • ignoredColumns: Eine neue API in der @Entity-Anmerkung, 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 und mDatabase in RoomDatabase 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 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 festzulegen, wo Abfragen ausgeführt werden
  • Unterstützung für RxJava2 Observable hinzugefügt
  • Die generierten DAO- und Datenbankimplementierungen sind jetzt endgültig.

Fehlerkorrekturen

  • Klassen-/Feldname in Fehler "Getter für Feld nicht finden" angeben 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 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- und Maybe-Implementierungen von Room wurde behoben, bei dem die Abfrage vorzeitig wiederverwendet wurde. Dies führte zu Problemen, wenn den zurückgegebenen Single- oder Maybe-Instanzen mehr als ein Beobachter hinzugefügt wurde. b/76031240

  • [RoomDatabase.clearAllTables][ref-clearAllTables] erstellt keinen VACUUM-Vorgang für die Datenbank, wenn sie 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 kein String mehr als Suchparameter akzeptiert. 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.
  • Die Methode [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] von RoomDatabase.Builder akzeptiert jetzt vararg int anstelle von vararg 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 Property observedEntities, solange das Pojo über seine Embedded-Felder oder Relations auf eine oder mehrere Entitäten verweist. b/74041772
  • Seitenumgebung: 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 sie konnten nicht kompiliert werden. b/74128314

Version 1.1.0-alpha1

22. Januar 2018

Neue Funktionen

  • RawQuery: Diese neue API ermöglicht @Dao-Methoden das Empfangen von SQL als Abfrageparameter b/62103290, b/71458963.
  • fallBackToDestructiveMigrationsFrom: Diese neue API in RoomDatabase.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 Alphaversion von „Raum“ verwenden möchten, müssen Sie das Paging alpha-4 oder höher verwenden und von LivePagedListProvider zu LivePagedListBuilder wechseln, falls Sie dies 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