天天看點

ndroid studio報錯:app:mergeDebugResources FAILED1、問題背景2、問題描述3、排錯過程

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中打開Terminal:

Help-Find Action-輸入Terminal(https://www.cnblogs.com/prophet-it/p/6828667.html)

方法附上:

在指令行中進入項目的根目錄,或者可以在Android studio的Terminal中直接操作也可以,然後敲入一個指令:

gradlew compileDebug --stacktrace           

就可以輸出較詳細的資訊,然後根據指令行給出的提示,還可以在後面加上-info或者-debug的選項得到更詳細的資訊,于是這個指令可以這樣寫:

gradlew compileDebug --stacktrace -info           
或者:gradlew compileDebug --stacktrace -debug           

但是并沒有任何作用!給出的報錯資訊都是包中的類的錯誤位置,沒有一句提到是我的代碼的什麼地方出了錯,列印出的資訊截圖如下:

ndroid studio報錯:app:mergeDebugResources FAILED1、問題背景2、問題描述3、排錯過程
ndroid studio報錯:app:mergeDebugResources FAILED1、問題背景2、問題描述3、排錯過程

就這樣整整耗費了我一整天的時間,debug沒有任何進展,我帶着萬般無奈的心情在當天的bug還沒有被解決的情況下睡覺了,盼望第二天能解決它……

3、排錯過程

由于一直在想這個bug,我一晚上都沒睡好,今天早早就醒了,起來繼續debug,哎………………

前一天在百度的過程中,我看到一位大大在部落格裡寫到出現這種報錯一般是之前的代碼哪裡寫錯了,隻要回複到之前的版本就可以了,但是我第一沒有把項目推到github上,第二Android studio已經關閉過了,不可能使用Ctrl+z來恢複,不過我覺得這位大大說的還是很有道理的,因為我真的覺得沒有什麼導緻了錯誤,也隻能是這樣了,于是我就順着這個思路往下找,把項目中的十幾個activity檔案的代碼逐行檢查了一遍,同時把幾十個layout檔案也逐行檢查了一遍,沒有任何錯誤……崩潰

于是我又開始用老方法,企圖從報錯資訊中找到一些蛛絲馬迹。不過這一次我在列印出的資訊中注意到了以前沒有關注的細節,附圖:

ndroid studio報錯:app:mergeDebugResources FAILED1、問題背景2、問題描述3、排錯過程

注意看我用紅色标記的句子,它說compileDebug這個指令是模糊的,可以用後面那一大串來代替它,然後我突然反應過來,我報的錯誤一直提示什麼resource的問題,于是我在這些候選指令裡找到了紅線标注的一句:compileDebugSources,本着死馬當活馬醫的心态,我把列印報錯資訊的指令改成了如下這樣:

gradlew compileDebugSources --stacktrace -info           

然後還真的獲得了一些不同的資訊,附圖如下: (以上是網上一位大兄弟得解決方法,後面得我們得顯示錯誤不一樣,是以下面就不貼出來了。) 顯示得錯誤資訊大概就是JDK得路徑錯誤,沒有配置環境變量,突然想起,我還未給安裝得Android studio配置SDK和JDK環境變量,打開一看(https://blog.csdn.net/taowuhua0505/article/details/80620870),發現都是使用Android studio安裝時自帶得JDK,并不是我開發時候使用得1.8版本得JDK,然後我就更改JDK路徑,OK了。

————————————————

如果你覺得本人的文章對你有所幫助,客官慢走賞瓶水喝
ndroid studio報錯:app:mergeDebugResources FAILED1、問題背景2、問題描述3、排錯過程
ndroid studio報錯:app:mergeDebugResources FAILED1、問題背景2、問題描述3、排錯過程
ndroid studio報錯:app:mergeDebugResources FAILED1、問題背景2、問題描述3、排錯過程

繼續閱讀