美文网首页
Gradle随记---伊始

Gradle随记---伊始

作者: Kael_Huang | 来源:发表于2019-01-01 19:29 被阅读0次

前言

Gradle对于android开发来说既熟悉也陌生,熟悉在于gradle已经成为android studio的默认构建工具,我们需要在build.gradle等配置文件中通过闭包申明来进行各种构建配置,而陌生在于gradle的另外一重身份,也就是编译编程框架,对于大多数开发者来说鲜于接触甚至一无所知。
因此会在接踵而至的随记中对gradle编译编程涉及最常用同时也最为重要的几个部分project,task,plugin,publish以及process来进行逐步解析,一起来对gradle的编译过程一窥究竟。

语言

正所谓工欲善其事必先利其器,在开始理解gradle前必须先了解其支持的语言,最常用的就是Java,Groovy以及Kotlin。

语法

推荐用Groovy和kotlin,kotlin实际上是Groovy的升级版,因为这两种语言会更加的简洁并且支持闭包,同时很多流行的插件也是由这两种语言来进行开发,这样以后会更便于对其源码的阅读。
这两种语言优点在于扩展了很多高阶函数比如find,any,count,drop等,这是DefaultGroovyMethods默认提供的,另外IO操作会更加简洁明了,而这是ResourceGroovyMethods提供。

file.eachLine { println "${it}"}

outFile.withOutputStream { output ->
    inFile.withInputStream { input ->
        output << input
    }
 }

闭包

闭包实际是一个可以接收参数输入,同时有结果输出的匿名代码块,每一个闭包就是一个Closure对象。
语法:{ [closureParameters -> ] statements }
我们着重来说明怎么调用gradle函数中的闭包,例如org.gradle.api.project中定义的一个函数

void subprojects(Closure var1)

我们怎么去得知这个Closure是需要传入什么参数同时输出结果是什么?很简单,在gradle中每一个闭包函数都会对应一个普通函数,因此上述闭包函数对应的就是

void subprojects(Action<? super Project> var1)

其中,Action对应的是

@HasImplicitReceiver
public interface Action<T> {
    void execute(T var1);
}

那可以清晰从中得知此Closure是一个传入参数为Project对象,返回是void的闭包。
这里语法不再做进一步细说了,Groovy和Kotlin可以自行去各自的官网学习,当然也可以就纯粹用Java进行开发,Java和Groovy以及Kotlin是无缝兼容的,因为最后都是编译成class字节码进行类装载。

开发环境

开发环境可以用android推荐的IDE(Android Studio)进行开发。这里需要说明的是,AS下载不了gradle对应的源码下来,这对于后续开发来说是一件很头疼的事情,当然也有解决的办法。

  1. maven仓库根据com.android.tools.build:gradle查找对应版本的source-jar包,下载拷贝到对应gradle-api.jar所在的目录下
  2. Gradle Releases官网下载对应的complete版本

个人推荐第二种方式,因为complete版本包含了所有源码的同时,并且包含User Manual, API Javadoc,Dsl Reference。下载解压后,通过AS的Choose Sources打开对应的源码目录。

gradle源码选择

好了,Gradle开发的前提工作都已准备完毕,下节会进入到gradle编译的世界,从Project开始一步一步揭开迷雾。

相关文章

  • Gradle随记---伊始

    前言 Gradle对于android开发来说既熟悉也陌生,熟悉在于gradle已经成为android studio...

  • 病中随记(20180113)

    病中随记 文/愚牛侠 新年伊始,西安便格外...

  • Gradle随记---初识

    谈起Gradle开发,自然就需要先从最基础的两个配置文件build.gradle以及settings.gradle...

  • Gradle随记---渐入

    这章来说说Gradle中最重要的编译执行载体task,它实质是一系列Action的集合,其中最为重要的是七个属性和...

  • Gradle随记---洞悉

    Gradle作为编译工具,理所当然也要谈谈publish这块。Gradle提供了两种发布方式,分别是ivy和mav...

  • Gradle随记---深掘

    谈到Gradle开发,相信很多人第一反应就是开发Gadle Plugin。这倒也没错,plugin是Gradle提...

  • Android gradle相关 随记

    1.在module的build.gradle中配置以下代码,就会将对应的文件夹以assrets/res/jni文件...

  • 2022-09-25

    随记

  • 测试,随记

    测试,随记

  • 海上

    邮轮随记

网友评论

      本文标题:Gradle随记---伊始

      本文链接:https://www.haomeiwen.com/subject/gkdilqtx.html