美文网首页
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