В какой момент генерируется код с аннотациями в Room

«В какой момент генерируется код с аннотациями в Room» — вопрос из категории Базы данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Room генерирует код во время компиляции с помощью аннотационного процессора (kapt или ksp). Это происходит после написания кода, но до его выполнения.

Пример:

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

Генерация происходит:

  1. Компилятор находит аннотации (@Entity, @Dao, @Database)
  2. Аннотационный процессор Room анализирует их
  3. Генерирует реализации абстрактных классов/методов
  4. Создает схему БД и SQL-запросы

Сгенерированный код можно найти в build/generated/source/kapt/ или аналогичной папке для KSP.