Android App运行报错:依赖AAR元数据minCompileSdk大于项目compileSdkVersion
问题成因及解决方案
问题原因
出现该问题的核心原因是androidx.work:work-runtime:2.7.0-beta01版本要求最低编译SDK版本为31,而你项目当前配置的compileSdkVersion为30,版本不匹配触发编译报错。
你没有修改代码却突然出现问题,大概率属于以下两种情况:
- 你的依赖声明中使用了动态版本号(比如
2.+、latest.release),Gradle同步时自动拉取了最新发布的2.7.0-beta01版本 - 项目引入的其他第三方依赖传递依赖了该版本的work-runtime,Gradle默认优先选择更高版本的依赖
解决方案
方案1:升级编译SDK版本(推荐)
这是官方推荐的最优解,升级compileSdk仅会影响编译阶段的行为,不会改变App在低版本系统上的运行逻辑,你可以保留targetSdkVersion为30不变。
修改app级build.gradle文件中的配置即可:
android { compileSdkVersion 31 // 其余配置保持不变 }
方案2:强制锁定work-runtime低版本
如果暂时不想升级compileSdk,可以通过Gradle的依赖ResolutionStrategy强制指定work-runtime使用2.6.0及以下的稳定版本,该版本的minCompileSdk要求为30,适配你当前的项目配置。
在app级build.gradle文件的android代码块外层添加如下配置:
configurations.all { resolutionStrategy { force "androidx.work:work-runtime:2.6.0" // 如果你使用了kotlin扩展、rxjava适配等work相关依赖,也需要一同锁定版本 // force "androidx.work:work-runtime-ktx:2.6.0" } }
添加配置后重新执行Gradle同步即可生效。同时建议检查你项目中直接声明的work-runtime依赖,将动态版本号改为固定的2.6.0,避免后续再次出现自动升级的问题。
方案3:排查传递依赖并排除
如果你没有直接依赖work-runtime,说明是其他第三方库传递引入了高版本的work-runtime。你可以执行./gradlew app:dependencies命令查看依赖树,定位到引入高版本work-runtime的第三方库,对其排除work-runtime的传递依赖后,自行引入适配的低版本:
// 替换为实际引入的第三方库坐标 implementation("com.xxx.xxx:lib-name:xxx") { exclude group: 'androidx.work', module: 'work-runtime' } // 自行引入适配的低版本work-runtime implementation "androidx.work:work-runtime:2.6.0"
内容的提问来源于stack exchange,提问作者Kishan Solanki
相关产品推荐
相关产品推荐

