帖子地址:http://bbs.pediy.com/showthread.php?t=194206
android在解析AXML的属性的时候,是通过该属性的res id号而非属性名定位的。所谓的AXML就是AndroidManifest.xml对应的二进制文件,APK包中存储的就是AXML。比如属性:
<public type="attr" name="name" id="0x01010003" />
它的属性名为name,id号为0x01010003。
所以,在做防二次打包的时候不妨在axml中添加一些无用的tag信息,将tag里的res id 设置为非法的id,这样在解析mainfest.xml时,这些tag并不会被源apk识别,不过apktool这些反编译软件会识别 这些tag,由于在attr里并没有这些id,所以反编译的时候会报错。另外我们也可以在我们的程序中检索mainfest中是否有这些tag,如果有则退出。这也是个防止二次打包的一种不错的方案。