编译项目时出现 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)
我已经尝试了大多数其他解决方案,例如:
- 删除构建文件夹,从 Activity 中杀死 java 监控并重新启动 android studio - 不起作用(我什至重新启动了系统)
- 匹配 gms-play-services 版本和 firebaseAuth 版本 - 11.6.0
- 启用 multidex 支持 - 添加 multiDexEnabled true 到 android defaultConfig
- 将编译选项指定为 java 8 - 如上所示添加。
总而言之,这些是针对 SO 上此异常的流行答案,其中 none 对我有用。我本可以使用 stacktrace 发布完整的日志,但 SO 认为它的代码多于细节,因此不允许我做同样的事情。如果还需要其他任何东西,请告诉我,我会另作安排。
org.objectweb.asm.ClassReader
的构造函数唯一抛出 IllegalArgumentException
的地方是 class 文件版本检查。
所以,
- 使用的 ASM 版本太旧(不太可能),
- 版本实际上是 Java9(与您的设置相矛盾,但也许此操作还解析了其他 classes 而不是您刚刚编译的那些),或者
- class 文件已损坏。
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)
我已经尝试了大多数其他解决方案,例如:
- 删除构建文件夹,从 Activity 中杀死 java 监控并重新启动 android studio - 不起作用(我什至重新启动了系统)
- 匹配 gms-play-services 版本和 firebaseAuth 版本 - 11.6.0
- 启用 multidex 支持 - 添加 multiDexEnabled true 到 android defaultConfig
- 将编译选项指定为 java 8 - 如上所示添加。
总而言之,这些是针对 SO 上此异常的流行答案,其中 none 对我有用。我本可以使用 stacktrace 发布完整的日志,但 SO 认为它的代码多于细节,因此不允许我做同样的事情。如果还需要其他任何东西,请告诉我,我会另作安排。
org.objectweb.asm.ClassReader
的构造函数唯一抛出 IllegalArgumentException
的地方是 class 文件版本检查。
所以,
- 使用的 ASM 版本太旧(不太可能),
- 版本实际上是 Java9(与您的设置相矛盾,但也许此操作还解析了其他 classes 而不是您刚刚编译的那些),或者
- class 文件已损坏。