1. 程式人生 > >aapt.exe已停止工作-by TomHawk

aapt.exe已停止工作-by TomHawk

昨天遇到了一個新問題(對我自己而言的):aapt.exe已停止工作。

aapt.jpg

先說一下問題是怎樣產生的吧:

昨天的時候用apktool工具提取了一個apk裡面的資原始檔,成功獲取之後我打算利用它的res資料夾裡的資原始檔進行二次開發,於是把我專案裡的res資料夾刪除了,把提取到的res資料夾完整的複製去我的專案,於是這個問題就出現了。

百度了一下,很多都是這個說法:aapt.exe已停止工作,其他無任何錯誤提示,發生這個錯誤一般是資原始檔或是xml檔案中有錯誤造成的。

我碰到的情況確實也是這樣的,專案裡的res資料夾沒有紅色x提示說有錯誤,就是windows頻繁的提示:aapt.exe已停止工作。

file.jpg

由於不清楚問題出在哪裡,於是就採用死馬當活馬醫的策略,把能試的方法都試一遍,最後找到一個可行的解決方法:

jpg

如上圖,反編譯之後會出現ids.xml和public.xml兩個檔案,於是我把這兩個檔案給delete掉,結果:

jpg

雖然出現了一大堆的紅x,但是這其實也是一件好事來的,起碼eclipse像以往一樣提示了檔案出錯的地方,另外aapt.exe問題也不再出現了。

接著開啟其中一個佈局檔案來看,很容易就能發現其中的原因了,因為裡面的view在定義id屬性的時候都是通過"@id"這樣子來的,那麼只要把全部的"@id"替換為"@+id"就ok了。這裡eclipse給我們提供了一個專案範圍內的替換方法:開啟其中一個layout檔案->選中@id->選單欄的Search->Text->Project,接下來eclipse會把專案範圍內的所有"@id"所在的地方都顯示出來,右鍵->Replace All...,在替換框裡輸入"@+id"就可以完成全部"@id"的替換了。

至此,問題就解決了:

jpg