74
votes

Mise à niveau de la version Android Kotlin vers le message d'erreur de lancement 1.5.0 sur la construction

Exécution avec Kotlin Version '1.4.32' Mon projet Android s'exécute et construit. Essayer de passer à Kotlin '1.5.0' et ma construction lance:

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)

Je ne sais même pas par où commencer à chercher. Quelqu'un d'autre a des problèmes de mise à niveau vers Kotlin 1.5.0?


1 commentaires

Pouvez-vous exécuter votre commande avec --debug? Vous pourriez voir vos erreurs.


14 Réponses :


93
votes

J'ai rencontré le même problème aujourd'hui. Ran la commande gradle build avec - StackTrace et a obtenu un stackTrace utile qui a réduit le problème à la bibliothèque 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

a dû mettre à jour Moshi à 1.12 .0 et cela a fait l'affaire.

Voici un modifice pour moshi 1.12.0 qui mentionne le correctif pour 1.5.0: https://github.com/square/moshi/blob/master/changelog.md#version- 1120

Problème lors de sa première déclaration ici: https: / /github.com/square/moshi/issues/1324

Un autre problème qui mentionne le correctif ici: https://github.com/square/moshi/issues/1337

donc je vous suggère d'exécuter la commande gradle build avec - StackTrace et déterminez quelle bibliothèque provoque l'incompatibilité avec la bibliothèque kotlinx-metadata-jvm nd le mettre à jour.


7 commentaires

L'exécution avec --StackTrace a mis en évidence le package / lib qui provoquait un problème. Merci beaucoup.


Courir avec --stackTrace n'a pas aidé, il a juste montré un autre tas d'invocations internes, je n'ai toujours aucune idée d'où elle vient de


Pour moi non plus. Mais ce n'est pas si difficile à tracer, c'est l'une des bibliothèques qui utilise KAPT.


Merci! C'était moshi pour moi également. Je cherchais le problème pendant des heures.


Ça y est. Moshi est le coupable


Merci ! J'ai fait face au même problème et cela fonctionne pour moi.


Mise à jour de mon Moshi avec 1.13.0 Correction du problème



60
votes

Cela est dû à l'utilisation par Dagger de la version ancienne de kotlinx-metadata-jvm . Voir https://youtrack.jetbrains.com/issue/kt-45885

Mettez à jour votre poignard vers 2.34


7 commentaires

Ouais, dans mon cas, c'était du poignard. L'exécution avec StackTrace a indiqué quelle dépendance provoquait le problème. J'aimerais pouvoir accepter les deux réponses;)


J'utilise Dagger 2.35, je reçois toujours cette erreur


@Wackaloon rétrogradent à 2,34


Je n'ai même pas de poignard dans mon projet - seulement koin - tout ce que j'obtiens la même erreur aussi


Merci pour cela. recherché depuis des heures. Cela a fonctionné pour moi.


2.36 a été libéré et cela fonctionne. Merci.


Cela a résolu mon problème, mais j'aimerais savoir comment vous avez trouvé la solution?



6
votes

Vous devez vérifier lequel de vos dépendances dépend probablement des nouveaux modifications de Kotlin dans la version 1.5.0 et d'essayer de les mettre à jour. Pour moi, la chambre et le poignard causaient des problèmes, je l'ai mis à niveau vers les dernières versions et maintenant je n'ai plus de problèmes:

  • Salle à: 2.3.0
  • Dagger à: 2.35.1

2 commentaires

Et Moshi à 1.12.0 puis IDE se plaint que Kotlin 1.5.0 n'est pas compatible avec Compose (dans mon cas)


Cela m'a aidé. J'ai eu un problème après avoir mis à jour la version Kotlin vers "1.5.10" dans mon cas, j'ai mis à jour la version de la salle car j'utilise la salle dans mon projet



13
votes

Si d'autres réponses ne vous aidaient pas, et surtout si vous êtes sur la version alpha ou bêta d'Android Studio, assurez-vous d'utiliser JDK intégré avec Android Studio. C'était mon cas, j'ai utilisé JDK téléchargé externe

Pour modifier JDK, allez dans fichier -> Paramètres -> build, exécution, déploiement -> Build Tools -> gradle et sélectionnez jdk intégré à partir de Dropdown Gradle Jdk .


3 commentaires

Merci, j'allais me tuer: /


J'utilisais JDK 11 pour un nouveau projet, mais je dois passer à JDK 1.8 pour l'ancien projet, j'espère que cela aide quelqu'un.


Merci beaucoup, j'allais aussi me tuer. Je ne comprends pas pourquoi cette réponse est moins de vote. La plus grande réponse.



4
votes

Ce n'est pas nécessairement du poignard ou du moshi. Il peut s'agir de n'importe quelle bibliothèque qui utilise KAPT (processeur d'annotation Kotlin). Recherchez Kapt dans votre build.gradle et essayez de mettre à jour tout ce qui l'utilise.

