Google зарелизил Room 3.0 (
androidx.room3), и это самый серьёзный мажор Room за всю его историю: библиотеку переписали под Kotlin Multiplatform с нуля.Ради обратной совместимости 3.0 живёт в отдельном пакете и maven-координатах (
androidx.room3:room3-runtime вместо androidx.room:room-runtime), поэтому 2.x и 3.x спокойно уживаются в одном проекте на разных базах данных. Мигрировать можно постепенно, модуль за модулем.Cама миграция не косметическая.
Cursor и SupportSQLite слой под Android убраны, всё теперь через корутины:// было (Room 2.x)
roomDatabase.query("SELECT * FROM Song").use { cursor -> ... }
// стало (Room 3.x)
roomDatabase.useReaderConnection { connection ->
connection.usePrepared("SELECT * FROM Song") { stmt -> ... }
}
KAPT для Room больше не работает вообще, только KSP и весь код генерируется на Kotlin.
InvalidationTracker.Observer заменили на Flow (createFlow()). Конфигурация через Executor тоже ушла, теперь CoroutineContext.Из нового:
🔥 FTS5 через
@Fts5🔥 поддержка JS и WasmJS (драйвер поверх Web Worker и OPFS)
🔥 кастомные DAO return type converters. Paging, RxJava и LiveData интеграции теперь строятся на одном общем API вместо трёх разных костылей ранее.
‼️ ВАЖНО: это не «обновил зависимость и всё скомпилировалось». Если у тебя много прямых обращений к
SupportSQLiteDatabase или ты завязан на Executor-конфигурацию, то закладывай время на миграцию.#Android #AndroidDev #KMP #Web #WASM #AndroidJetpack