Android系统级开发,apktool无法反编译
用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就是此文件夹中)
注意:第三步很重要,很多人不成功就是因为没做第三步。
更多相关文章
- 一款常用的 Squid 日志分析工具
- No.11 使用firewall配置的防火墙策略的生效模式
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- android -- TextView 部分字符带颜色 与 popupwindow 的使用
- Android(安卓)7.0 调用相机 FileProvider
- Android(安卓)adb shell
- Android(安卓)关于没有处理异常导致应用程序崩溃的处理