Pour moi, c'était une bibliothèque qui utilisait une ancienne version de Kotlinpoet.


0 commentaires

16
votes

Dans mon cas, le poignard a causé le problème. Mise à jour de la dépendance élaborée.

implementation 'com.google.dagger:dagger:2.37'
kapt 'com.google.dagger:dagger-compiler:2.37'


2 commentaires

La version plus récente est 2.40 .


Obtenez la dernière version: github.com/google/dagger/releases



3
votes

J'ai eu le même problème pendant la construction:

kaptwithoutkotlinctask $ kaptexecutionworkAction

J'ai eu un problème de liaison de données dans l'un de mes XML, qui a lancé cette erreur.

C'était mon cas:

abc.xml

<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    <data>
    </data>
    <TextView
    android:text="@{object.name}"
    ... /> 
</layout>

La variable objet n'a pas été déclarée. Après la déclaration, il a résolu le problème de construction.

Le message d'erreur n'a pas pointé vers le bon emplacement dans mon cas.


0 commentaires

0
votes

Mon message d'erreur de dague semblait comme suit:

Erreur: [AndroidProcessor: Miscerror] dagger.android.processor.androidprocessor n'a pas pu traiter cela classe parce que toutes ses dépendances ne pouvaient pas être résolues. vérifier erreurs de compilation ou dépendance circulaire avec du code généré.

J'ai également eu cette erreur kapt: java.lang.reflect.invocationtargetException (pas de message d'erreur)

On m'a donné à quel fichier Dagger n'était pas en mesure de traitez correctement, mais aucune information exacte sur la dépendance manquante. J'ai appliqué toutes les correctifs que j'ai trouvées dans ce SO. J'ai dû examiner attentivement toutes les dépendances que je pouvais voir dans le fichier généré par Dagger pour quelle erreur a été affichée.

Dans mon cas, il était pas en mesure de trouver org.jetbrains.annotations.notnull . J'ai remarqué que cette dépendance avait été mise à niveau, et en raison de quelques correctifs, j'ai déplacé pour utiliser androidx.annotation.nonnull dans mon code. En fait, je ne dépendais pas de org.jetbrains.annotations - il était inclus à partir d'une autre dépendance. L'erreur semblait comme suit:

Trouvé dans les modules-annotations à jet-22 (com.intellij: annotations: 12.0) et les annotations à jet-16.0.1 (org.JetBrains: Annotations: 16.0.1)

Je résolvais les conflits qui se sont retrouvés pour que la dépendance n'était pas visible par le poignard.

Comme d'habitude dans de tels cas, il était très utile de voir un arbre de dépendance et d'où les dépendances se promènent. Certaines dépendances ont été obsolètes et utilisées org.JetBrains: Annotations dans la version ancienne, et j'ai dû les mettre à niveau ou bloquer cette dépendance d'être incluse dans mon code avec exclusion, par exemple:

< pre> xxx

Pour la liste des arbres de dépendance, voir ici: Comment montrer aux dépendances Tree dans Android Studio?


0 commentaires

1
votes

Oui dans mon cas récemment, j'ai résolu le problème en mettant à jour le poignard vers la dernière version et la mise à jour Gradle vers la dernière version ainsi que par l'utilisation du dernier JDK


0 commentaires

17
votes

Ce problème a refait surface pour moi après avoir mis à niveau mon projet vers Kotlin 1.6.0. Dans mon cas, c'est à cause de la Moshi Json Serialization Lib. Ils ont déjà inclus un correctif dans leur prochaine version. En attendant, je suis revenu à 1.5.31.

https://github.com/square/moshi/issues/1433 < / p>


2 commentaires

Ils l'ont corrigé dans 1.13.0


Dans mon cas, c'était un combo entre la salle de mise à niveau vers 2.4.x, Kotlin à 1.6.0 sur la puce Mac M1. La mise à niveau vers Moshi 1.13.0 a fait le travail! Saver! Merci mon pote!



13
votes

J'ai eu ce problème lors de la mise à niveau de la version Kotlin vers 1.6.10

Pour réparer, j'ai dû mettre à jour la version Dagger à 2,36 ou plus et j'ai utilisé 2,40,5

implémentation "com.google.dagger: poignard: 2.40.5”

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

pour trouver les dernières versions de poignard - https://github.com/google/dagger/releases


2 commentaires

Dans notre cas, AGP 7.1 avec Hilt 2,3y.z a échoué. Bumping Hilt à 2.4y.z a résolu notre problème. Merci


2.40.5 a fonctionné pour moi, 2,36 ne l'ont pas fait.



1
votes

J'ai le même problème, et finalement résolu par la mise à jour Moshi à 1.12.0


0 commentaires

0
votes

a obtenu cette erreur en raison du fait que Gradle ne reconnaissait pas certains de mes modules. Re-synchronisation des paramètres. Gradle a corrigé ceci pour moi.


0 commentaires

1
votes

vous devez mettre à jour Hilt à 2.42 pour Kotlin 1.7


0 commentaires