注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

银河军团大本营

光荣的军团,永远的丰碑 <坚持原创>

 
 
 

日志

 
 

APKTool反编译后再打包出错(Error retrieving parent for item: No resource found that matches the given name '@*android:style/Theme.Light')  

2012-12-20 19:36:47|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  论坛上有人问APKTool反编译后再打包出错是怎么回事,正好手头装了个APKTool,于是找了几个APK测试,网上找的几个APK都没出问题,反而自己写的一个测试包出现问题了,具体情形如下:

1、将APK反编译(解包):

E:\Tools\and_tool>apktool d AndTest.apk
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Documents and Settings\Me\apktool\framework\1.apk
I: Loaded.
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Done.
I: Copying assets and libs...

2、什么也不改动,打包:

E:\Tools\and_tool>apktool b AndTest AndTest_2.apk
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
E:\Tools\and_tool\AndTest\res\values\styles.xml:3: error: Error retrieving parent for item: No resource found that matches the given name '@*android:style/Theme.Light'.
E:\Tools\and_tool\AndTest\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'.
E:\Tools\and_tool\AndTest\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改正确,再打包,成了!

3、出错的styles.xml样例:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="
@*android:style/Theme.Light" />
</resources>

4、再打包:

E:\Tools\and_tool>apktool b AndTest AndTest_2.apk
I: Checking whether sources has changed...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...

  注意:打包后的APK没签名,不能安装,需要下载一个auto-sign的签名工具,将APK加上签名即可安装了。此外还有一个apk-sign的工具可以对apktool解压后的目录直接进行打包签名,但我试了一下,发现它打包后体积增加了差不多一倍,并且无法在模拟器里安装,并会导致模拟器重启!不知道真机怎么样?
  评论这张
 
阅读(18265)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018