Android开发中Manifest merger failed with multiple errors, see logs报错排查及解决方法求助
解决Manifest Merger Failed的进阶排查步骤
我完全懂这种找不到具体错误原因的挫败感——Manifest merger failed with multiple errors, see logs这个提示总是太模糊,尤其是你已经试过清理重建、查看合并清单之后。结合你的配置文件,给你几个进阶排查方向:
1. 找到真正的详细错误日志
你说看过Merged Manifest,但有时候合并清单里的提示不够精准,得去看Gradle的完整构建日志:
- 打开Android Studio底部的Build面板,切换到Gradle Console标签,重新编译项目,这里会输出Manifest合并过程中每一个冲突的具体细节(比如哪个依赖的Manifest和主清单冲突、冲突的属性是什么)。
- 也可以在终端执行命令:
./gradlew app:processDebugManifest --info,这个命令会输出极其详细的合并流程日志,里面会列出所有参与合并的Manifest文件内容,以及冲突的具体位置。
2. 排查第三方依赖的Manifest冲突
你的依赖里有几个GitHub开源库,很可能是它们的Manifest配置和你的主项目冲突:
- 先检查依赖的SDK版本兼容性:执行
./gradlew app:dependencies查看依赖树,确认所有依赖的compileSdk、minSdk是否和你的主项目(compileSdk32、minSdk21)兼容。比如某个依赖的minSdk高于21,就会导致合并失败。 - 逐个禁用依赖排查:比如先注释掉
implementation 'com.github.MrNouri:DynamicSizes:1.0',重新编译;如果还是报错,再注释掉com.github.iammert:ReadableBottomBar:0.2,直到找到引发冲突的依赖。找到后可以去该库的GitHub页面看有没有更新版本,或者手动处理它的Manifest冲突。
3. 利用tools命名空间解决冲突
你的主Manifest已经添加了tools命名空间,可以尝试用以下属性解决常见冲突:
- 如果是application标签的属性冲突(比如theme、allowBackup),可以添加
tools:replace="android:theme"来强制使用主项目的配置。 - 如果是某些无关紧要的警告被当成错误,可以用
tools:ignore="ManifestProperty"忽略(具体忽略项看日志里的提示)。
4. 检查Manifest的隐性语法问题
有时候看似正常的Manifest可能有隐性错误:
- 用Android Studio的Manifest编辑器打开文件,它会自动高亮语法错误(比如标签未闭合、属性拼写错误)。
- 执行File -> Invalidate Caches / Restart,彻底清理缓存后重新同步项目,有时候缓存损坏也会导致奇怪的合并错误。
5. 验证compileSdk和依赖版本匹配
你的com.google.android.material:material:1.5.0是兼容compileSdk32的,但可以考虑升级到更稳定的版本(比如1.6.0),避免潜在的版本兼容问题。另外,确认所有依赖的targetSdk版本是否和你的主项目一致。
先从查看详细Gradle日志开始,找到具体的错误点,问题就迎刃而解了!
内容的提问来源于stack exchange,提问作者Prashant Sharma




