引入androidx.lifecycle:lifecycle-livedata-ktx:2.4.0报minCompileSdk不匹配错误怎么办
依赖项的AAR元数据(路径为META-INF/com/android/build/gradle/aar-metadata.properties)中指定的minCompileSdk (31)大于当前模块设置的compileSdkVersion (android-30),对应依赖为
androidx.lifecycle:lifecycle-livedata-ktx:2.4.0
你可以选择以下任意一种方案解决问题,优先级从高到低排序:
方案一:升级当前模块的compileSdk版本
该方案为最优解,无兼容性风险,推荐优先使用
找到模块级build.gradle(Groovy语法)或build.gradle.kts(Kotlin语法)配置文件,修改compileSdk配置为31或更高版本即可,示例配置如下:android { // 其余原有配置保持不变 compileSdk 31 // 旧版gradle可写为compileSdkVersion 31 defaultConfig { // minSdkVersion、targetSdkVersion无需强制修改,保持原有配置即可 ... } }升级compileSdk仅会修改编译时使用的SDK版本,不会影响App在低版本系统上的运行兼容性。
方案二:降级lifecycle-livedata-ktx依赖版本
该方案适用于暂时无法升级compileSdk的场景androidx.lifecycle:lifecycle-livedata-ktx从2.4.0版本开始要求最低编译SDK为31,你可以将其降级到适配compileSdk 30的2.3.1版本,修改依赖声明即可:// 修改前 // implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.0" // 修改后 implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1"降级前请确认你的项目没有用到2.4.0版本新增的专属API,避免出现功能异常。
方案三:强制覆盖依赖版本校验(应急方案)
该方案仅作为临时应急使用,可能存在未知的编译、运行时异常,不推荐长期使用
如果你不想修改全局compileSdk,也不想单独修改该依赖的版本,可以在模块级build.gradle的配置中添加强制版本规则:android { ... configurations.all { resolutionStrategy { force "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" } } }该配置会强制所有依赖树中该库的版本统一为2.3.1,跳过版本校验。
内容的提问来源于stack exchange,提问作者Kashif Ali

