编译项目时出现 app:transformClassesWithDesugarForDebug 异常

Getting app:transformClassesWithDesugarForDebug Exception while compiling project

Gradle 构建因以下应用程序的 build.gradle 配置而失败:

android{
compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "com.sample.demo"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11 -frtti -fexceptions"
//                abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'
                abiFilters 'armeabi-v7a'
            }
        }

        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['src/main/jniLibs']
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

下面是相同的错误日志:

:app:transformClassesWithDesugarForDebug
Exception in thread "main" java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at com.google.devtools.build.android.desugar.CoreLibraryRewriter.reader(CoreLibraryRewriter.java:44)
    at com.google.devtools.build.android.desugar.Desugar.desugarClassesInInput(Desugar.java:388)
    at com.google.devtools.build.android.desugar.Desugar.desugarOneInput(Desugar.java:326)
    at com.google.devtools.build.android.desugar.Desugar.desugar(Desugar.java:280)
    at com.google.devtools.build.android.desugar.Desugar.main(Desugar.java:584)

我已经尝试了大多数其他解决方案,例如:

  1. 删除构建文件夹,从 Activity 中杀死 java 监控并重新启动 android studio - 不起作用(我什至重新启动了系统)
  2. 匹配 gms-play-services 版本和 firebaseAuth 版本 - 11.6.0
  3. 启用 multidex 支持 - 添加 multiDexEnabled true 到 android defaultConfig
  4. 将编译选项指定为 java 8 - 如上所示添加。

总而言之,这些是针对 SO 上此异常的流行答案,其中 none 对我有用。我本可以使用 stacktrace 发布完整的日志,但 SO 认为它的代码多于细节,因此不允许我做同样的事情。如果还需要其他任何东西,请告诉我,我会另作安排。

org.objectweb.asm.ClassReader 的构造函数唯一抛出 IllegalArgumentException 的地方是 class 文件版本检查。

所以,

  1. 使用的 ASM 版本太旧(不太可能),
  2. 版本实际上是 Java9(与您的设置相矛盾,但也许此操作还解析了其他 classes 而不是您刚刚编译的那些),或者
  3. class 文件已损坏。