升级Gradle及AGP版本后构建报错:找不到android.arch.lifecycle:common-java8依赖
构建错误根本原因分析
核心报错触发原因
- 模块级
build.gradle中引用了已废弃的旧版Android Support Library命名空间的依赖坐标:android.arch.lifecycle:common-java8。 - 该依赖属于AndroidX正式迁移前的旧组件体系,最高仅发布到2.1.0版本,不存在你指定的2.2.0版本制品,因此Google Maven、Maven Central仓库都无法检索到对应POM文件,直接触发
checkDebugAarMetadata任务的依赖解析失败。 - 本质是依赖命名混淆:AndroidX体系下所有Lifecycle组件统一使用
androidx.lifecycle作为包前缀,common-java8对应的正确AndroidX坐标为androidx.lifecycle:lifecycle-common-java8,和你其他几个Lifecycle依赖的命名规则完全一致,仅这一项写错了旧库的前缀。 - 修复方式:将模块build.gradle中错误的一行依赖调整为
替换前:implementation "android.arch.lifecycle:common-java8:$lifecycleVersion"
替换后:implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
即可解决本次依赖找不到的报错。
现有配置中的其他隐患(非本次报错直接诱因,但会引发后续编译异常)
- 项目级
build.gradle重复定义Kotlin版本变量:外层ext.kotlin_version = "1.5.0"与内层配置块中kotlinVersion = "1.4.10"版本不一致,Gradle classpath引用的是前者,模块业务依赖引用的是后者,后续会出现Kotlin编译器与标准库版本不匹配的问题。 - 项目级
build.gradle中Android Gradle Plugin的classpath仍为4.1.0版本,与你计划升级到AGP 4.2的目标不匹配,升级时需同步修改该classpath的版本号,避免版本兼容问题。 - 所有
android.arch.*、android.support.*前缀的旧依赖在AndroidX项目中都不应再引入,否则会触发新旧组件库的类冲突。
内容的提问来源于stack exchange,提问作者Hassan
相关产品推荐
相关产品推荐

