欢迎手机类测试同行交流,可加群 19591195,加群时请注明来源于51testing,谢谢。

【Android阅读笔记】应用程序的组成以及编译过程

上一篇 / 下一篇  2013-08-28 14:47:25

以下是摘录,讲述一个android应用程序的组成部分,以及是如何编译得到的。

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包依然是由这三个部分组成的。
Android应用程序的编译过程如图所示:
如上图所示,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文件。

TAG: Android android 应用程序

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2020-04-03  
   1234
567891011
12131415161718
19202122232425
2627282930  

数据统计

  • 访问量: 10037
  • 日志数: 14
  • 建立时间: 2013-08-06
  • 更新时间: 2014-06-30

RSS订阅

Open Toolbar