ubuntu下apktool安装及使用

尚恩
2023-12-01

apktool安装

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/

ubuntu copy 命令 

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上完成修改}}}}这段话,好像没什么用

adb shell  的使用

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

apktool反编译时经常会出现下面的信息

1.Input file  was not found or was not readable.
2.Destination directory (C:\Users\user\a) already exists. Use -f switch if you wan t to overwrite it.
3.Exception in thread "main" brut.androlib.AndrolibException: Could not decode ars c fil..........

解决方案:
1和2是因为apktool升级到2.0以上时,使用方式已经替换,格式为:apktool d [-s] -f <apkPath> -o <folderPath>,参数具体的意思可以直接打apktool回车(windows)查看帮助
3是因为apktool版本过低导致,请升级到最新版本,地址: https://bitbucket.org/iBotPeaches/apktool/downloads







待续

 

 类似资料: