APKTool生成APK包时遇到的错误

基本描述:


   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重新生成就可以了。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值