下列选项未被任何处理器识别: '[kapt.kotlin.generated, room.incremental]'。

15
:app:kaptDebugKotlin
w: warning: The following options were not recognized by any processor: '[kapt.kotlin.generated, room.incremental]'

为什么会出现这种情况?我正在一个多模块项目中使用Room。

  • Kotlin版本:1.3.50
  • AGP:3.5.0
  • Room:2.2.0-rc01

共享库模块: api "androidx.room:room-runtime:$room_version" api "androidx.room:room-ktx:$room_version" api "androidx.room:room-rxjava2:$room_version"

应用程序模块:

kapt "androidx.room:room-compiler:$room_version"

Gradle.properties

kapt.incremental.apt=true

build.gradle 中的 defaultConfig 包括这些编译选项

javaCompileOptions {
        annotationProcessorOptions {
            arguments = ["room.incremental":"true"]
        }
    }

1
注解处理器添加在哪里? - Kaushik Burkule
谢谢Kaushik,我觉得你指引了我正确的方向。我编辑了答案以反映那些依赖项是在一个模块中指定的,并且应用程序模块使用了注解处理器。可能我正在为不使用处理器的模块指定标志。 - Daniel Wilson
我认为解决方案是配置包含RoomDatabase派生类的模块的build.gradle。 - Kaushik Burkule
是的,这就是关键所在,因此即使模块具有依赖项和注释处理器但不使用它们,似乎也会产生此警告。如果您将此作为答案留下,我会接受的,也许它会帮助某些人 :) - Daniel Wilson
是的,当然!我会将它们作为答案添加进去。 - Kaushik Burkule
3个回答

7

这种问题可能会在已添加到Room中的多模块项目中发生。对于这样的项目,问题是因为将RoomDatabase派生类添加到库模块中,但配置了app模块的build.gradle导致的。

解决方法是配置包含RoomDatabase派生类的模块的build.gradle。

  • 在build.gradle文件的dependencies{}部分中添加room编译器的依赖项。
kapt "android.arch.persistence.room:compiler:$room_version"

请注意,对于基于Java的项目,请使用以下代码。
annotationProcessor "android.arch.persistence.room:compiler:$room_version"

3

我认为在IDE中缺少kapt是最初的问题。

  • "androidx.room:room-compiler:${roomVersion}"

在CLI中可能会有其他问题,你可以通过详细警告看到:

当前JDK版本1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12存在一个错误 (https://bugs.openjdk.java.net/browse/JDK-8007720) 防止Room增量编译。 考虑使用JDK 11+或随Android Studio 3.5+一起附带的嵌入式JDK。 警告:以下选项未被任何处理器识别:'[kapt.kotlin.generated, room.incremental]' [WARN]请求增量注释处理,但由于以下处理器不是增量处理器而禁用支持:androidx.room.RoomProcessor (DYNAMIC)。


你有没有解决JDK版本错误的问题? - theThapa

0

我之前遇到过这个问题:我该怎么办?

首先,在 build.gradle 文件中的名为 defaultConfig 的对象中,我必须删除以下内容:

javaCompileOptions {
    annotationProcessorOptions {
        arguments = ["room.incremental":"true"]
    }
}

我必须替换:

implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
def room_version = "2.2.5"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"

使用:

// Room components
def room_version = "2.2.5"
implementation "android.arch.persistence.room:runtime:$room_version"
kapt "android.arch.persistence.room:compiler:$room_version"
kaptAndroidTest "android.arch.persistence.room:testing:$room_version"

// Lifecycle components
def archLifecycleVersion = "2.2.5"
implementation "android.arch.lifecycle:extensions:$archLifecycleVersion"
kapt "android.arch.lifecycle:compiler:$archLifecycleVersion"

其次,在 gradle.properties 文件中我添加了:

kapt.incremental.apt=true
kapt.use.worker.api=true
android.lifecycleProcessor.incremental=true

关于这个配置,请参考其他Stack Overflow页面中的相关问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接