Android系统级开发,apktool无法反编译

分类:Android    发布时间:2013/4/15 16:24:14
今天本来想修改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就是此文件夹中) 注意:第三步很重要,很多人不成功就是因为没做第三步。

最新评论

我要发表评论

名称:
电子邮件:
个人主页:
内容:

 博客分类