升级Compile SDK到35后出现<nulltype>无法转为Class<?>错误求助
解决Compile SDK 35升级后Room报
<nulltype> cannot be represented as Class<?>错误 优先升级Room依赖版本
这个错误基本是Room旧版本与SDK 35的兼容性问题,尤其是Room在null类型映射逻辑上的适配缺陷。把Room相关的所有依赖(runtime、compiler、ktx等)升级到2.6.1及以上的稳定版,示例配置如下:// Java项目依赖 implementation "androidx.room:room-runtime:2.6.1" annotationProcessor "androidx.room:room-compiler:2.6.1" // Kotlin项目替换annotationProcessor为kapt // kapt "androidx.room:room-compiler:2.6.1" implementation "androidx.room:room-ktx:2.6.1"同步升级Gson(若结合Room使用)
如果项目里用了Room的TypeConverter配合Gson做序列化,旧版Gson可能和SDK 35的字节码处理逻辑冲突。建议把Gson升级到2.10.1及以上版本:implementation "com.google.code.gson:gson:2.10.1"彻底清理重建项目
升级依赖后必须清除旧缓存,避免残留编译问题:- 点击Android Studio顶部
Build > Clean Project - 接着执行
Build > Rebuild Project - 也可以手动删除项目根目录的
.gradle和build文件夹,再重新同步Gradle
- 点击Android Studio顶部
排查Room实体类与转换器
检查实体类和自定义TypeConverter的null值处理:- Java实体类中允许为null的字段要添加
@Nullable注解,Kotlin则用?标记可空类型 - 确保TypeConverter能正确处理null输入和输出,不要出现类型转换时的空指针或类型不匹配
- Java实体类中允许为null的字段要添加
内容的提问来源于stack exchange,提问作者user27245664
相关产品推荐
相关产品推荐

