6

我正在尝试在我的 Jetpack Compose 项目中设置 Android Room。但是,当尝试添加...

kapt "androidx.room:room-compiler:2.2.3"

...到应用程序 build.gradle 依赖项。我的构建失败并出现错误...

e: java.lang.NoSuchMethodError: org.jetbrains.kotlin.codegen.state.GenerationState$Builder.isIrBackend(Z)Lorg/jetbrains/kotlin/codegen/state/GenerationState$Builder;

关于为什么会这样的任何见解?我们可以将 Android Room 与 Jetpack Compose 一起使用吗?

4

3 回答 3

3

我很确定我们仍然处于注释处理器(用于 Room、Retrofit 等)和实验性 Kotlin 编译器无法相处的状态。目前推荐的方法是将 Compose 东西隔离在一个独立于需要注释处理器的模块的模块中。

于 2020-02-13T22:18:50.627 回答
3

目前不支持此功能,因为 kapt 不能很好地与 Jetpack Compose 配合使用。此处正在跟踪此问题 - https://issuetracker.google.com/issues/143232368

于 2020-02-26T07:51:05.903 回答
0

它实际上正在工作,但并非没有一些变化。

对于使用 AndroidStudio 2020.3.1 Canary 2 创建的新项目:

在 build.gradle(项目)中:将compose_version 降级为1.0.0-alpha07,将ext.kotlin_version 降级1.4.10

在 build.gradle(模块)中:

在 composeOptions 下将composeCompilerVersion降级为1.4.10

依赖项下,将“ androidx.compose.ui :ui-tooling:$compose_version”更改为“ androidx.ui :ui-tooling:$compose_version”。

在主要活动中 - 更改预览的导入,因为它取决于 ui-tooling。

添加房间依赖项。

应该管用。

但是,一些较新的 Compose 功能可能无法正常工作,正如他们明确指出的那样,应该使用 Kotlin 版本 1.4.20 及更高版本。

于 2020-12-13T08:35:23.777 回答