【问题标题】:apktool build apk failsapktool 构建 apk 失败
【发布时间】:2014-04-26 22:31:45
【问题描述】:

我在应用程序 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 内部构建的,为什么它不起作用?

【问题讨论】:

标签: build recompile


【解决方案1】:

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

apktool d -f -r apkfilename.apk

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

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

【讨论】:

  • 问题是,这不会让我看到值文件夹。这是我反编译 apk 的唯一原因。
【解决方案2】:

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

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

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

【讨论】:

  • 在 OS X (macOS) 上,它位于 /Users/&lt;username&gt;//Library/apktool/framework/1.apk
  • 在 GNU/Linux 上它位于 .local/share/apktool/framework/1.apk,尽管您可以在任何操作系统上使用 --frame-path &lt;dir&gt; 更改它。 -- 也不是手动删除文件apktool empty-framework-dir 应该做同样的事情。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    这似乎是我不久前遇到的 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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        尝试安装 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/

        【讨论】:

          【解决方案7】:

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

          上面的apktool 工具是通过sudo apt-get install apktool 在 Kali 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)。

          【讨论】:

            【解决方案8】:

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

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

            这里有一些很好的信息

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

            还有一个 Kali 的自动化脚本 https://github.com/catenatedgoose?tab=repositories

            【讨论】:

              【解决方案9】:

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

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

              我使用 Debian 并且有以下内容:

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

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

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

              apktool empty-framework-dir
              

              它解决了它。

              【讨论】:

                【解决方案10】:

                对我来说,我首先通过在终端中输入清除 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】:

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

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-04-04
                    • 1970-01-01
                    • 1970-01-01
                    • 2021-03-09
                    • 2022-01-01
                    • 1970-01-01
                    • 2020-09-14
                    相关资源
                    最近更新 更多