web-dev-qa-db-fra.com

Android Studio Desugar: Echec de la transformation de classes avec Desugar for Debug

Mon projet Android Studio a récemment arrêté de construire correctement. Je ne sais pas ce qui a causé ce problème. 

Voici ce que j'ai essayé

  • J'ai essayé de construire mon projet avec différentes versions d'Android Studio, c'est-à-dire des versions stables et différentes du canal Canary, sans changement.
  • Je versions du SDK modifiées environ. Mon projet a été construit correctement avec le SDK 26, mais maintenant il ne l’est plus, pas plus avec le SDK 27.
  • I outils de construction échangés et versions Gradle autour, mon projet a été construit correctement avec le plugin Gradle 3.1.0-alpha2 et les outils de construction version 26.0.2. J'ai essayé beaucoup
  • J'ai utilisé les "Projet propre"} _, "Invalidate Caches"... dans les fonctions d'Android Studio.
  • J'ai supprimé mes dossiers de construction
  • J'ai allumé et éteint Proguard
  • J'ai essayé de résoudre les problèmes de bibliothèque possibles, mais tout cela n'a pas aidé

Je pense que j'ai en fait tout changé pour revenir aux paramètres que j'avais utilisés avec succès auparavant} et à mes autres projets avec des paramètres similaires, mais la construction est satisfaisante.

Code d'erreur complet:

Error:Java.lang.RuntimeException: com.Android.build.api.transform.TransformException: Java.lang.RuntimeException: Java.lang.RuntimeException: com.Android.ide.common.process.ProcessException: Error while executing Java process with main class com.google.devtools.build.Android.desugar.Desugar with arguments {@...\app\build\intermediates\tmp\desugar_args165654356027684238}

Error:com.Android.build.api.transform.TransformException: Java.lang.RuntimeException: Java.lang.RuntimeException: com.Android.ide.common.process.ProcessException: Error while executing Java process with main class com.google.devtools.build.Android.desugar.Desugar with arguments {@...\app\build\intermediates\tmp\desugar_args165654356027684238}
Error:Java.lang.RuntimeException: Java.lang.RuntimeException: com.Android.ide.common.process.ProcessException: Error while executing Java process with main class com.google.devtools.build.Android.desugar.Desugar with arguments {@...\app\build\intermediates\tmp\desugar_args165654356027684238}
Error:Java.lang.RuntimeException: com.Android.ide.common.process.ProcessException: Error while executing Java process with main class com.google.devtools.build.Android.desugar.Desugar with arguments {@...\app\build\intermediates\tmp\desugar_args165654356027684238}
Error:com.Android.ide.common.process.ProcessException: Error while executing Java process with main class com.google.devtools.build.Android.desugar.Desugar with arguments {@...\app\build\intermediates\tmp\desugar_args165654356027684238}

Error:org.gradle.process.internal.ExecException: Process 'command '...\jre\bin\Java.exe'' finished with non-zero exit value 1

Description du problème

Je n'ai aucune idée de ce qui pourrait (avoir)} causer (d) ce problème et je ne sais pas quoi faire ensuite, c'est la raison pour laquelle je vous demande de l'aide. J'espère que quelqu'un a une aide autre que celle que j'ai pu trouver.

_ {J'ai marqué Firebase} _ parce que je pense que la bibliothèque pourrait être le point crucial de mon problème, maintenant le problème est qu'elle n'expliquera jamais tout arrêt soudain. J'utilise FirebaseUI dans mon application et j'ai essayé les anciennes dépendances de travail, mais aussi la mise à niveau de Firebase, puis l'utilisation de ce guide pour correspondre à la bibliothèque d'interface utilisateur obsolète. J'ai aussi enlevé FirebaseUI, mais cela n'a pas réussi à construire.

Je l'ai corrigé (et un autre problème lié à Kotlin , en effaçant complètement tout ce que Android et Gradle racontaient de mon ordinateur, puis en installant tout à partir de zéro. Tout le processus était une torture, donc je suis toujours désireux d'une solution rapide. Je ne veux plus y passer des heures :)

