2013-03-29 120 views
0

我正在尝试使用apktool修改一个Android应用程序。ubuntu上的反编译和重新编译apk文件

我已经下载了apktool,现在我有3个文件apktool,AAPT和apktool.jar

我想我使用这些命令编译修改的Gallery_3D.apk

背景然后重新编译

./apktool if Gallery 3D.apk 
./apktool d Gallery 3D.apk gallery 

它工作正常的上述2的步骤,但在使用命令

./apktool b gallery Gallery 3D New.apk 
0重新编译

但是我在最后一步得到这个错误。

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/APKTOOL4811911322257021960.tmp, -I, /home/seat2/apktool/framework/1.apk, -S, /home/seat2/Desktop/apktool/gallery/res, -M, /home/seat2/Desktop/apktool/gallery/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:182) 
    at brut.apktool.Main.main(Main.java:67) 
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL4811911322257021960.tmp, -I, /home/seat2/apktool/framework/1.apk, -S, /home/seat2/Desktop/apktool/gallery/res, -M, /home/seat2/Desktop/apktool/gallery/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:475) 
    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:468) 
    ... 10 more 
+2

在我看来,你需要'aapt'在你的'PATH' – 2013-03-29 06:29:03

+1

如果您正在使用旧的Andriod-SDK,你应该更新它。另外检查,aapt工具的路径已添加到您的环境路径中。 –

+0

谢谢你有一个路径问题。我成功构建了应用程序,但在安装INSTALL_PARSE_FAILED_NO_CERTIFICATES时如何得到此错误 –

回答

0

我知道这是很老的答案,但我要发布的情况下,有人的解决方案仍然需要帮助。

第一个问题,RC指出:你需要为你的路径添加aapt。你可以用下面的命令做到:

PATH=$PATH:/location/of/aapt 

要解决的第二个问题(INSTALL_PARSE_FAILED_NO_CERTIFICATES),你需要签署APK。为此,您可以使用testsign.jar:

java -jar testsign.jar unsigned.apk signed.apk