Kotlin编译时kapt报[MissingType]:AppDatabase.room引用类型不存在如何解决
问题解决方案
- 统一Kotlin版本
项目级Gradle中声明的Kotlin版本为1.5.31,但应用级Gradle依赖中kotlin-stdlib版本为1.4.32,版本不一致会导致KAPT注解处理异常。将应用级的kotlin-stdlib依赖版本改为和项目级一致即可:
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
- 更换稳定版Room依赖
当前使用的2.4.0-beta02属于测试版本,本身存在兼容性问题,建议升级到正式稳定版,例如2.4.3:
def room_version = "2.4.3" implementation "androidx.room:room-runtime:$room_version" implementation "androidx.room:room-ktx:$room_version" kapt "androidx.room:room-compiler:$room_version" implementation "androidx.room:room-rxjava2:$room_version"
- 删除不必要的注解排除配置
应用级Gradle中compile.exclude group: 'org.jetbrains', module: 'annotations'配置会排除Kotlin和Room注解处理必须的依赖,直接删除这段配置即可:
// 移除以下整段配置 configurations { cleanedAnnotations compile.exclude group: 'org.jetbrains', module: 'annotations' }
- 检查实体类、DAO注解完整性
确认PlayerEntity、SquareEntity两个类都正确添加了@Entity注解,且类中包含至少一个被@PrimaryKey修饰的字段,对应的PlayerDAO、SquareDAO接口也正确添加了@Dao注解。 - 清理缓存重新编译
执行以下操作后重新编译项目:
- 点击Android Studio的
Build -> Clean Project - 关闭Android Studio,删除项目根目录下的
.gradle文件夹、应用模块下的build文件夹 - 重新打开项目执行
Build -> Rebuild Project
- 可选:关闭KAPT增量编译
如果以上操作还是报错,可以在项目根目录的gradle.properties文件中添加一行kapt.incremental.apt=false关闭KAPT增量编译后再重试。
内容的提问来源于stack exchange,提问作者Ege Kayıhan
相关产品推荐
相关产品推荐

