Android Studio如何解决依赖AAR元数据指定minCompileSdk(31)报错
解决方案
你可以根据自身需求选择以下任意一种路径处理:
路径1:保留compileSdk 30,无需升级SDK版本
你此前强制指定WorkManager版本不生效,是因为你添加的是Kotlin版本的work-runtime-ktx依赖,而你的项目是Java开发,需要替换为Java版本的依赖,配置如下:
- 在模块级
build.gradle的dependencies代码块中添加如下配置:
def work_version = "2.6.0" // 强制覆盖传递依赖的高版本WorkManager implementation("androidx.work:work-runtime:$work_version") { force = true }
- 如需全局拦截高版本WorkManager依赖,可在模块级
build.gradle的android代码块外添加如下配置:
configurations.all { resolutionStrategy { force "androidx.work:work-runtime:2.6.0" // 可选:排除Kotlin版本的WorkManager避免冲突 exclude group: 'androidx.work', module: 'work-runtime-ktx' } }
配置完成后同步Gradle,重建项目即可解决编译报错。
路径2:使用compileSdk 31,解决android:exported报错
你添加完自有组件的android:exported属性后仍报错,是因为第三方依赖库的Manifest文件中包含带intent-filter的组件,未配置该属性。可按如下步骤排查修复:
- 打开你项目的
AndroidManifest.xml文件,点击编辑器底部的「Merged Manifest」标签,查看所有合并后的组件列表。 - 找到所有带有intent-filter、但未显式配置
android:exported属性的组件,记录组件的完整name路径。 - 在你自己项目的
AndroidManifest.xml中覆写对应组件的属性,示例如下:
首先在Manifest根标签添加tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的包名">
然后添加对应组件的覆写配置:
<activity android:name="第三方组件的完整类名" android:exported="false" tools:node="merge" />
如果是服务、广播接收器组件,对应修改标签为
配置完成后同步Gradle,重建项目即可解决报错。
内容的提问来源于stack exchange,提问作者Muhammad Usama
相关产品推荐
相关产品推荐

