Android Studio Desugar:使用Desugar进行调试的转换失败

时间:2017-11-14 18:00:33

标签: android android-studio firebase firebaseui

我的Android Studio项目最近停止正常构建。我不知道是什么导致了这个问题。

这是我试过的

  • 我尝试使用不同的Android Studio版本构建我的项目,即稳定且不同的Canary频道版本,无需更改
  • 更改了SDK版本。我的项目使用SDK 26正确构建,但现在它没有,也没有使用SDK 27
  • 交换了构建工具和Gradle版本,我的项目使用Gradle插件3.1.0-alpha2和构建工具版本26.0.2正确构建。我试了很多
  • 我在Android Studio中使用"清洁项目" "无效缓存" ...功能 LI>
  • 我删除了我的构建文件夹
  • 我打开和关闭了Proguard
  • 我尝试修复可能的库问题,但所有这些都没有帮助

我认为我实际上已将所有内容更改回之前成功使用的设置,而其他具有类似设置的项目只是构建正常。

完整错误代码:

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

问题描述

我不知道(有)会导致(d)这个问题,我对接下来要尝试什么感到无能为力,这就是我向你求助的原因。我希望除了我能找到的任何人之外还有其他帮助。

我标记了Firebase ,因为我认为库可能是我问题的关键点,现在的问题是它永远无法解释突然停止。我在我的应用程序中使用FirebaseUI并尝试了旧的工作依赖项,但也升级了Firebase,然后使用this guide来匹配过时的UI库。我还删除了 FirebaseUI,但这没有成功构建。

6 个答案:

答案 0 :(得分:9)

对我而言,它恰好是我正在使用的Leanplum库的版本 - 虽然我无法通过gradle表示错误,但我很生气地找到Desugar sources中的bazel ,构建它,然后从我失败的gradle构建中复制命令行参数,这导致我看到Leanplum jar,它似乎在两个不同的混淆元素之间发生了名称冲突:

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)

我认为这对我有用,因为较新版本的Desugar有更好的错误报告......所以如果像我一样你无法弄清楚发生了什么,那么可能

  • installing bazel(我在mac上使用自制软件)
  • 然后构建自己的Desugar版本(我从bazel repo的根目录使用的命令是bazel build //src/tools/android/java/com/google/devtools/build/android/desugar:Desugar),
  • 然后复制&从失败的gradle构建中粘贴CLI参数将导致洞察力。 (该命令最终看起来像这样: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

我原本希望将自己的错误记录添加到Desugar来捕获它,但很高兴这是不必要的。

答案 1 :(得分:1)

就我而言,是Java版本引起了问题。当我在库中添加一个SDK jar时,错误开始出现,并且我知道该SDK与我们的Java版本1.8不兼容。使用Java 8更新的SDK jar解决。

答案 2 :(得分:0)

您是否尝试使用并清除AS 2.3中引入的构建缓存?

例如,我的gradle.properties有

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

我不得不清除/tmp/android-build-cache以修复我得到的Desugar错误。

答案 3 :(得分:0)

我修复了它(和another Kotlin related issue,只需从我的计算机上彻底擦除所有与Android相关的东西,然后从头开始安装所有东西。整个过程是一种折磨,所以我仍然渴望快速解决方案。我不想再花几个小时了:)

答案 4 :(得分:0)

在我们的情况下,构建机器上没有足够的ram。

答案 5 :(得分:0)

我最近在AS 3.1.4和Gradle 4.4中遇到了相同的问题。我不太清楚导致此问题的原因,但在我看来,它与自定义模块的编译有关

我解决了将我的自定义模块作为jar依赖项导入的问题,而不是“编译”它。

简而言之:

  • 在您的 app.gradle 文件中,对以下行进行注释: 实施项目(路径:“:XXX”)
  • 打开 app -> 打开模块设置-> 依赖项 ,然后将Jar添加为模块依赖项< / li>