apktool build apk失败了

时间:2014-04-26 22:31:46

标签: build recompile

我遇到了应用程序apktool问题非常恼人的问题。 我不明白我做错了什么,或者问题是什么。 我在debian和linux薄荷上试过这个。我使用了不同版本的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

似乎它不能使用aapt,但我读到了关于apktool。 似乎aapt是在apktool内部构建的,为什么它不起作用?

12 个答案:

答案 0 :(得分:49)

在重新编译apk时,似乎存在构建资源的问题。 你可以做的是,当你反编译你的apk使用这个命令

apktool d -f -r apkfilename.apk

这里-f是替换以前反编译的apk的代码,-r是忽略资源的反编译。

这会阻止资源被反编译,并且只需在重新编译apk时复制相同的资源。

答案 1 :(得分:5)

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

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

尝试构建文件后,应重新生成文件。

答案 2 :(得分:2)

我的问题通过删除\ framework \ 1.apk,对我修改的文件进行备份,重新编写dir并再次反编译* .apk等来解决...(在Linux上,路径是家/ [用户] / apktool / ...)。更新后,apktool始终加载旧资源表。 Ñ

答案 3 :(得分:1)

绝对看起来像我曾经有过的aapt PATH问题。你有没有加入PATH?如果你还有问题,我在bash中制作了一个好的apk工具包,以避免所有这些依赖性问题。它支持apktool,signapk,zipalign,adb,fastboot和heimdall。看看这个。您所需要的只是当前的Java安装。

http://forum.xda-developers.com/android/development/toolkit-apk-munky-rench-t3026757/post58747626#post58747626

答案 4 :(得分:0)

尝试将包含aapt文件的目录放到PATH中。例如,export PATH = $ PATH:./。/ toktool b

答案 5 :(得分:0)

尝试安装 ia32-libs 并更新 apktool 的最新版本。 (如果可能的话重启)

apktool需要&#34; ia32-libs&#34;在Ubuntu 12.04之后不可用。安装 ia32-libs

{{1}}

下载最新版 apktools.jar - https://bitbucket.org/iBotPeaches/apktool/downloads

apktool完整安装指南 - http://ibotpeaches.github.io/Apktool/install/

答案 6 :(得分:0)

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

1.从这里下载新的(修改过的)jar文件 http://onephin.com/fix-apktool-dont-compile-dont-build-error/      1.1提取它。      1.2将其重命名为Apktool.jar      1.3将此文件放入Apktool文件夹。

2.确保您的Apktool文件夹位于/ usr / local / bin(需要root)

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

4.确保正确安装java或者如果你正确安装了java,那么你的Variable路径可能是错误的。解决此问题的方法重新安装java,然后正确设置“可变路径”。

有关解决此问题的更多信息请访问 http://onephin.com/fix-apktool-dont-compile-dont-build-error/

答案 7 :(得分:0)

我在运行apktool d foo.apk(反编译成功)然后apktool b foo时遇到同样的问题(重新编译失败并出现类似错误)。

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

因此,解决方案是访问apktool的官方网站,例如https://connortumbleson.com/2017/01/23/apktool-v2-2-2-released/(在撰写本文时它的最新版本),下载它,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)。

答案 8 :(得分:0)

主要问题是您需要2.4.0的apktool版本

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

这里有一些不错的信息

https://www.youtube.com/watch?v=kB6s10Uwpcs

和用于kali的自动脚本 https://github.com/catenatedgoose?tab=repositories

答案 9 :(得分:0)

实际上没有足够的信息可以给您明确的答案。

您曾经提到过使用其他版本,但是aapt问题已在2.4版中解决。依赖性已降低到Java版本1.8或更高版本以及框架。

我使用Debian并具有以下特征:

  • Apktool 2.4
  • java版本11
  • Android框架

这就是摆脱aapt path错误的全部方法。

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

apktool empty-framework-dir

它解决了。

答案 10 :(得分:0)

对我来说,我首先通过在终端中键入来清除 apktool 的框架目录来解决这个问题。

apktool 空框架目录

之后我通过键入卸载了 apktool 和相关文件

sudo apt purge apktool

然后我去 https://bitbucket.org/iBotPeaches/apktool/downloads/ 获取 apktool 的最新 jar 文件(在撰写本文时为 apktool_2.5.0.jar)。

第一次运行

java -jar apktool_2.5.0.jar b #Without ><

它有效。

因为我大部分时间都在使用 apktool,所以我需要一种可以从任何地方运行 apktool 的情况,所以我通过键入来授予 jar 文件执行权限

sudo chmod +x apktool_2.5.0.jar

之后我通过输入将它移动到 /usr/bin/

sudo apktool_2.5.0.jar /usr/bin/

答案 11 :(得分:-1)

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