gradle初识

作者: 太白新星 | 来源:发表于2019-06-04 20:14 被阅读2次

android studio使用了gradle来自动执行和管理构建流程,gradle很灵活,除了使用基础的gradle闭包外,还可以自定义plugin。以下记录了gradle的初步使用。

1.mac命令行使用gradle

gradle需要且仅需要安装java运行环境,因为Android studio安装包自带了一个版本的gradle,在我的电脑上只需要把其加入系统变量即可.

studio自带的gradle可以在android studio右键-显示包内容中找到,找到后将其配置到环境变量的path目录即可。

⁨Android Studio.app⁩ ▸ ⁨Contents⁩ ▸ ⁨gradle⁩ ▸ ⁨gradle-5.1.1⁩

export PATH=$PATH:Applications/Android\ Studio.app/Contents/gradle/gradle-5.1.1

命令行输入gradle -v能够显示gradle信息表示表示命令行gradle一切就绪。

官网安装教程

2.gradle wrapper使用

加一个这个wrapper的作用是明确构建的gradle版本,wrapper中明确说明了所用的gradle版本,如果在

.gradle/wrapper/dists下没有找到对应版本的gradle则会先下载再构建。

gradle wrapper在studio中是自己生成的,所用的gradle版本是Android studio内置的版本。AS的gradle视图下显示了gradle內建的很多task,可以在assembleRelease task右击run来构建release版的依赖库。

AS和gradle版本对应 AS gradle视图

如果不依赖AS,需要生成wrapper的话,则需要执行gradle wrapper命令,并且可选性的指定--gradle-version--distribution-type,执行完后会生成如下结构目录,其中gradlew命令和环境变量中的gradle除版本可能不一样外,其它作用完全一样。在mac下需要使用./gradlew而非gradlew

├── build.gradle
├── settings.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
└── gradlew.bat

gradle wrapper官方详细介绍

3.build scans使用

build scans是用来生成详细的构建报告的,包括了主机信息、build的日志、构建每步耗时等详细信息,方便自己分析耗时点,或者用于向别人提问时附带的报告。这个功能有网页版和产品版,网页版免费,产品版收费。

使用起来非常简单,在项目根目录下执行:

 ./gradlew build --scan

然后输入yes同意条款,等待网址出现,复制到浏览器,输入接收结果的邮箱,进邮箱查看即可。此外build scans还支持添加自定义的项,详细手册请参考官网介绍。

build scans官网示例图

build scans官方介绍

4.自定义task

gradle中Task有Type的概念,每一个特定的Type都有特定的属性和方法,按照我的理解,指定Task为一种type类似于java中类继承,就可以用该Type下的所有字段和方法了。

命令行中可以使用gradle tasks查看所有的task列表,在AS中可以在gradle视图中直接可视化找到特定task。

Task闭包本身就有属性和方法,常见的属性有dependsOn、name、path等,常见的方法有

doFirst、doLast、finalizedBy(paths)等,doFirst表示task执行前执行,doLast表示执行后执行,finalizedBy我理解为将其它任务加入到该任务末尾执行(添加多个任务的haul,执行顺序和书写顺序无关,默认是alpha字母从小到大优先执行),三者顺序为doFirst-finalizedBy-doLast。Project闭包的afterEvaluate表示gradle配置完成的回调监听,配置完成后表示可以执行task了。

以下假设A、B、C为Base库的三个独立的可选功能模块,现在自定义task将ABC和Base三个moudle打包release版本的aar出来,并复制到releaseAar目录里。

task buildAar(dependsOn: [':Base:assembleRelease']) {
    //声明顺序不代表执行顺序,默认是alpha字母从小到大执行
    finalizedBy ':C:assembleRelease', ':B:assembleRelease', ':A:assembleRelease'
}

task buildSdk(type: Copy, dependsOn: buildAar) {
    from('A/build/outputs/aar') {
        include '*-release.aar'
    }
    from('B/build/outputs/aar') {
        include '*-release.aar'
    }
    from('C/build/outputs/aar') {
        include '*-release.aar'
    }
    from('Base/build/outputs/aar') {
        include '*-release.aar'
    }
    into 'releaseAar'
    doLast {
        println("sdk构建完成->${destinationDir}")
    }

}

Task的官方介绍

参考资料:

gradle脚本官方指导大全

任玉刚的gradle csdn

相关文章

  • Gradle初识

    本文目录 1.Gradle概述 2.下载、环境变量配置 3.Idea构建Gradle项目 4.使用Gradle进行...

  • 初识gradle

    安装 虽然还不知道这是个什么东西,不管如何,我们先给他安装一遍(程序员要有这种大无畏的精神)本渣还是windows...

  • gradle 初识

    gradle Gradle 是一个基于 Ant 和 Maven 概念的项目自动化构建工具 。 与 Ant 和 Ma...

  • 初识Gradle

    在AS流行的今天,许多人已经转向这个平台开发android了。当然,我也是。AS固然好用,但对熟悉了eclipse...

  • gradle初识

    android studio使用了gradle来自动执行和管理构建流程,gradle很灵活,除了使用基础的grad...

  • Android 基础概念初识

    一、Gradle初识 Gradle 是 Android Studio 的内置版本选项。因此 Android 中具有...

  • build.gradle文件使用

    导读 1、初识build.gradle 2、使用build.gradle文件 3、settings.gradl...

  • 【Gradle深入浅出】——Gradle基础概念

    系列目录 1.【Gradle深入浅出】——初识Gradle[https://www.jianshu.com/p/8...

  • 【Gradle深入浅出】——Gradle配置(一)

    系列目录 1.【Gradle深入浅出】——初识Gradle[https://www.jianshu.com/p/8...

  • 【Gradle深入浅出】——Gralde配置(二)

    系列目录 1.【Gradle深入浅出】——初识Gradle[https://www.jianshu.com/p/8...

网友评论

    本文标题:gradle初识

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