apktool安装
1.从官网下载
网址:https://code.google.com/p/android-apktool/downloads/list
或者我已经下载好的
http://download.csdn.net/detail/qianguming/8408935
apktool1.5.2.tar.bz2
linux系统下
apktool-install-linux-r05-ibot.tar.bz2
尽量下载最新版本,避免版本太低不能使用
2.将文件解压提取出来
apktool1.5.2.tar.bz2 ----》apktool.jar
apktool-install-linux-r05-ibot.tar.bz2 -------》aapt apktool
3.将三个文件copy到 /usr/local/bin下
到三个文件所在目录下
sudo cp -i aapt apktool apktool.jar /usr/local/bin/
4.在任何目录下都可以运行 apktool 进行操作
apktool使用
反编译launcher.apk失败
apktool d xxx/xxx.apk
目标文件
夹
Exception in thread "main" brut.androlib.AndrolibException: Multiple resource
需要获取android 系统 framework-res.apk 在/system/framework下
如果你是要编译系统文件的话,请将你要修改的rom里的framework-res.apk(暂时叫做依赖包)用CMD模式“安装”下。
这样编译才不会出错。
注意:很重要,很多人不成功就是因为没做。
1.通过adb sell 获取 framework-res.apk
adb root 获取root权限
adb remount 设置/system为可读写
adb pull /system/framework/framework-res.apk D:\
当然后面的路径D:\是随你自己喜欢的,但是要注意空格 这样将framework-res.apk文件下载到PC你选的路径下,
{{{{执行之前将\{NDK ROOT}\android-sdk\platform-tools目录加至环境变量中,或者在执行命令之前切换至adb.exe所在的目录,CD \{NDK ROOT}\android-sdk\platform-tools。当然默认目录为android-sdk\platform-tools\下,下载完以后,直接在PC上完成修改}}}}这段话,好像没什么用
2. 在framework-res.apl路径下
(1)apktool if framework-res.apk
(2)如果有定制:再次执行
apktool if xxxx-res.apk
结果:I: Framework installed to: /home/xxx/apktool/framework/1.apk
I: Framework installed to: /home/xxx/apktool/framework/2.apk
3.继续执行apktool d
apktool d xx.apk 目标文件夹名
获得 res文件夹 ,AndroidManifest.xml , smali 文件夹, apktool.yml
4. apktool b 目标文件名
报错:
Caused by: java.io.IOException: Cannot run program "aapt": java.io.IOException: error=13, Permission denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:466)
at brut.util.OS.exec(OS.java:84)
... 7 more
Caused by: java.io.IOException: java.io.IOException: error=13, Permission denied
at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 10 more
解决方法:到sudo下
$ sudo apktool b 目标文件夹
结果:在目标文件夹中生成:build文件夹,dist文件夹
build:
dist:xx.apk
最近,由于apktool工具版本的升级和打包环境的升级,在使用apktool d -f xxx.apk时,会出现如下错误提示,
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:56)
at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:491)
at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:74)
at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:66)
at brut.androlib.Androlib.getResTable(Androlib.java:50)
at brut.androlib.ApkDecoder.getResTable(ApkDecoder.java:189)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:114)
at brut.apktool.Main.cmdDecode(Main.java:146)
at brut.apktool.Main.main(Main.java:77)
Caused by: java.io.IOException: Expected: 0x001c0001, got: 0x00000000
at brut.util.ExtDataInput.skipCheckInt(ExtDataInput.java:48)
at brut.androlib.res.decoder.StringBlock.read(StringBlock.java:44)
at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:102)
at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:83)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:49)
... 8 more
解决办法:
升级apktool
https://code.google.com/p/android-apktool/wiki/Install
或者我下载好的
http://download.csdn.net/detail/qianguming/8849227
继续:
在别处文章看到,可能翻墙从官网处搞到要求jdk为1,7 ,apktool为2.x
Quick Check
Apktool 2.x (Versions after 1.5.2)
Is Java 1.7 installed?
Does executing java -version on command line / command prompt return 1.7?
If not, please install Java 7 and make it the default.
Installation for Apktool 2.x
ubuntu:
将新的apktool.jar 代替原来的apktool.jar
又报错:apktool -version
apktool: can't find apktool.jar
解决方法:将apktool apktool-v2.0.0RC2.jar重命名为 apktool.jar 再次替换
接着执行
apktool -version
2.0.0-RC2
继续:
apktool d xx.apk xxx
报错:Input file (kuaiya) was not found or was not readable.
解决方法:
在某处看到有人这样些命令:apktool d -f xxx.apk -o xxx
成功
http://blog.csdn.net/poping888/article/details/45335857
版权声明:本文为博主原创文章,未经博主允许不得转载。
待续