速读原著-Android应用开发入门教程(应用程序包含的各个文件)

5.2 应用程序包含的各个文件

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 文件。

发布了1024 篇原创文章 · 获赞 810 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42528266/article/details/103926127