You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Android构建因Manifest Merger问题报错?

Android Release构建Manifest合并失败问题排查方案

环境信息

  • IDE: IDEA
  • 操作系统: Mac High Sierra

问题描述

项目在模拟器中运行完全正常,但执行Android Release构建时触发org.gradle.api.tasks.TaskExecutionException,核心报错为:

Manifest merger failed with multiple errors, see logs

使用基础存储方案,排除存储大小问题,需要针对Manifest合并失败的问题给出解决建议。

完整异常日志

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':processReleaseManifest'. 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103) 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73) 
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) 
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59) 
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59) 
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101) 
at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44) 
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91) 
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62) 
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59) 
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) 
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249) 
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98) 
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663) 
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98) 
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) 
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) 
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 
Caused by: java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs 
at com.android.builder.core.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:509) 
at com.android.build.gradle.tasks.MergeManifests.doFullTaskAction(MergeManifests.java:150) 
at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:109) 
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) 
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50) 
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39) 
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTask

排查与解决步骤

  1. 获取详细的合并错误日志
    当前日志只显示了顶层异常,没有给出具体冲突细节。你可以通过以下方式获取完整错误信息:
  • 在IDEA的Gradle运行配置中,给assembleRelease任务添加--info参数,重新执行构建
  • 或者直接在终端运行:
    ./gradlew assembleRelease --info
    
    日志里会明确指出是哪些Manifest文件(主项目/依赖库)存在冲突,比如权限重复、组件声明冲突等。
  1. 用IDEA的Manifest合并工具直观定位问题
    打开项目中的AndroidManifest.xml,切换到底部的Merged Manifest标签页。这里会展示最终合并后的Manifest内容,所有冲突项会用红色标记,点击标记处就能看到冲突的来源(是主Manifest还是某个依赖库的Manifest)。

  2. 常见冲突的解决方法
    针对不同类型的冲突,有对应的解决方式:

  • 权限/组件重复: 在主Manifest中使用tools:node="remove"移除冲突项,比如:
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />
    
  • 属性值冲突: 用tools:replace指定使用主Manifest的配置,比如解决allowBackup属性冲突:
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        tools:replace="android:allowBackup">
    
  • SDK版本不一致: 确保所有依赖库的minSdkVersion不高于主项目的配置,或者在build.gradle中统一指定:
    android {
        defaultConfig {
            minSdkVersion 21
            targetSdkVersion 33
            // 其他配置
        }
    }
    
  1. 清理缓存后重新构建
    有时候Gradle缓存会导致异常,先执行清理命令:
./gradlew clean

再重新运行构建任务。

内容的提问来源于stack exchange,提问作者Jack Weiler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:24:58