APKTool打包的一个小问题

baqiuxiao 2013-10-13

0x01,又开始写blog了,好久没有网络了,最近终于可以开始继续研究技术了。

          今天的问题是大家再用到APKTool时估计常见的一个问题,

          在windows下,用APKTool进行打包时,有时会爆这个错误,甚至我们在反编译完没经过任何改动的时候,直接重打包也会遇到

          

I: Smaling...
I: Building resources...
Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 10, --target-sdk-version, 10, -F, C:\Users\ice\AppData\Local\Temp\APKTOOL5697750537225709497.tmp, -0, arsc, -I, C:\Users\ice\apktool\framework\1.apk, -S, F:\webattack\android\result\decompile\res, -M, F:\webattack\android\result\decompile\AndroidManifest.xml]
	at brut.androlib.Androlib.buildResourcesFull(Androlib.java:358)
	at brut.androlib.Androlib.buildResources(Androlib.java:283)
	at brut.androlib.Androlib.build(Androlib.java:206)
	at brut.androlib.Androlib.build(Androlib.java:176)
	at brut.apktool.Main.cmdBuild(Main.java:228)
	at brut.apktool.Main.main(Main.java:79)
Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 10, --target-sdk-version, 10, -F, C:\Users\lenovo\AppData\Local\Temp\APKTOOL5697750537225709497.tmp, -0, arsc, -I, C:\Users\lenovo\apktool\framework\1.apk, -S, F:\webattack\android\result\decompile\res, -M, F:\webattack\android\result\decompile\AndroidManifest.xml]
	at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:357)
	at brut.androlib.Androlib.buildResourcesFull(Androlib.java:336)
	... 5 more
Caused by: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 10, --target-sdk-version, 10, -F, C:\Users\lenovo\AppData\Local\Temp\APKTOOL5697750537225709497.tmp, -0, arsc, -I, C:\Users\lenovo\apktool\framework\1.apk, -S, F:\webattack\android\result\decompile\res, -M, F:\webattack\android\result\decompile\AndroidManifest.xml]
	at brut.util.OS.exec(OS.java:93)
	at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:355)
	... 6 more
Caused by: java.io.IOException: Cannot run program "aapt": CreateProcess error=2, ?????????
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
	at java.lang.Runtime.exec(Runtime.java:593)
	at java.lang.Runtime.exec(Runtime.java:466)
	at brut.util.OS.exec(OS.java:84)
	... 7 more
Caused by: java.io.IOException: CreateProcess error=2, ?????????
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
	at java.lang.ProcessImpl.start(ProcessImpl.java:30)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
	... 10 more

0x 02  顾名思义,就是aapt.exe创建失败了,为什么呢,大家可以看到在apktool.bat路径下,aapt.exe好好存在着。。经过研究发现,主要是apktool.bat的调用里面大家可以发现是这样的

@echo off
set PATH=%CD%;%PATH%;
java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

很明显,程序的查找路径只有当前目录和Path,如果你不在apktool的所在目录调用apktool.bat的话,那么对apktool.jar对aapt.exe的间接调用就会发生找不到的问题。

0x03 解决就很简单了,要么把命令行定位到apktool的目录,要么一劳永逸的把apktool的路径直接加到环境变量path中去。

0x04  很简单吧。。。。。。

         其实人家官网写了这步。。。。


APKTool打包的一个小问题
 

    

就这些了

相关推荐