美文网首页
android app 最新的标准构建环境 gradle 使用简

android app 最新的标准构建环境 gradle 使用简

作者: 江风凌晓 | 来源:发表于2016-12-24 15:37 被阅读33次

gradle 是什么?

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。

Groovy:Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。关于groovy语言的api http://www.groovy-lang.org/api.html

领域特定语言(DSL):不同于普通的跨领域通用计算机语言(GPL),领域特定语言只用在某些特定的领域。 比如用来显示网页的HTML语言,以及Emacs所使用的Emac LISP语言。代表语言Gradle

构建:最早的构建工具makefile, android ndk 使用的Android.mk 就是一种makefile。在gradle之前,java常用的构建工具是ant 和 maven,都是基于xml做配置。gradle算是比它们更进一步,它的配置使用领域特定语言。比如android{} signingConfigs{} buildTypes{} productFlavors{} dependencies{}都是领域特定语言。android都有哪些领域特定语言。可以上这个网站,有详细的介绍http://tools.android.com/tech-docs/new-build-system/user-guide

如何开始使用gradle

Gradle的官网:http://gradle.org/

两种方式

  1. 下载gradle到本地 配置环境变量
  2. 使用gradlew(gradlewrapper) Gradlew是包装器,自动下载包装里定义好的gradle版本,保证编译环境统一,即使本地不安装gradle,也可以使用gradle进行编译,使用gradle-wrapper.properties指定gradle版本,第一次编译时会自动下载指定的版本

gradle 是一个构建工具,是一种语言(领域特定语言),也是一种可编程的框架
gradle 中每一个待编译的工程都是一个project,每一个project中都包含多个task,我们可以使用 gradle tasks 列出project中包含多所有task。

gradle project

一个 gradle 构建环境可以包含多个project,每个project 中有一个build.gradle。如果有多个project,那么在根project中会有一个settings.gradle告诉gradle 有多少个project,当然,根project也会有一个build.gradle。我们在编写构建脚本的时候,其实是在操作project这个领域对象

比如我们可以定义一个task显示所有project的名字

allprojects {
    task allTask << {
        println project.name
    }
}

我们也可以使用gradle的命令查看工程信息 gradle projects

gradle task

Task是Gradle中的一种数据类型,它代表了一些要执行或者要干的工作。不同的插件可以添加不同的Task。每一个Task都需要和一个Project关联。

我们可以通过命令 gradle tasks 查看工程中所有的task

定义task的方式

task myTest1 << {
    println '测试1'
}

task myTest3 {
    doLast {
        println '测试3'}
}

task myTest4 {
    doFirst {
        println 'doFirst 测试4'}
    doLast {
        println 'doFirst 测试4'}
}

task type

task makeJar(type: Copy) {
    delete "build/libs/${jarName}"
    from('build/intermediates/bundles/release/')
    into('build/libs/')
    include('classes.jar')
    rename('classes.jar', jarName)
}

gradle task 依赖

task hello << {
    println 'Hello world!'
}
task intro(dependsOn: hello) << {
    println "I'm Gradle" 
}

依赖的执行顺序,先执行 hello 后执行 intro

android gradle DSL

https://developer.android.com/studio/build/index.html

相关文章

网友评论

      本文标题:android app 最新的标准构建环境 gradle 使用简

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