如何解决Android Studio中的Manifest Merger合并错误?
解决Manifest合并失败("Manifest merger failed with multiple errors, see logs")的方案
首先别盲目修改Manifest,先找到具体错误原因——提示里的"see logs"是核心,很多人直接跳过这步瞎改反而浪费时间:
- 在Android Studio底部打开Build窗口(找不到就点
View > Tool Windows > Build),切换到Merge Errors标签页,里面会明确列出冲突点,比如权限重复、组件声明冲突、SDK版本不兼容等 - 如果Build窗口没显示详细信息,打开终端执行
./gradlew assembleDebug --info,搜索"manifest merger"关键词,就能找到完整的错误日志
针对常见冲突的解决方法:
- 权限重复冲突:多个依赖库或自己的Manifest声明了同一权限,在自己的
AndroidManifest.xml里添加tools:node="remove"移除重复项,记得先在根标签里声明xmlns:tools="http://schemas.android.com/tools",示例:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/> - 组件(Activity/Receiver/Service)冲突:比如依赖库的组件和你自己声明的重名,同样用
tools:node="remove"移除依赖库的对应组件,或者用tools:node="replace"替换成自己的配置 - SDK版本不兼容:检查
app/build.gradle里的minSdkVersion、targetSdkVersion,确保和所有依赖库要求的版本匹配(比如依赖库要求minSdk 21,你的项目设成19就会触发冲突) - 主题或资源冲突:如果是主题冲突,检查Manifest里的
android:theme属性,或者在build.gradle里用resValue统一主题配置;资源冲突的话,给自身资源加独特前缀避免重名 - 依赖版本不一致:用
./gradlew app:dependencies生成依赖树,找出重复或版本不统一的库(比如同时引入了AndroidX和旧版Support库),统一版本号,或者用exclude排除冲突的依赖模块,示例:implementation('com.example.library:xxx:1.0.0') { exclude group: 'androidx.appcompat', module: 'appcompat' }
最后做常规清理操作:
- 执行
Build > Clean Project,再Build > Rebuild Project - 要是还不行,删除项目根目录的
.gradle文件夹和app/build文件夹,然后点击File > Sync Project with Gradle Files重新同步
内容的提问来源于stack exchange,提问作者Josh TheGuy
相关产品推荐
相关产品推荐

