Gradle in Android Studio (1) - 构建系统概述

#构建系统概述

Android构建系统是用于构建,测试,运行和打包app的工具包。构建系统可以集成到Android Studio菜单中,也可以单独使用命令行运行。构建系统的特点:

  • 自定义,配置和扩展构建过程;
  • 为同一个project或者moudles,创建多个不同的APP;
  • 重用代码和资源。

原文地址

转载请注明出处 : https://blog.csdn.net/hpu_zyh/article/details/48447081
博客主页 | 简书 | 知乎 | 微博 | github

##构建过程
构建.apk文件的过程涉及到许多工具,并且产生一些中间文件。如果您正在使用Android Studio,每次执行你的project或者moduleGradle build task 都可以看到完整的构建过程。构建过程是非常灵活的,大部分的构建过程都是可配置和可扩展的。下图描述了构建过程中涉及的一些工具和构建流程:
这里写图片描述

一个典型的构建过程的一般如上图所示。构建系统读取配置的product flavors build types dependencies,然后合并所有的资源。如果不同的文件夹中包含相同的资源名称或设置,下面覆盖的优先顺序是:dependencies覆盖build typesbuild types覆盖product flavorsproduct flavors覆盖源代码目录

  • Android的资产打包工具(AAPT)把你的应用程序资源文件进行编译,如AndroidManifest.xml文件和一些XML文件R.java文件是由你的Java代码中引用的资源自动生成的。
  • aidl工具,将.aidl接口转换成Java接口
  • 所有的Java代码,包括R.java.aidl文件,由Java编译器编译成.class文件
  • DEX工具转换.class文件的Dalvik字节码。使用的第三方库.class文件也被转换成.dex文件,以便它们可以被打包成最终的.apk文件
  • 所有非编译资源(如图片),已编译的资源,以及.dex文件被发送到apkbuilder工具打包成一个apk文件。
  • 一旦apk文件生成,它在安装之前需要使用debug或者release key进行签名 。
  • 最后,应用程序被签名后,使用zipalign工具压缩.apk文件, 减少最终的.apk所占空间

    注:应用程序被限制在64K方法参考限值。如果您的应用程序达到此限制,构建过程输出以下错误信息:

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

为了避免这种错误,请参阅构建应用程序与在65K方法

##构建输出
构建生成APK每个 build variantapp/build文件夹app/build/outputs/apk/目录中包含一个名为app-<flavor>-<buildtype>.apk的 .apk文件;例如, app-full-release.apkapp-demo-debug.apk.