基本描述:
APKTool反编译后再打包出错(Error retrieving parent for item:
No resource found that matches the given name '@*android:style/Theme.Light')
错误日志:
res\values\styles.xml:3: error: Error retrieving parent for item: No resource found that matches the given name '@*android:style/Theme.Light'.
\res\values-v11\styles.xml:3: error: Error retrieving parent for item: No resource found that matches the given name '@*android:style/Theme.Holo.Light'.
\res\values-v14\styles.xml:3: error: Error retrieving parent for item: No resource found that matches the given name '@*android:style/Theme.Holo.Light.DarkActionBar'.
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 8, --target-sdk-version, 15, -F, C:\DOCUME~1\Me\LOCALS~1\Temp\APKTOOL8621427559288146532.tmp, -I, C:\Documents and Settings\Me\apktool\framework\1.apk, -S, E:\Tools\and_tool\AndTest\res, -M, E:\Tools\and_tool\AndTest\AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:255)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:324)
at brut.androlib.Androlib.buildResources(Androlib.java:269)
at brut.androlib.Androlib.build(Androlib.java:192)
at brut.androlib.Androlib.build(Androlib.java:174)
at brut.apktool.Main.cmdBuild(Main.java:188)
at brut.apktool.Main.main(Main.java:70)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 8, --target-sdk-version, 15, -F, C:\DOCUME~1\Me\LOCALS~1\Temp\APKTOOL8621427559288146532.tmp, -I, C:\Documents and Settings\Me\apktool\framework\1.apk, -S, E:\Tools\and_tool\AndTest\res, -M, E:\Tools\and_tool\AndTest\AndroidManifest.xml]
at brut.util.OS.exec(OS.java:83)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:253)
... 6 more
解决办法一:(我的这种情况不适用)
看出错情形,styles.xml出错了,打开原始的XML与反编译后的XML一对比,
发现反编译后的XML里<resources>/<style>的parent属性出错了,由原本的android:Theme.xxx变成了
@*android:style/Theme.xxx,前面多出来@*,中间多出来style/,原因找到就好办了,将这些XML改正确,
再打包,成了!
参考链接:http://dreamisx.blog.163.com/blog/static/1150048392012112024649308/
解决办法二:(也不适用)
估计是版本问题,那么解决方案就是将android sdk下android-sdk-windows\platform-tools\aapt.exe
复制并替换到apktool.jar相同目录下,类似做法,直接将F:\android-sdk-windows\platform-tools配置为环境变量,
删除掉原目录下aapt.exe,直接运行。
由于在linux下开发,所以windows的sdk并未下载,用了网上朋友的aapt.exe还是不行。aapt下载见http://download.csdn.net/detail/fql_zlyy/5366841
参考链接:http://blog.sina.com.cn/s/blog_4a4f9fb50101dm5d.html
我的情况解决办法:
观察 在我的文件系统中 生成APK的时候,会在我的文件系统上生成 /apktool/framework/1.apk文件,
猜想有可能是之前生成过该framework的apk(包含系统的一些theme,style等等)文件夹,再次用apkTool时,不会再次重新生成,
但是如果之前生成的apk于现在的需要的版本不一致,可能会出现资源找不到的问题。所以,将该目录删除后,
再次用apktool重新生成就可以了。