5

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

我应该怎么办

4

3 回答 3

1

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

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

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

于 2014-10-08T12:21:47.110 回答
0

这是首先检查您使用的是最新版本的 aapt。第二次检查你使用的是最新版本的 apktool 这个 beta 完全没问题http://connortumbleson.com/2013/10/apktool-2-0-0-beta-7-released/ 第三次检查你使用的是正确的版本爪哇。在某些 Linux 发行版上,您可能需要以下库来解决您的问题:glibc zlib libstdc++47

第五总是提供 --frame-path 并将其设置为您拥有正确权限的内容。

于 2013-12-20T15:39:28.817 回答
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
..............
}

***/***/**代表包路径,它可以揭示我要解码的内容:)

于 2018-02-14T17:41:59.727 回答