« 主页

安卓项目编译

版权声明:眯眼探云原创,可随意转载,请保留该版权声明及链接:https://tyun.fun/post/08.android-gradle-build/

现在安卓项目基本都使用 gradle 来进行编译打包。但是对很多安卓研发来说,本来在 IDE 里面点一下【运行】按钮这么简单的事情,突然一下就变的这么复杂,真是一个充满恶意的世界啊。

这篇博客的主要目的,就是把相关的主要知识点归纳出来,希望能给那些有兴趣对此深入学习的同学一些线索,在学习的时候不至于摸不着头脑。但由于相关知识的确比较多,因此,本文就仅限于给出一些线索:主要是知识的概要,以及一些关键信息的网址。

Gradle 是啥

Gradle 是一个自动化编译工具。要知道,我们在 Android Studio 中按下【运行】这个按钮的时候,实际上是有非常多的事情发生的。编译打包其实有很多个环节。自动化编译工具就是为了让我们可以按下一个按钮,然后就自动化的执行一系列操作,最后,嘿,就出来一个娃儿……出来一个apk。

在早一些的时候,常用的自动化的编译工具有 Ant,Maven,但他们都有一些缺陷和限制。于是乎,Gradle 横空出世,功能强大,易于使用(虽然我一直觉得它有点慢)。

Gradle 的一大优势就是其易读的配置脚本,我们最常打交道的部分就是这个配置脚本了。但是,在不具备相关知识之前,这个脚本其实并不【简单易读】。所以,我们需要了解一些与其相关的知识。

Gradle Wrapper

Gradle 这个编译工具本身现在也是在不断的进化中,为了让编译的结果尽可能的稳定,gradle 使用一种叫 gradle wrapper 的方式来让项目指定 gradle 的版本,并且在系统中没有这个版本的时候就自动去下载。这样就可以避免了不同的系统中可能装的不是相同版本的 gradle 而导致编译出问题的情况。

Gradle 命令行

虽然 gradle 编译已经和 IDE 集成的非常好,在 Android Studio 中按一个按钮就可以完成编译。但是,如果能熟悉 gradle 的命令行使用方式的话,在很多时候,不用打开 IDE 就能完成许多工作,还是非常方便的哦。而且 IDE 有个非常讨厌的问题就是,gradle 任务一旦运行起来,是无法取消的,你只能等,或者把 IDE 强制杀掉。在命令行中的话,你就可以直接 ctrl + c 结束掉当前的编译。

Groovy 语言

Groovy 语言也是一种运行于 JVM 的语言。而它有个特点,就是可以以脚本的方式进行使用。没错,Gradle 的配置脚本,就是 Groovy 语言脚本。这种使用方式,也被称为领域特定语言(DSL domain-specific language)。

基本语法

首先,当然要了解一下 groovy 语言的基本语法,官方都有详细的介绍 。大部分基本的东西和 Java 是类似的,所以作为一个 Java 写手,应该还是比较容易看懂的。

作为 DSL 的使用

接下来要了解一下 Groovy 作为 DSL 的使用方式 。其实主要就是语言的语法格式有所简化。

lamda 表达式

还有一点要提一下的就是,如果你对 lamda 表达式不熟,那还是应该看一下官方文档哦,这样遇到别人写的 lamda 就不怕读不懂了。

如果对精通 groovy 没什么兴趣(就像我一样),上面的内容简单看一下,并不会花掉多少时间。但是我们实际在修改安卓项目中 build.gradle 配置的时候,最大的困难往往不是 groovy 本身,而是 android gradle dsl。

Android Gradle DSL

什么是 DSL,领域特定语言呢?说简单点,就是为了解决特定问题,应用范围特别明确的语言。比如在 build.gradle 中,groovy 就是作为 DSL,专门来描述我们的项目 build 该如何进行。那到底怎么来描述呢?安卓项目自动生成的模板里面内容非常少,而且也很难找到说明。还好,Google 其实是有给一个详细说明

实践

花点时间了解一下理论后,接下来最重要的就是实践了。可以去看看别人的 gradle 脚本是如何写的,然后根据学会的理论知识来分析和理解这些 gradle 脚本,最终能够掌握这个技能。