You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级到SDK 31后Room找不到@Entity导致构建失败该如何解决?

问题排查结果

存在的问题

  • 实体类Subscriber配置错误:你为Subscriber的id字段设置了autoGenerate = true自增属性,但当前data class的构造要求必须传入非空的id参数,同时你注释了备用的无参构造,导致Room无法自动实例化实体类生成数据库表。
  • Gradle依赖配置冲突:Kotlin项目仅需用kapt处理Room注解,你同时配置了kapt和Java用的annotationProcessor处理room-compiler,二者冲突引发注解处理异常。
  • 构建脚本配置错误:你把协程实验性开关放在了dependencies依赖块内,位置错误导致构建脚本解析异常。

解决方案

  1. 修正Subscriber实体类
    给id字段添加默认值0,无需手动传入id即可创建实例,也符合Room的实例化要求:
package com.homeofficeprojects.samplearchitecturedatabasecoroutinesproject

import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity(tableName = "subscriber_data_table")
data class Subscriber(
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "subscriber_id")
    var id: Int = 0,

    @ColumnInfo(name = "subscriber_name")
    var name: String,

    @ColumnInfo(name = "subscriber_email")
    var email: String
)
  1. 修正Gradle配置
    删除dependencies块内的两处错误配置:
// 删除这行Java注解处理器配置
annotationProcessor("androidx.room:room-compiler:$room_version")

// 删除这部分错误放置的协程配置
kotlin {
    experimental {
        coroutines "enable"
    }
}

其余原有依赖保留不变即可。

  1. 清理缓存重新构建
    修改完成后执行Android Studio File -> Invalidate Caches / Restart 清理缓存,再重新构建项目即可解决报错。

内容的提问来源于stack exchange,提问作者DJ. Aduvanchik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:24:04