Android学习总结——APK打包过程与反编译

注:以下操作假定也设置好PATH

1. APK文件介绍

*.apk实际是一个rar格式的压缩包。

内容:

classes.dex : 所有的*.class字节码被重新编译,并组合成了classes.dex文件。可以由Dalvik虚拟机执行。

resources.arsc :资源的索引文件。

2. 资源->APK

图表 1源文件与APK对应关系

APK中的*.XML文件都是经过压缩加密的,只有在raw文件夹下的文件才不会加密。此外图标类资源也不会被压缩加密。

3. dex->smali->java

3.1. SDK自带的工具dexdump

作用:从*.dex中生成对类的完整描述,以smali语言表示。无目录结构。

dexdump -d filename.dex  > file.txt 

结果截图:

3.2. apktool

作用:将apk文件反编译为smali语言文件,并保留源程序的组织结构,反编译XML文件

语法:apktool d *.apk [<dir>] 意为:decode *.apk to dir.

Android学习总结——APK打包过程与反编译_第1张图片

4. dex->jar->class->java

4.1. dex->jar

工具:dex2jar

4.2. jar - > java 

核心JDCore

工具:jd-gui,图形化工具。可以将class文件反编译为java文件。

你可能感兴趣的:(Android学习总结——APK打包过程与反编译)