Gradle报错dependency's AAR metadata minCompileSdk版本不匹配
报错原因
两个核心问题导致构建失败:
- 你依赖的
androidx.appcompat:appcompat:1.4.2明确要求最低编译SDK版本为31,当前配置的compileSdkVersion 26达不到要求,Gradle会直接终止构建。 - 依赖列表里同时混了AndroidX系库和废弃已久的Support Library系库,这两类库包名重复、资源冲突,就算改了compileSdk也会报依赖合并错误。另外配置里还有两处笔误:
testInstrumentationRunner写了不存在的默认值、espresso依赖错放到了testImplementation配置下,后续也会触发编译或运行错误。
修复步骤
直接按下面改配置即可:
- 调整android闭包内的SDK版本配置,满足依赖的最低编译要求:
android { compileSdkVersion 31 // buildToolsVersion可以不用手动写,高版本Gradle会自动匹配对应compileSdk的构建工具版本 defaultConfig { applicationId "com.example.tablayout" minSdkVersion 19 targetSdkVersion 31 // 和compileSdk版本保持一致 versionCode 1 versionName "1.0" // 修正原来写的不存在的defaultTestInstrumentationRunner testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
- 替换冲突的依赖,把所有Support Library依赖换成对应的AndroidX版本,同时修正依赖配置项的笔误:
dependencies { implementation 'androidx.appcompat:appcompat:1.4.2' // 替换原来的com.android.support:design,对应AndroidX的Material组件库 implementation 'com.google.android.material:material:1.6.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' // espresso是仪器化测试依赖,要放在androidTestImplementation下,原来的配置位置错误 androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' }
可选方案:如果因为特殊原因必须用compileSdk 26,只能把appcompat降到适配26的旧版本,比如androidx.appcompat:appcompat:1.0.2,但不推荐这么做,旧版本库有大量未修复的bug,也不符合最新的应用上架要求。
改完之后同步Gradle即可,要是还有缓存报错就清理IDE缓存后重启再构建。
内容的提问来源于stack exchange,提问作者Ahmed Abubaker
相关产品推荐
相关产品推荐

