Gradle 抛出应用程序:mergedebugresources 异常
Posted
技术标签:
【中文标题】Gradle 抛出应用程序:mergedebugresources 异常【英文标题】:Gradle throw app:mergedebugresources exception 【发布时间】:2017-05-03 15:14:59 【问题描述】:这个项目以前来自 intellij,现在作为 Gradle android 项目迁移到 android studio。 我希望稍后使用 gradle 添加 google play 服务依赖项,我在其他地方找不到特定的 jar... 以前这个项目使用 ant 运行良好,在 android studio 中导入为 gradle 后,我得到 Gradle mergedebugresources 异常。
我尝试重建项目,将项目与 gradle 文件同步,但对我不起作用...我错过了什么吗?
希望有人指导我,我是 Gradle 和 android 工作室的新手。
执行任务:[:app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:generateDebugAndroidTestSources]
按需配置是一项孵化功能。 增量java编译是一个孵化特性。 :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:prepareDebugDependencies :app:compileDebugAidl 最新 :app:compileDebugRenderscript 最新 :app:generateDebugBuildConfig 最新 :app:generateDebugResValues 最新 :app:generateDebugResources 最新 :app:mergeDebugResources 错误:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: :app:mergeDebugResources 失败
FAILURE:构建失败并出现异常。
出了什么问题: 任务 ':app:mergeDebugResources' 执行失败。 错误:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:
尝试: 使用 --info 或 --debug 选项运行以获得更多日志输出。
例外情况是: org.gradle.api.tasks.TaskExecutionException:任务':app:mergeDebugResources'的执行失败。 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) 在 org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66) 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52) 在 org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 在 org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) 在 org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185) 在 org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66) 在 org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110) 在 org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) 在 org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) 在 org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23) 在 org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43) 在 org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) 在 org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) 在 org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30) 在 org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:153) 在 org.gradle.internal.Factories$1.create(Factories.java:22) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53) 在 org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:150) 在 org.gradle.initialization.DefaultGradleLauncher.access $200(DefaultGradleLauncher.java:32) 在 org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:98) 在 org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:92) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63) 在 org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:92) 在 org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83) 在 org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:99) 在 org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46) 在 org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) 在 org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58) 在 org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) 在 org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:48) 在 org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30) 在 org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81) 在 org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46) 在 org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52) 在 org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) 在 org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 在 org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37) 在 org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 在 org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26) 在 org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 在 org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34) 在 org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 在 org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74) 在 org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72) 在 org.gradle.util.Swapper.swap(Swapper.java:38) 在 org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72) 在 org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 在 org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47) 在 org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 在 org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60) 在 org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) 在 org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 在 org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72) 在 org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) 在 org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 在 org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41) 在 org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 在 org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50) 在 org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:237) 在 org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) 在 org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) 引起:com.android.build.gradle.tasks.ResourceException:错误:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: 在 com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:161) 在 com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:88) 在 org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) 在 org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:245) 在 org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:221) 在 org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:232) 在 org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) ... 70 更多 引起:错误:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: 在 com.android.ide.common.res2.MergedResourceWriter.end(MergedResourceWriter.java:268) 在 com.android.ide.common.res2.DataMerger.mergeData(DataMerger.java:301) 在 com.android.ide.common.res2.ResourceMerger.mergeData(ResourceMerger.java:410) 在 com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:154) ... 78 更多 引起:java.util.concurrent.ExecutionException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: 在 com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299) 在 com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286) 在 com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) 在 com.android.ide.common.res2.MergedResourceWriter.end(MergedResourceWriter.java:264) ... 81 更多 引起:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: 在 com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299) 在 com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286) 在 com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) 在 com.android.builder.internal.aapt.v1.AaptV1.lambda$compile$0(AaptV1.java:446) 引起:com.android.ide.common.process.ProcessException: 在 com.android.builder.png.AaptProcess$NotifierProcessOutput.out(AaptProcess.java:284) 在 com.android.builder.png.AaptProcess$ProcessOutputFacade.out(AaptProcess.java:215) 在 com.android.utils.GrabProcessOutput$2.run(GrabProcessOutput.java:143)
构建失败
总时间:2.273 秒
我的项目文件结构如下:
感谢任何建议或指导。 非常感谢。
【问题讨论】:
查看here给出的建议。 【参考方案1】:很抱歉更新我的答案。 发现实际上是9个补丁图像格式错误,其中一个9个补丁图像没有正确绘制最外面的黑色角线。 我的粗心错误!真的用photoshop不合适制作9个patch图片! 以前的 ant 项目没有注意到这个问题。
现在使用 Gradle 进行正确检查并引发异常。 但是,日志信息对调试确实没有帮助!
【讨论】:
“将所有 .jpg 更改为 .png”?但是你说“不能有任何.png”。但是,它实际上可以有 PNG 文件。它也可以有JPG文件。 developer.android.com/guide/topics/resources/… 是的,我发布了这个问题我已经在我的drawable文件夹中将jpg更改为png,我恢复到以前的备份项目,并多次测试。 当我将 png 和 jpg 移动到其他 drawable-hdpi 和其他文件夹时解决这个问题,让 drawable 为空 我只是认为移动可绘制对象或重命名不一定能解决问题,仅此而已 不太确定,就我而言,我如何解决这个 mergeDebugResources 错误...【参考方案2】:遇到同样的问题,使用 Android Studio 2.2.3。
但是在将我的项目导入 CVS 存储库后出现此错误。 我尝试了一个新的空虚拟项目。
到目前为止我发现了什么
PNG 文件在默认情况下被视为文本文件(0d、0a 转换),并且在再次签出时是垃圾,尝试在一个包含一个 PNG 文件的新项目中进行此操作,因此切勿导入包含现有 PNG 的新项目,添加它们在第一次导入之后能够指定它们的类型。 \build\intermediates\incremental\mergeDebugResources 中的merge.xml 文件在CVS 导入后被删除。即使我将原始的merge.xml 复制到文件夹中,构建也不起作用。启动构建后,merge.xml 文件被再次删除。嘿,这是怎么回事,使用 IDE 版本 2.2.3 不应该有这样的基本问题?
【讨论】:
【参考方案3】:我的GRADLE_HOME
的路径 也出现了同样的问题,该路径包含非英文字符(“ó”)并且是用户主目录/默认为 .gradle。解决方法是在 Settings -> Build, Execution, Deployment -> Gradle 中更改 Gradle 的 Service 目录路径,使其不包含非英文字符,如下所示:
Gradle setting that caused the problem
【讨论】:
以上是关于Gradle 抛出应用程序:mergedebugresources 异常的主要内容,如果未能解决你的问题,请参考以下文章
Gradle 在从网络下载工件时抛出错误.. 异常:Gradle 任务 assembleDebug 失败,退出代码为 1
迁移到Gradle 4.5.1(android buildtool 3.0.1)抛出ClassNotFoundException
Gradle 4.7构建抛出错误执行任务bootRepackage
build.gradle 文件中的 compileKotlin 块抛出错误“找不到参数的方法 compileKotlin() [...]”