gradle初识

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文目录 1.Gradle概述 2.下载、环境变量配置 3.Idea构建Gradle项目 4.使用Gradle进行...
    Aimerwhy阅读 4,470评论 0 4
  • Android Studio正式版早已经发布了,默认使用Gradle构建,GitHub上80%的Android项目...
    流哲羽阅读 7,998评论 1 13
  • 前言 为什么需要学Gradle? Gradle 是 Android 现在主流的编译工具,虽然在Gradle 出现之...
    真笨笨鱼阅读 5,420评论 0 0
  • 西风来劝凉云去,天东放开金镜。照野霜凝,入河桂湿,一一冰壶相映。殊方路永。更分破秋光,尽成悲镜。有客踌躇,古庭空自...
    傲若水阅读 2,839评论 0 0
  • 原文地址:http://m.blog.csdn.net/csshuke/article/details/74909...
    最后一个前锋阅读 31,089评论 3 33

友情链接更多精彩内容