Android apktool 升级使用问题一则

microjo

最近使用 Dodo APKTools 修改 Zinio.apk,反编译提示成功,修改 xml 文档后,重新编译也提示成功,但是找不到 apk 文件,原因不明。后来使用机锋论上的 apktool GUI 反编译,出现错误信息,反编译失败。日志显示:

I: Loading resource table from file: C:\Users\用户名\apktool\framework\1.apk

Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec: 0x01030118
    at brut.androlib.res.data.ResPackage.getResSpec(Unknown Source)
    at brut.androlib.res.data.ResTable.getResSpec(Unknown Source)
    at brut.androlib.res.data.ResTable.getResSpec(Unknown Source)
    at brut.androlib.res.data.value.ResReferenceValue.getReferent(Unknown Source)
    at brut.androlib.res.data.value.ResReferenceValue.toResXmlFormat(Unknown Source)
    at brut.androlib.res.data.value.ResStyleValue.serializeToXml(Unknown Source)
    at brut.androlib.res.AndrolibResources.generateValuesFile(Unknown Source)
    at brut.androlib.res.AndrolibResources.decode(Unknown Source)
    at brut.androlib.Androlib.decodeResourcesFull(Unknown Source)
    at brut.androlib.ApkDecoder.decode(Unknown Source)
    at brut.apktool.Main.cmdDecode(Unknown Source)
    at brut.apktool.Main.main(Unknown Source)

联系 apktool GUI 作者反映了问题,使用新版仍然有这个问题。索性到 apktool 官网下载了最新的版本,用命令行反编译,还是出现同样的问题,提示也类似。既然提示使用了一个 resource table 文件,我删除掉让命令行重新生成,再次使用命令行反编译竟然成功。反过来,重新使用 Dodo APKTools 修改 apk 也成功了。说明 apktool 使用过程中释放了一些文件,这些文件不会随着 apktool 的升级而自动重新生成,必须先清除掉旧版本的文件,才能自动产生新版本文件。因此,建议使用 apktool 包括以其为内核的软件,在升级 apktool 时,将系统用户目录 \apktool\framework(以 Win7 举例:C:\Users\用户名\apktool\framework)中的文件清除,保证使用新的文件

发布: