升级GMS/Firebase至15.x版本导致Gradle构建崩溃求助
解决升级GMS/Firebase 15.+时
app:transformClassesWithDesugarForDebug的异常问题 我之前升级Firebase到15.x版本时也碰到过完全一样的崩溃!这个异常本质是Desugar工具在处理Java 8默认方法时的兼容性bug,通常和Android Gradle Plugin(AGP)版本、Desugar依赖或者第三方库冲突有关。下面是我亲测有效的解决方案:
1. 升级Android Gradle Plugin到兼容版本
Firebase 15.+系列需要配合至少AGP 3.1.0以上版本使用,建议直接升级到当时的稳定版(比如3.2.1),修改项目根目录的build.gradle:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.2.1' // 同步Firebase插件版本,比如搭配com.google.gms:google-services:4.2.0 } }
2. 配置指定版本的Desugar核心库
旧版本的Desugar工具存在处理默认方法的bug,手动指定更新的desugar_jdk_libs依赖可以解决这个问题。在app模块的build.gradle里添加:
android { compileOptions { coreLibraryDesugaringEnabled true sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' } }
3. 排查并修复依赖冲突
异常堆栈里提到了org.objectweb.asm.ClassReader,很可能是项目中存在多个版本的ASM库导致的冲突。执行以下命令查看依赖树:
./gradlew app:dependencies
找到所有org.ow2.asm相关的依赖,然后在app模块的build.gradle里强制统一版本:
configurations.all { resolutionStrategy { force 'org.ow2.asm:asm:7.1' // 选择和当前AGP兼容的版本 } }
4. 清理构建缓存
有时候旧缓存会引发奇怪的兼容性问题,执行以下命令清理后重新构建:
./gradlew clean rm -rf .gradle/ build/
补充说明
这个问题的根源是Firebase 15.x引入了更多Java 8特性,而旧版Desugar在扫描类文件的默认方法时,会触发Guava的参数校验失败。通过升级AGP和Desugar库,就能修复这个底层的处理逻辑bug。
内容的提问来源于stack exchange,提问作者Sci
相关产品推荐
相关产品推荐

