Android studio报错:app:mergeDebugResources FAILED(记一次痛苦不堪的debug)

本文主要是介绍Android studio报错:app:mergeDebugResources FAILED(记一次痛苦不堪的debug),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、问题背景

最近接手了一个Android开发项目,由于之前的开发人员是用Android studio开发的,并且用的Android6.0的API,因此我之前用的eclipse就不能支持了,于是正式安装了Android studio,来体验一下google官方推荐的开发工具感觉如何。我的版本是2.2.2

2、问题描述

昨天上午,我在app中添加了一个activity并为之配了相应的布局文件,之后突然发现,应用报错了!!!!而且坑爹的Android studio没有给出任何的报错信息,只有一句话:app:mergeDebugResources FAILED。于是按照惯例,我首先去百度,一般来说,这种问题一定是大家都会遇到的,所以一般都会得到答案,但我万万没有想到,由于Android studio给出的这一句错误信息模糊不堪,而可以导致这个错误的原因有非常多,因此百度到的答案众说纷纭,没有一个能解决我的问题……但是学到了一个可以在Android studio中打印详细报错信息的方法,也算一点收获吧……

方法附上:

在命令行中进入项目的根目录,或者可以在Android studio的Terminal中直接操作也可以,然后敲入一个命令:

gradlew compileDebug --stacktrace

就可以输出较详细的信息,然后根据命令行给出的提示,还可以在后面加上-info或者-debug的选项得到更详细的信息,于是这个命令可以这样写:

gradlew compileDebug --stacktrace -info

或者:gradlew compileDebug --stacktrace -debug

但是并没有任何作用!给出的报错信息都是包中的类的错误位置,没有一句提到是我的代码的什么地方出了错,打印出的信息截图如下:



就这样整整耗费了我一整天的时间,debug没有任何进展,我带着万般无奈的心情在当天的bug还没有被解决的情况下睡觉了,盼望第二天能解决它……

3、排错过程

由于一直在想这个bug,我一晚上都没睡好,今天早早就醒了,起来继续debug,哎………………

前一天在百度的过程中,我看到一位大大在博客里写到出现这种报错一般是之前的代码哪里写错了,只要回复到之前的版本就可以了,但是我第一没有把项目推到github上,第二Android studio已经关闭过了,不可能使用Ctrl+z来恢复,不过我觉得这位大大说的还是很有道理的,因为我真的觉得没有什么导致了错误,也只能是这样了,于是我就顺着这个思路往下找,把项目中的十几个activity文件的代码逐行检查了一遍,同时把几十个layout文件也逐行检查了一遍,没有任何错误……崩溃

于是我又开始用老方法,企图从报错信息中找到一些蛛丝马迹。不过这一次我在打印出的信息中注意到了以前没有关注的细节,附图:


注意看我用红色标记的句子,它说compileDebug这个命令是模糊的,可以用后面那一大串来代替它,然后我突然反应过来,我报的错误一直提示什么resource的问题,于是我在这些候选命令里找到了红线标注的一句:compileDebugSources,本着死马当活马医的心态,我把打印报错信息的命令改成了如下这样:

gradlew compileDebugSources --stacktrace -info

然后还真的获得了一些不同的信息,附图如下:



注意我用红线标注的地方,它说我在drawable-xhdpi这个目录下少了一张图片,我很奇怪,因为程序出错的时候我根本没有动过图片,将信将疑地,我打开相关目录看了一下,方法如下:



如图,点击我用红线框起来的地方,把视图改成project,于是可以看到完整的目录结构:



找到报错信息提示的目录,我发现之前我用到的若干图片,只放在了mipmap-mdpi中而在mipmap-hdpi中没有,于是我复制了一份放到mipmap-hdpi中,再次尝试启动应用,神奇的事情发生了,程序正确运行,错误被排除了!!!!太感人了……

4、总结

这次的排错过程让我摸索出了很多东西,和大家分享一下

1、Android studio不像eclipse那样可以直接在logcat中打印错误信息,更别提错误代码的定位了

2、如果希望获得Android studio的报错信息,需要手动编译项目,方法我已经写在上面

3、排错时,首先用gradlew compileDebug --stacktrace -info来查看最基本的信息,然后根据这些信息进一步精确命令,比如在本例中我需要用compileDebugSources来获得更精确的定位

4、虽然感觉到Android studio用起来不如eclipse舒服,存在很多缺点:重量级,运行需要耗费许多计算资源、不能很好地给出错误提示,不能定位错误代码、有时候会出现一些莫名其妙的错误,但是毕竟它是google官方推荐的开发工具,并且目前对eclipse的维护已经停止,因此我们不得不将平台逐渐迁移到Android studio来,只好自己去适应这个工具的一些特点,相信我这次调错得到的一些经验对于今后的调试还是有一定帮助的

5、最后的最后,在编程的过程中,经验的指导作用还是相当重要的,因此当我们把每一次的debug当做一次积累经验的机会和学习调高的机会的话,那么debug也没有那么可怕了,甚至当排除一个奇怪的错误时还能获得很多的成就感。

这篇关于Android studio报错:app:mergeDebugResources FAILED(记一次痛苦不堪的debug)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/421493

相关文章

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col