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

Posted

技术标签:

【中文标题】以下选项未被任何处理器识别:\'[kapt.kotlin.generated, room.incremental]\'【英文标题】:The following options were not recognized by any processor: '[kapt.kotlin.generated, room.incremental]'以下选项未被任何处理器识别:'[kapt.kotlin.generated, room.incremental]' 【发布时间】:2020-02-01 15:07:09 【问题描述】:
: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 房间: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 包含these compile options:

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

【问题讨论】:

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

添加到房间的多模块项目可能会出现此类问题。对于这样的项目,问题是由于将 RoomDatabase 派生类添加到库模块,但配置 app 模块的 build.gradle 引起的。

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

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

请注意,对于基于 java 的项目,请使用以下代码

annotationProcessor "android.arch.persistence.room:compiler:$room_version"

【讨论】:

【参考方案2】:

虽然我同意模块中缺少 kapt 是 IDE 中的原始问题。

"androidx.room:room-compiler:$roomVersion"

CLI 中可能还有其他的,您可以通过详细警告看到它:

当前 JDK 版本 1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12 有一个 bug (https://bugs.openjdk.java.net/browse/JDK-8007720) 阻止房间 从增量。考虑使用 JDK 11+ 或嵌入式 JDK Android Studio 3.5+ 附带。警告:以下选项是 任何处理器都无法识别:'[kapt.kotlin.generated, room.incremental]'[WARN] 请求增量注释处理, 但支持被禁用,因为以下处理器不是 增量:androidx.room.RoomProcessor (DYNAMIC)。

【讨论】:

你是不是碰巧修复了jdk版本的bug问题?【参考方案3】:

我之前遇到过这个问题:我是怎么做的?

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

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

请参阅related problem in other stack overflow page 了解此配置。

【讨论】:

以上是关于以下选项未被任何处理器识别:'[kapt.kotlin.generated, room.incremental]'的主要内容,如果未能解决你的问题,请参考以下文章

局部变量类型推断未被识别

NetSuite SuiteScript 参考密钥未被识别

php sqlsrv 驱动程序未被识别

intellij - spring 未被识别(未映射的 Spring 配置)

Google Analytics推荐人来源未被识别

转 :Vim文件编码识别与乱码处理