2013-08-07 183 views
6

我在解码apk后在调试模式下尝试在调试模式下构建新的apk文件后出现以下异常。我很困惑,我不知道该怎么做。 当我尝试以下我得到完全相同的结果。我该如何解决brut.androlib.AndrolibException

$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 

我应该怎么办

+1

'无法运行程序“aapt”:java.io.IOException:error = 2,没有这样的文件或目录 - - 这是一个开始......我对这个JAR/APK知之甚少,但要确保它该文件存在。 – Makoto

+0

是的,但我不明白的是为什么发生。事实证明,apktool可以毫无问题地工作(除了我的情况外)。并且这个错误来自apktool jar文件。 – eskoba

回答

0

这是 首先检查您正在使用最新版本的AAPT的。 第二次检查您使用的是最新版本的apktool这个测试版是否完全正常http://connortumbleson.com/2013/10/apktool-2-0-0-beta-7-released/ 第三次检查您使用的是正确版本的java。您的问题在Linux上的一些发行版 提出和解决可能你会需要这些库: 的glibc zlib的 的libstdC++ 47

第五始终提供--frame路径,并将其设置的东西,你有正确的权限。

1

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

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

一旦你尝试建立一些东西,应该重新生成该文件。

+0

该文件夹中没有apk! –

+0

我试过了,它重新生成了一个'1.apk'文件。另外如果我运行'apktool if file.apk',它会生成一个'127.apk',但是当反编译仍然使用1.apk – Fabiotk

0

尝试使用最新版本的apktool。有时开度下运行命令提示符管理员可以执行job.But后来我坚持这种代码

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

***/***/**代表包路径可以透露什么,我试图解码:)