Android项目集成SQLite与SQLCipher遇依赖报错求助
Android集成SQLCipher报错:无法访问SupportSQLiteDatabase的解决办法
问题原因
报错核心是net.sqlcipher.database.SQLiteDatabase继承的父类androidx.sqlite.db.SupportSQLiteDatabase在类路径中不可用或存在冲突,具体可能是以下情况:
- SQLCipher版本与AndroidX SQLite版本不兼容,4.5.4版SQLCipher对依赖版本有特定要求,单纯更新SQLite到最新版无法解决版本匹配问题
- 仅引入
androidx.sqlite:sqlite,缺失配套的androidx.sqlite:sqlite-framework,导致父类定义无法被加载 - 项目其他依赖引入了不同版本的AndroidX SQLite,引发类路径版本冲突
解决办法
匹配兼容的依赖版本
SQLCipher版本需与AndroidX SQLite对应,建议调整为经过验证的组合,比如:implementation "androidx.sqlite:sqlite:2.3.0" implementation "net.zetetic:android-database-sqlcipher:4.6.0"补充完整的AndroidX SQLite依赖
确保同时引入核心包和框架包,SupportSQLiteDatabase的实现依赖框架包支撑:implementation "androidx.sqlite:sqlite-framework:2.3.0"排查并解决依赖冲突
执行Gradle命令查看依赖树,定位冲突的SQLite版本:./gradlew app:dependencies对引入冲突版本的第三方依赖,通过排除规则统一版本:
implementation("第三方依赖坐标") { exclude group: "androidx.sqlite", module: "sqlite" }清理缓存并重建项目
- 执行Android Studio的
File -> Invalidate Caches... -> Invalidate and Restart - 删除项目根目录
.gradle、build文件夹及app模块下的build文件夹 - 重新执行
./gradlew clean build
- 执行Android Studio的
内容的提问来源于stack exchange,提问作者SRKS
相关产品推荐
相关产品推荐

