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

升级Room至2.4.3版本后AppDatabase_Impl权限覆盖错误求助

解决Room 2.4.3升级后的权限冲突问题

问题根源

Room 2.4.x版本调整了内部Delegate类中onCreate方法的访问权限为public,但自动生成的数据库实现代码(AppDatabase_Impl)里,匿名子类的onCreate方法用了protected修饰符,违反了Java方法覆盖的权限规则——子类方法权限不能比父类更严格,因此触发编译报错。

具体解决步骤

1. 统一Room所有依赖版本

检查Module级build.gradle文件,确保Room的runtime、compiler、ktx等所有相关依赖版本完全一致,都是2.4.3:

// Kotlin项目用kapt的写法
implementation "androidx.room:room-runtime:2.4.3"
implementation "androidx.room:room-ktx:2.4.3"
kapt "androidx.room:room-compiler:2.4.3"

// 用KSP替代kapt的话,替换成下面这行
// ksp "androidx.room:room-compiler:2.4.3"

2. 清理缓存并重新编译

旧的生成代码残留可能导致冲突,执行以下操作:

  • 点击Android Studio顶部菜单栏Build -> Clean Project
  • 再点击Build -> Rebuild Project
  • 也可以手动删除app/build/generated目录下的Room相关生成文件

3. 检查自定义Callback的方法权限

如果构建数据库时添加了自定义RoomDatabase.Callback,确保重写的onCreate、onOpen等方法显式声明为public(Kotlin默认是public,但若手动修改过权限需恢复):

Room.databaseBuilder(context, AppDatabase::class.java, "my_car_db")
    .addCallback(object : RoomDatabase.Callback() {
        override public fun onCreate(db: SupportSQLiteDatabase) {
            super.onCreate(db)
            // 你的数据库初始化逻辑
        }
    })
    .build()

4. 匹配Kotlin与Room版本

Room 2.4.3需要搭配Kotlin 1.6.x版本(推荐1.6.21及以上的1.6.x分支),版本不匹配也会引发兼容性问题。检查根目录build.gradle的Kotlin插件版本:

plugins {
    id 'com.android.application' version '7.2.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
}

额外方案

如果以上步骤都无效,可以暂时降级Room到2.4.2版本,或者升级到更高的稳定版本(如2.5.0),后续版本大概率修复了该权限冲突问题。

内容的提问来源于stack exchange,提问作者Basil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:46:12