Android Studio运行Kotlin项目报Manifest merger failed错误如何解决?
问题原因
- 你的项目
targetSdk设置为31(对应Android 12版本),Android 12强制要求:所有带<intent-filter>的四大组件(Activity、Service、BroadcastReceiver)必须显式声明android:exported属性,该规则同时适用于你自己编写的组件和所有依赖库、测试库中包含的组件。 - 你自己的主Manifest中已经给
MainActivity加了android:exported="true",所以主构建流程的Manifest校验是通过的,报错出现在测试构建的Manifest合并阶段:你引入的androidx.test.ext:junit:1.1.2、androidx.test.espresso:espresso-core:3.3.0版本较低,这些版本发布时Android 12还未推出,库内部自带的测试相关Activity没有声明android:exported属性,合并测试Manifest时就触发了校验失败。 - 无Activity项目运行正常的原因:新建无Activity项目时默认使用的测试依赖版本已经适配了Android 12的规则,或是没有引入包含未声明
exported属性组件的测试库,不会触发合并校验报错。
解决方案
两种方案二选一即可:
- 方案一:升级测试依赖到适配Android 12的版本,修改
build.gradle中的依赖配置:
androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
修改后重新同步Gradle即可。
- 方案二:如果不需要适配Android 12,可以把
build.gradle中的targetSdk和compileSdk都修改为30,跳过Android 12的强制校验规则。
内容的提问来源于stack exchange,提问作者Edwin
相关产品推荐
相关产品推荐

