Jetpack Compose 和 Android Room 兼容性
Jetpack Compose and Android Room compatibility
我正在尝试在我的 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 了吗?
我很确定我们仍然处于注解处理器(用于 Room、Retrofit 等)和实验性 Kotlin 编译器无法相处的状态。目前推荐的方法是将 Compose 的东西隔离在一个独立于需要注释处理器的模块的模块中。
目前不支持此功能,因为 kapt 不能很好地与 Jetpack Compose 配合使用。正在此处跟踪此问题 - https://issuetracker.google.com/issues/143232368
它确实有效,但并非没有一些变化。
对于使用 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.
在 dependencies 下更改“androidx.compose.ui:ui-tooling:$compose_version”到“androidx.ui:ui-工具:$compose_version”.
在 Main activity - 更改预览的导入,因为它取决于 ui-tooling。
添加房间依赖项。
应该可以。
但是,一些较新的 Compose 功能可能无法使用,正如他们明确指出的那样,应该使用 Kotlin 1.4.20 及更高版本。
我正在尝试在我的 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 了吗?
我很确定我们仍然处于注解处理器(用于 Room、Retrofit 等)和实验性 Kotlin 编译器无法相处的状态。目前推荐的方法是将 Compose 的东西隔离在一个独立于需要注释处理器的模块的模块中。
目前不支持此功能,因为 kapt 不能很好地与 Jetpack Compose 配合使用。正在此处跟踪此问题 - https://issuetracker.google.com/issues/143232368
它确实有效,但并非没有一些变化。
对于使用 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.
在 dependencies 下更改“androidx.compose.ui:ui-tooling:$compose_version”到“androidx.ui:ui-工具:$compose_version”.
在 Main activity - 更改预览的导入,因为它取决于 ui-tooling。
添加房间依赖项。
应该可以。
但是,一些较新的 Compose 功能可能无法使用,正如他们明确指出的那样,应该使用 Kotlin 1.4.20 及更高版本。