我遇到了应用程序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内部构建的,为什么它不起作用?
答案 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安装。
答案 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并具有以下特征:
这就是摆脱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
它有效。
因为我大部分时间都在使用 apktool,所以我需要一种可以从任何地方运行 apktool 的情况,所以我通过键入来授予 jar 文件执行权限
sudo chmod +x apktool_2.5.0.jar
之后我通过输入将它移动到 /usr/bin/
sudo apktool_2.5.0.jar /usr/bin/
答案 11 :(得分:-1)
解决方案是将apktool目录包含在系统路径中。