Android Tools 翻译:Build System Overview

以下内容翻译自官方文档

http://developer.android.com/sdk/installing/studio-build.html


Android 构建系统是可以用来进行构建,测试,运行和打包应用的工具组。可以整合到 Android Studio 点击菜单运行,也可以使用独立的命令行中运行。可以使用到的构建系统特性有:

  • 自定义,配置,和拓展构建过程。
  • 使用相同的项目和模块,创建应用多样的带有不同特性的 APKs 。
  • 复用源码目录中的代码和资源。

Andsroid 构建系统的灵活性,能够完成这些目标而不需要修改应用的源码文件。为了构建 Android Studio 项目,需要读 Building and Running from Android Studio。为了配置自定义的构建设置,需要阅读Configuring Gradle Builds

对构建过程的详细解读

构建过程包括了许多工具和在生成 .apk 文件制造中间文件的过程。如果在 Android Studio 中开发,每一次为项目和模块运行 Gradle 构建任务后,完整的构建过程也结束。构建过程非常灵活。但是,理解这些是如何发生就像被布蒙住一样,因为国建构成是可配置和可拓展的。下面的图表描述了在构建中包含的不同的工具和过程

构建图

典型的构建的通用过程基本轮廓在下面体现。构建系统合并了多渠道打包,生成类型和依赖等所有的资源。如果不同的文件夹包含的资源拥有相同的命名和配置,按下面的优先级顺序:依赖的生成类型,打包多渠道,源码目录。

  • Android Asset Packaging(aapt)携带应用的资源文件,例如 AndroidManifest.xml 文件和 Activities 的 XML 文件,并且进行编译。
  • aidl 工具转化所有的 .aidl 接口成为 Java 接口。
  • 所有的 Java’ 代码,包括 R.java.aidl 文件,被 Java 编译器编译成 .class 文件
  • dex 工具转化 .class 文件成 Dalvik 字节码。任何的第三方库和模块构建后包含的 ‘.class’ 也被转化成 .dex 文件,然后打包成最终的 .apk 文件。
  • 所有无法编译的资源(比如图片),编译好的资源,还有 .dex 文件会被送往 apkbuilder 工具,打包成 .apk 文件。
  • 一旦 .apk 文件生成,准备安装到设备上时,必须用 debug 或 release 模式的 key 进行签名。
  • 最终,如果应用以 release 模式进行签名,必须使用 zipalign 工具调整 .apk。调整后的 .apk 能够在设备运行的时候降低了内存的使用。

注意:应用的方法数量限制在 64K 以下。如果应用达到这个限制,构建过程会输出以下的错误信息:

Unable to execute dex: method ID not in [0, 0xffff]: 65536.

为了避免这种错误,需要阅读 Building Apps with Over 65K Methods

Build 输出

构建生成的 APK 在 app/build 文件夹:app/build/outputs/apk/ 目录包含一些被命名成 app-<flavor>-<buildtype>.apk;例如,app-full-release.apkapp-demo-debug.apk