将 Android kotlin 版本升级到 1.5.0 在构建时抛出错误消息

los*_*ion 42 android kotlin

使用 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)
Run Code Online (Sandbox Code Playgroud)

我什至不知道从哪里开始寻找。还有其他人在升级到 kotlin 1.5.0 时遇到问题吗?

red*_*t13 58

我今天遇到了同样的问题。运行 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
Run Code Online (Sandbox Code Playgroud)

必须将 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库不兼容并更新它。

  • 使用 --stacktrace 运行确实突出显示了导致问题的包/lib。非常感谢。 (2认同)
  • 使用 --stacktrace 运行没有帮助,只是显示了另一堆内部调用,仍然不知道它来自哪里 (2认同)

小智 44

这是由于 Dagger 使用旧版本的kotlinx-metadata-jvm. 请参阅https://youtrack.jetbrains.com/issue/KT-45885

将你的匕首更新为 2.34

  • 我的项目中甚至没有匕首 - 只有 koin - 任何我也遇到同样的错误 (13认同)
  • 我正在使用 Dagger 2.35,仍然出现此错误 (3认同)
  • 是的,就我而言,是 Dagger。运行 w/ stacktrace 确实指出了哪个依赖项导致了问题。希望我能接受这两个答案;) (2认同)
  • 2.36 已发布并且正在运行。谢谢。 (2认同)

Stu*_*lch 18

将我的项目升级到 Kotlin 1.6.0 后,这个问题再次出现。就我而言,这是因为 Moshi JSON 序列化库。他们已经在下一个版本中包含了修复程序。与此同时,我已恢复到 1.5.31。

https://github.com/square/moshi/issues/1433

  • 他们在 1.13.0 中修复了它 (3认同)

小智 14

我在将 Kotlin 版本升级到 1.6.10 时遇到了这个问题

\n

为了解决这个问题,我必须将 dagger 版本更新到 2.36 或更高版本,我使用的是 2.40.5

\n

implementation "com.google.dagger:dagger:2.40.5\xe2\x80\x9d

\n

kapt "com.google.dagger:dagger-compiler:2.40.5"

\n

查找最新的 dagger 版本 - https://github.com/google/dagger/releases

\n


the*_*vay 13

如果其他答案对您没有帮助,特别是如果您使用的是 Android Studio 的 alpha 或 beta 版本,请确保您使用的是 Android Studio 中嵌入的 JDK。这是我的情况,我确实使用了外部下载的 JDK。

要更改 JDK,请转至下拉列表File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle并进行选择。Embedded JDKGradle JDK

  • 谢谢,我本来想自杀:/ (3认同)

Bal*_*ear 6

您应该检查哪些依赖项可能依赖于版本 1.5.0 中新的 kotlin 更改,并尝试更新它们。对我来说,房间和匕首引起了问题,我已将其升级到最新版本,现在没有问题:

  • 房间到:2.3.0
  • 匕首到:2.35.1


小智 6

在我的情况下,匕首导致了这个问题。更新依赖项解决了。

implementation 'com.google.dagger:dagger:2.37'
kapt 'com.google.dagger:dagger-compiler:2.37'
Run Code Online (Sandbox Code Playgroud)