天天看點

Android系統級開發,apktool無法反編譯

今天本來想修改S5830下拉菜單欄的透明

用apktool發現一直無法編譯,後來發現編譯普通的apk就正常

編譯系統的apk就會出現如下錯誤

Exception in thread "main" brut.androlib.AndrolibException: brut.directory.PathN

otExist: apktool.yml

at brut.androlib.Androlib.readMetaFile(Unknown Source)

at brut.androlib.Androlib.build(Unknown Source)

at brut.androlib.Androlib.build(Unknown Source)

at brut.apktool.Main.cmdBuild(Unknown Source)

at brut.apktool.Main.main(Unknown Source)

Caused by: brut.directory.PathNotExist: apktool.yml

at brut.directory.AbstractDirectory.getFileInput(Unknown Source)

... 5 more

系統找不到指定的檔案。

或者

W: Could not decode attr value, using undecoded value instead: ns=android, name=

theme, value=0x010300a3

W: Could not decode attr value, using undecoded value instead: ns=android, name=

icon, value=0x020200d1

W: Could not decode attr value, using undecoded value instead: ns=android, name=

drawableRight, value=0x0202039b

解決方法如下:

第一:要在你的PC上建立Java的環境,才能執行編譯工作。具體方法我這個就不說了,你百度或者Google下就知道了,很簡單的。

第二:下載下傳必要的工具。Apktool工具。

下載下傳後解壓(有三個檔案aapt.exe,apktool.bat,apktool.jar),為了友善。将解壓出來的檔案放在CDM模式(win+R)預設的目錄下。

比如,我的是Windows7 32位 我的CDM模式預設目錄是C:\USER\使用者名 。

第三:如果你是要編譯系統檔案的話,請将你要修改的rom裡的framework-res.apk(暫時叫做依賴包)用CMD模式“安裝”下。

這樣編譯才不會出錯。我一開始就是在這裡糾結了很久。呵呵

framework-res.apk檔案在system/framework裡

安裝方法:把依賴包放在剛才放apktool的目錄下。(你也可以用指定目錄的方法安裝)

cmd模式 執行apktool if framework-res.apk 這個是安裝framework-res.apk