在调试模式下解码apk并尝试在调试模式下构建新的apk后,我遇到以下异常。我很困惑,我不知道该怎么办。 当我尝试以下内容时,我得到完全相同的结果。
$java -jar ./apktool.jar d -d meet.apk out
$java -jar ./apktool.jar b -d out meet.apk
或者
$./apktool d -d meet.apk out
$./apktool b -d out meet.apk
我得到以下输出
I: Checking whether sources has changed...
I: Smaling...
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/APKTOOL4160944918573250929.tmp, -I, /root/apktool/framework/1.apk, -S, /home/lab2alex/Documents/out/res, -M, /home/lab2alex/Documents/out/AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:193)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:301)
at brut.androlib.Androlib.buildResources(Androlib.java:248)
at brut.androlib.Androlib.build(Androlib.java:171)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:174)
at brut.apktool.Main.main(Main.java:59)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL4160944918573250929.tmp, -I, /root/apktool/framework/1.apk, -S, /home/lab2alex/Documents/out/res, -M, /home/lab2alex/Documents/out/AndroidManifest.xml]
at brut.util.OS.exec(OS.java:87)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:191)
... 6 more
Caused by: java.io.IOException: Cannot run program "aapt": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:488)
at java.lang.Runtime.exec(Runtime.java:610)
at java.lang.Runtime.exec(Runtime.java:483)
at brut.util.OS.exec(OS.java:78)
... 7 more
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:164)
at java.lang.ProcessImpl.start(ProcessImpl.java:81)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:470)
... 10 more
我应该怎么做
答案 0 :(得分:1)
如果您一直在使用v1并且现在已升级到v2,请尝试手动删除框架文件。
在Windows 8上,它通常位于C:\Users\YourName\apktool\framework\1.apk
。
尝试构建文件后,应重新生成文件。
答案 1 :(得分:0)
这是 首先检查您是否使用了最新版本的aapt。 第二次检查你使用的是最新版本的apktool这个测试版是完全正常的http://connortumbleson.com/2013/10/apktool-2-0-0-beta-7-released/ 第三,检查您使用的是正确版本的java。 在某些Distros of Linux上你需要这些库来解决你的问题: glibc的 zlib的 的libstdc ++ 47
第五个ALWAYS提供--frame-path并将其设置为您拥有正确权限的地方。
答案 2 :(得分:0)
尝试使用最新版本的apktool。有时打开命令提示符以管理员身份运行可以完成这项工作。但后来我坚持使用这种代码
protected void onCreate(android.os.Bundle paramBundle)
{
// Byte code:
// 0: iconst_0
// 1: istore_2
// 2: aload_0
// 3: aload_1
// 4: invokespecial 755 ****/***/***/c:onCreate (Landroid/os/Bundle;)V
// 7: aload_0
// 8: invokevirtual 759 ****/***/***/:getApplicationContext ()Landroid/content/Context;
// 11: invokestatic 764 com/facebook/accountkit/AccountKit:initialize (Landroid/content/Context;)V
// 14: invokestatic 201 ****/***/***/e:a ()****/***/***/e;
// 17: invokevirtual 766 ****/***/***/e:b ()I
// 20: istore 14
// 22: iload 14
// 24: ifle +13 -> 37
// 27: iload 14
..............
}
***/***/**
表示可以披露我尝试解码的包路径:)