将Androidkotlin版本升级到1.5.0在构建时抛出错误消息
使用 kotlin 版本“1.4.32”运行我的 Android 项目运行和构建。尝试升级到 kotlin '1.5.0' 并且我的构建抛出:
Execution failed for task ':app:kaptDefaultsDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
> java.lang.reflect.InvocationTargetException (no error message)
我什至不知道从哪里开始寻找。还有其他人在升级到 kotlin 1.5.0 时遇到问题吗?
回答
我今天遇到了同样的问题。运行 gradle build 命令--stacktrace并获得有用的堆栈跟踪,将问题缩小到 Moshi 库。
Caused by: java.lang.IllegalStateException: Could not parse metadata! This should only happen if you're using Kotlin <1.1.
at com.squareup.moshi.kotlinpoet.metadata.KotlinPoetMetadata.readKotlinClassMetadata(KotlinPoetMetadata.kt:70)
at com.squareup.moshi.kotlinpoet.metadata.KotlinPoetMetadata.toImmutableKmClass(KotlinPoetMetadata.kt:50)
at com.squareup.moshi.kotlin.codegen.MoshiCachedClassInspector.toImmutableKmClass(MoshiCachedClassInspector.kt:22)
at com.squareup.moshi.kotlin.codegen.MetadataKt.targetType(metadata.kt:109)
at com.squareup.moshi.kotlin.codegen.JsonClassCodegenProcessor.adapterGenerator(JsonClassCodegenProcessor.kt:136)
at com.squareup.moshi.kotlin.codegen.JsonClassCodegenProcessor.process(JsonClassCodegenProcessor.kt:110)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt:90)
at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:175)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:980)
... 41 more
必须将 Moshi 更新为1.12.0,这才奏效。
这是 Moshi 的更新日志,1.12.0其中提到了 1.5.0 的修复:https : //github.com/square/moshi/blob/master/CHANGELOG.md#version-1120
首次在此处报告时的问题:https : //github.com/square/moshi/issues/1324
另一个在这里提到修复的问题:https : //github.com/square/moshi/issues/1337
所以我建议你运行 gradle build 命令--stacktrace并找出哪个库导致与kotlinx-metadata-jvm库不兼容并更新它。
回答
这是由于 Dagger 使用旧版本的kotlinx-metadata-jvm. 请参阅https://youtrack.jetbrains.com/issue/KT-45885
将你的匕首更新为 2.34
- I don't even have dagger in my project - only koin - any I get the same error too
- I'm using Dagger 2.35, still getting this error
- Yup, in my case it was Dagger. Running w/ stacktrace did point to which dependency was causing the issue. Wish I could accept both answers 😉
- 2.36 was released and it is working. Thanks.
回答
在我的情况下,匕首导致了这个问题。更新依赖项解决了。
implementation 'com.google.dagger:dagger:2.37'
kapt 'com.google.dagger:dagger-compiler:2.37'