21

我在应用程序 apktool 问题上遇到了非常烦人的问题。我不明白我做错了什么,或者问题是什么。我在 debian 和 linux mint 上试过这个。我使用了不同版本的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 内部构建的,为什么它不起作用?

4

11 回答 11

55

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

apktool d -f -r apkfilename.apk

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

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

于 2014-05-18T07:48:56.783 回答
6

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

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

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

于 2014-10-08T12:20:30.973 回答
2

我的问题通过删除 \framework\1.apk、对我修改的文件进行备份、删除目录并再次反编译 *.apk 等解决了...(在 linux 上,路径是home/[user] /apktool/ ...)。更新后,apktool 总是加载旧的资源表。ñ

于 2015-01-07T12:03:37.907 回答
1

绝对看起来像是我前一段时间遇到的 aapt PATH 问题。您是否已将 aapt 添加到 PATH 中?如果您仍然有问题,我在 bash 中制作了一个很好的 apk 工具包,以避免所有这些依赖问题。它支持 apktool、signapk、zipalign、adb、fastboot 和 heimdall。一探究竟。您所需要的只是当前的 java 安装。

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

于 2015-02-15T03:04:49.473 回答
0

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

于 2014-09-27T06:48:58.910 回答
0

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

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

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6

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

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

于 2016-05-25T20:47:14.760 回答
0

没有足够的信息给你一个明确的答案。

您曾经提到过使用不同的版本,但在 2.4 版中解决了 aapt 问题。依赖关系已减少到 java 版本 1.8 或更高版本和框架。

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

  • APK工具 2.4
  • 版本 11
  • 安卓框架

这就是摆脱 aapt 路径错误所需要的一切。

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

apktool empty-framework-dir

它解决了它。

于 2019-05-14T00:38:12.117 回答
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 <MyAPP.apk> #Without ><

有用。

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

sudo chmod +x apktool_2.5.0.jar

之后我通过键入移动它 /usr/bin/

须藤apktool_2.5.0.jar /usr/bin/

于 2021-03-14T22:54:03.040 回答
0

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

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

因此,解决方案是访问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)。

于 2017-02-04T21:44:57.877 回答
0

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

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

这里有一些很好的信息

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

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

于 2019-04-21T05:18:25.877 回答
-1

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

于 2014-10-28T11:45:39.270 回答