aapt dump badging 找不到'android:versionCode' Bug解决

今天服务器端同事报了个bug,在解析一个游戏apk包时,无法得到versioncode, 我自己用aapt dump badging 命令试了一下,确实是会报一个ERROR getting 'android:versionCode' attribute: attribute is not an integer value错误。

用反编译后也无法得到versionCode。太阳底下没有新鲜事,果断先google一发,stackoverflow上面果然有人问过这个问题,原来这个问题的原因是aapt的一个bug,当app的androidmanifest文件的versionCode使用的引用值(android:versionCode="@integer/versioncode")时,就会解析错误。

网友的回答都是修改versionCode的赋值方式,通过直接复制避免这个问题,可如果包已经打出来了怎么解决呢?

我在查看了aapt命令的另外几个参数后终于有了解决方法,步骤如下:

  1. 使用命令aapt dump xmltree ***.apk AndroidManifest.xml先解析AndroidManifest文件,得到versionCode的引用值地址@0x7f0d009
1.png
  1. 使用命令 aapt dump resources ***.apk得到所有resourcees信息,搜索上面的引用地址@0x7f0d009,得到
2.png

,这个d就是真实的versionCode值了。

你可能感兴趣的:(aapt dump badging 找不到'android:versionCode' Bug解决)