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

第四:准备工作都做好了,现在就可以反编译和编译了。
将你要反编译的apk放在apktool的目录下。(你也可以用指定目录)
cmd模式 执行apktool d XXXX.apk 这个是Decode也就是反编译
比如反编译SystemUI 就执行 apktool d SystemUI.apk 就可以了(会在当前的目录下生成SystemUI的文件夹,修改就是在这个文件夹里进行)

cmd模式 执行apktool b XXXX 这个是build 也就是编译回去
比如 编译SystemUI就执行 apktool b SystemUI 就可以了(会在rosie的文件夹中生成一个叫dist的文件夹,编译回去的apk就是此文件夹中)

注意:第三步很重要,很多人不成功就是因为没做第三步。

你可能感兴趣的:(Android,反编译,Android)