Android应用程序的编译过程

来源:互联网 发布:胆码必出软件 编辑:程序博客网 时间:2024/04/28 14:52

Android应用程序一般包含在一个单一的文件夹中,即每一个Android应用程序是一个独立的工程,包含了以下文件:  

·Android.mk:统一工程文件,在SDK开发中可以不需要;

·AndroidManifest.xml:工程描述文件,在其中定义了各种组件; 

·Java源代码:按照Java包的方式来组织目录结构,包括各个Java类的源代码;  

·资源文件:包含XML文件、图片、原始数据文件等,其中表示界面情况的布局(Layout)文件比较重要。

  

在编译Android应用程序的过程中,Java源代码使用Sun JDK将Java源程序编译成Java字节码文件(多个后缀名为.class的文件),这一步骤和标准的Java一致,然后通过Android自带的工具软件dex把所有的字节码文件转成dex文件(单一文件classes.dex)。

AndroidManifest.xml文件经过Android打包工具(aapt)处理后形成二进制格式AndroidManifest.xml文件,实质的内容与以前相同。  

各个资源文件也经过aapt处理,其中布局等文本文件处理成二进制文件,图片等文件保持不变。 

最后将这三个部分组合成一个应用程序包(*.apk)。AndroidManifest.xml描述文件、Java源文件、资源文件是Android应用程序的三个部分;在编译之前的工程中是这三个部分,在编译之后APK包依然是由这三个部分组成的。 

Java 源代码AndroidManifest.xml资源文件 处理后的资源文件 Java编译器 处理后的 AndroidManifest.xml Class字节码 Dex字节码aapt进行处理 aapt进行处理 dx工具处理 APK包 包的Meta信息 aapt放置到res目录 aapt放置到根目录 aapt放置到根目录 源程序部分  如图所示,Android源文件经过了标准的Java编译器的编译,又经过了dx工具的处理,标准的Java字节码作为整个Android编译的中间过程,最终生成的dex文件(classes.dex)是一个单一文件,将工程中所有的Java源代码文件对应的字节码集成在一起。资源文件和AndroidManifest.xml文件通过aapt工具进行处理。  

在运行时,APK包将首先进行“安装”,也就是将其中的dex文件进行优化,优化后的文件被保存到缓存区域,生成格式为dey的优化文件,然后Dalvik虚拟机将运行这些dey文件。如果应用程序包文件不发生变化,dey文件不会被重新生成;在应用程序包发生更新的情况下,将重新由dex生成dey。

Android和标准JAVA开发的JAR包最大的不同在于,标准JAVA字节码是每个文件一个Clash文件,而Android中的一个包将生成一个Dex文件。

0 0