将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'


以上是将Androidkotlin版本升级到1.5.0在构建时抛出错误消息的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>