android - 将 androidx.room 打包到 aar 库中的项目导致 java.lang.NoClassDefFoundError : Failed resolution of: Landroidx/room/RoomDatabase

标签 android kotlin android-room android-library aar

这是我在这个资源上没有找到任何解决方案的问题,所以请分享一些知识。 我制作了一个可以作为模块正常工作的库。 这是它的等级:

def room_version = "2.2.6"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-ktx:$room_version"
implementation "androidx.room:room-rxjava2:$room_version"

现在,当我将它组装到 AAR 中时,程序崩溃并显示 java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/room/RoomDatabase

当我用谷歌搜索这个问题时,发现这是一个常见问题,解决方案是从 androidx.room 切换到 android.arch.persistence.room。但是那个旧版本没有我正在使用的 room-rxjava2

那么,也许有人知道在 AAR 中使用 androidx.room 而不会崩溃的解决方案?

最佳答案

我们还必须将 room 依赖项添加到应用程序模块(导入 aar 的位置)以支持带有 room-rxJava2 的 androidx.room:

def room_version = "2.3.0"

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

// To use Kotlin annotation processing tool
kapt("androidx.room:room-compiler:$room_version")

// RxJava2 support for Room
implementation "androidx.room:room-rxjava2:$room_version"

关于android - 将 androidx.room 打包到 aar 库中的项目导致 java.lang.NoClassDefFoundError : Failed resolution of: Landroidx/room/RoomDatabase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66133537/

相关文章:

java - 无法将 tornadofx 应用程序编译成独立的 jar

android - Room Database TypeConverter 未在某些集合中使用,例如字符串集

android - Android:处理库项目中Google依赖项版本的最佳方法

javascript - 将 url 中的 json 数据存储到 cordova 的数据库中

android - 如何访问 Skype 应用程序的 main.db 以在示例 Android 应用程序中显示最近的选项卡日志?

Android:如何完全禁用 Edittext 中的复制和粘贴功能

java - 如何将参数 "t"替换为 "className"?

android - Kotlin:如何摆脱功能过载样板?

android - Android Room 数据库可以存储多少 Kbs/Mbs/Gbs 数据?

android - 在 Android Room 中使用 @Upsert 时获取 "UNIQUE constraint failed"