以下选项未被任何处理器识别:'[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]'的主要内容,如果未能解决你的问题,请参考以下文章