我该如何解决brut.androlib.AndrolibException

时间:2013-08-07 17:17:40

标签: java android debugging apk

在调试模式下解码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

我应该怎么做

3 个答案:

答案 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
..............
}

***/***/**表示可以披露我尝试解码的包路径:)