Build apktool生成apk失败

Build apktool生成apk失败,build,recompile,Build,Recompile,我在应用程序apktool问题上遇到了非常恼人的问题。 我不明白我做错了什么,或者问题出在哪里。 我在debian和LinuxMint上试过这个。我使用了不同版本的apktool 导致相同的错误: I: Checking whether sources has changed... I: Checking whether resources has changed... I: Building resources... Exception in thread "main" brut.androl

我在应用程序apktool问题上遇到了非常恼人的问题。 我不明白我做错了什么,或者问题出在哪里。 我在debian和LinuxMint上试过这个。我使用了不同版本的apktool

导致相同的错误:

I: Checking whether sources has changed...
I: Checking whether resources has changed...
I: Building resources...
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL3630495287059303807.tmp, -I, /home/awesomename/apktool/framework/1.apk, -S, /home/awesomename/out/./res, -M, /home/awesomename/out/./AndroidManifest.xml]
    at brut.androlib.res.AndrolibResources.aaptPackage(Unknown Source)
    at brut.androlib.Androlib.buildResourcesFull(Unknown Source)
    at brut.androlib.Androlib.buildResources(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.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL3630495287059303807.tmp, -I, /home/windows/apktool/framework/1.apk, -S, /home/windows/out/./res, -M, /home/windows/out/./AndroidManifest.xml]
    at brut.util.OS.exec(Unknown Source)
    ... 7 more
Caused by: java.io.IOException: Cannot run program "aapt": error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
    at java.lang.Runtime.exec(Runtime.java:617)
    at java.lang.Runtime.exec(Runtime.java:485)
    ... 8 more
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
    ... 10 more
I:正在检查源是否已更改。。。
I:正在检查资源是否已更改。。。
I:建筑资源。。。
线程“main”brut.androlib.AndrolibException:brut.common.BrutException:无法执行命令:[aapt,p,-F,/tmp/apktool363095287059303807.tmp,-I,/home/awesomename/apktool/framework/1.apk,-S,/home/awesomename/out//res,-M,/home/awesomename/out//AndroidManifest.xml]
位于brut.androlib.res.AndrolibResources.aaptPackage(未知源)
位于brut.androlib.androlib.buildResourcesFull(未知源)
位于brut.androlib.androlib.buildResources(未知源)
位于brut.androlib.androlib.build(未知源)
位于brut.androlib.androlib.build(未知源)
位于brut.apktool.Main.cmdBuild(未知源)
位于brut.apktool.Main.Main(未知源)
原因:brut.common.BrutException:无法执行命令:[aapt,p,-F,/tmp/APKTOOL3630495287059303807.tmp,-I,/home/windows/apktool/framework/1.apk,-S,/home/windows/out//res,-M,/home/windows/out//AndroidManifest.xml]
在brut.util.OS.exec(未知源)
... 还有7个
原因:java.io.IOException:无法运行程序“aapt”:错误=2,没有这样的文件或目录
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
位于java.lang.Runtime.exec(Runtime.java:617)
位于java.lang.Runtime.exec(Runtime.java:485)
... 8个以上
原因:java.io.IOException:error=2,没有这样的文件或目录
位于java.lang.UNIXProcess.forkAndExec(本机方法)
位于java.lang.UNIXProcess(UNIXProcess.java:135)
在java.lang.ProcessImpl.start(ProcessImpl.java:130)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
... 10多
似乎它不能使用aapt,但我读过关于apktool的文章。
而且似乎aapt是在apktool内部构建的,为什么它不工作呢

在重新编译apk时,在构建资源时似乎出现了一些问题。 您可以做的是,当您反编译apk时,使用以下命令

apktool d -f -r apkfilename.apk
apktool empty-framework-dir
这里,-f将替换以前反编译的apk代码,-r将忽略资源的反编译


这将防止资源被反编译,并在重新编译apk时简单地复制相同的资源。

尝试将包含aapt文件的目录放入您的路径。例如,export PATH=$PATH:././apktool b

如果您一直在使用v1,现在升级到v2,请尝试手动删除框架文件

在windows 8上,它通常位于
C:\Users\YourName\apktool\framework\1.apk


一旦您尝试构建某个文件,就应该重新生成该文件。

解决方案是将您的apktool目录包含到系统路径中。

我的问题通过删除\framework\1.apk、对我修改的文件进行备份、重新编译dir并再次反编译*.apk等方式得到解决。。。(在linux上,路径是home/[user]/apktool/…)。更新后,apktool始终加载旧的资源表。N

显然像是我不久前遇到的aapt路径问题。您是否已将aapt添加到路径?如果您仍然有问题,我在bash中制作了一个很好的apk工具包,以避免所有这些依赖性问题。它支持apktool、signapk、zipalign、adb、fastboot和heimdall。过来看。您所需要的只是当前的java安装


尝试安装ia32 libs并更新最新版本的apktool。(如有可能,重新启动)

apktool需要“ia32 libs”,这在Ubuntu 12.04之后是不可用的。安装ia32 libs

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
下载apktools.jar的最新版本


apktool完整安装指南-

您的错误有一些原因。尝试以下方法来解决您的问题

1.从这里下载新的(修改过的)jar文件 1.1提取它。 1.2将其重命名为Apktool.jar 1.3将此文件放入Apktool文件夹

2.确保Apktool文件夹位于/usr/local/bin(需要根目录)

3.确保Apktool.jar文件是可执行的(chmod+x)

4.确保正确安装java,或者如果正确安装java,则变量路径可能错误。要解决此问题,请重新安装java,然后正确设置变量路径

有关修复此问题的更多信息,请访问
我只是在运行
apktool d foo.apk
(反编译成功)和
apktool b foo
(重新编译失败,出现类似错误)时遇到了相同的问题

上面的
apktool
工具是通过Kali-Linux上的
sudo-apt-get-install-apktool
安装的

因此,解决方案是访问
apktool
的官方网站,例如(撰写本文时它是最新版本),下载它,md5sum它,例如
md5sum apktool_2.2.2.jar
进行验证,然后将该apktool_2.2.2.jar重命名为apktool.jar


然后执行
java-jar./apktool.jar b foo
重新编译,成功无误(生成的apk位于./foo/dist/foo.apk)。

主要问题是apktool版本需要2.4.0

您必须从ibotpeaches git hub手动安装它

这里有一些好消息

还有kali的自动脚本
没有足够的信息给你一个明确的答案

您曾经提到使用不同的版本,但是aapt问题在版本2.4中得到了解决。依赖项已减少到java版本1.8或更高版本,并且该框架

我使用Debian并具有以下功能:

  • Apktool 2.4
  • java版本11
  • Android框架
这就是消除aapt路径错误所需要的全部

我遇到的最后一个错误与aapt无关,但在框架上,所以我运行了这个命令