1. APK的内部结构
APK的全称是AndroidPackage,它是Android安装包。APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。
下面以HelloWorld为例讲解Android应用程序的文件结构及打包过程。
1.1 Android应用程序文件结构
现在编写一个HelloWorld应用程序已经变得非常简单的,在eclipse集成开发环境中只需要点击下一步基本就可以完成此应用程序。图1.1即为由eclipse集成开发环境生成的HelloWorld应用程序的文件结构图。

图1.1 HelloWorld文件结构图
其中,
Src java源文件目录
Gen 自动生成的目录,其中包括了著名的R.java
Android 2.3.3 该应用程序依赖的android SDK包。
Assets 存放原生文件,这个目录保存的文件可以打包在程序里。和res的不同点是,android不为assets下的文件生成ID,如果使用assets下的文件,需要指定文件的路径和文件名。
Bin Java编译输出的路径
Res 存放程序所需要的资源文件,也就是非Java的文件。常见的目录有,
(1)res/animator/ :XML文件,定义动画属性
(2)res/anim/ :XML文件,它们被编译进逐帧动画(frame by frame animation)或补间动画(tweened animation)对象
(3)res/color/:XML文件,定义颜色状态的列表
(4)res/layout/:存放被编译为屏幕布局(或屏幕的一部分)的XML文件
(5)res/menu/:XML文件,用来定义应用的菜单
(6)res/drawable/:存放图片文件,如.png, .jpg, .gif等。放在这里的图像资源可能会被aapt(android assert packaging tool,android资源打包工具)自动地进行无损压缩优化。如果你不想图片被压缩改变,请把图像文件放

本文介绍了Android APK的内部结构,包括Android应用程序的文件结构、打包过程。重点讲解了APK的反编译流程,包括使用Apktool、dex2jar和JD-GUI等工具进行资源文件和可执行文件的反编译,帮助读者了解APK的逆向工程。

3685

被折叠的 条评论
为什么被折叠?