Pour moi, il s’agissait bien de la version de la bibliothèque Leanplum que j’utilisais - bien que j’ai été incapable de traduire l’erreur par gradle, je me suis suffisamment ennuyé pour trouver les sources Desugar dans le bazel , build puis copiez les arguments de la ligne de commande de ma construction échouée, ce qui m'a conduit à la jarre Leanplum, qui semblait avoir une collision de noms entre deux éléments obfusqués différents:

Exception in thread "main" Java.lang.IllegalStateException: Already recorded as class: com/leanplum/a/x
    at com.google.common.base.Preconditions.checkState(Preconditions.Java:582)
    at com.google.devtools.build.Android.desugar.ClassVsInterface.addKnownInterfaces(ClassVsInterface.Java:46)
    at com.google.devtools.build.Android.desugar.InterfaceDesugaring.visit(InterfaceDesugaring.Java:96)
    at org.objectweb.asm.ClassReader.accept(ClassReader.Java:621)
    at org.objectweb.asm.ClassReader.accept(ClassReader.Java:500)
    at com.google.devtools.build.Android.desugar.Desugar.desugarClassesInInput(Desugar.Java:477)
    at com.google.devtools.build.Android.desugar.Desugar.desugarOneInput(Desugar.Java:361)
    at com.google.devtools.build.Android.desugar.Desugar.desugar(Desugar.Java:314)
    at com.google.devtools.build.Android.desugar.Desugar.main(Desugar.Java:711)

Je pense que cela a fonctionné pour moi parce que la nouvelle version de Desugar permet de mieux signaler les erreurs ... Donc, si comme moi, vous êtes incapable de comprendre ce qui se passe, il est possible que 

  • installation de bazel (j'ai utilisé homebrew sur mac)
  • puis construisant votre propre version de Desugar (la commande que j’ai utilisée à la racine du dépôt bazel était bazel build //src/tools/Android/Java/com/google/devtools/build/Android/desugar:Desugar), 
  • puis copier et coller les arguments de la CLI à partir de la construction de votre dégradé défaillante mènera à un aperçu. (la commande ressemblait à ceci: path/to/your/built/Desugar --verbose --input /Users/you/yourApp/app/build/intermediates/transforms/stackFramesFixer/envDev/debug/109.jar .... --desugar_try_with_resources_if_needed --desugar_try_with_resources_omit_runtime_classes)

Je m'attendais à devoir ajouter ma propre erreur de journalisation à Desugar pour résoudre ce problème, mais heureusement, cela était inutile.

9
Eric O'Connell

Dans mon cas, c'était la version Java qui était à l'origine du problème. L'erreur a commencé lorsque j'ai ajouté un fichier SDK dans les bibliothèques et que j'ai appris que le SDK n'était pas compatible avec notre version 1.8 de Java. Résolu avec le fichier SDK mis à jour avec Java 8.

1
puprog

Avez-vous essayé d'utiliser et d'effacer le cache de construction introduit dans AS 2.3?

par exemple, mes diplômés.propriétés avaient 

Android.enableBuildCache=true
Android.buildCacheDir=/tmp/Android-build-cache

et j'ai dû effacer /tmp/Android-build-cache pour corriger la même erreur Desugar que j'ai eue.

0

Dans notre cas, cela ne suffisait pas sur la machine de construction.

0
wilddev

J'ai récemment eu le même problème avec AS 3.1.4 et Gradle 4.4. Je ne comprenais pas parfaitement la cause de ce problème, mais pour moi, il semble que lié à la compilation d'un module personnalisé}.

Je l'ai résolu en important mon module personnalisé en tant que dépendance de jar au lieu de le "compiler".

En bref:

  • Dans votre app.gradle fichier et commentez la ligne comme suit: projet d'implémentation (chemin: ': XXX')
  • Ouvrez app -> Ouvrir les paramètres du module -> Dépendance et ajoutez votre fichier Jar en tant que dépendance du module.
0
Matteo Avanzini