Android Gradle 构建入门1-Groovy

作者: shawn_yy | 来源:发表于2017-06-19 10:30 被阅读62次

    Android Gradle 构建入门1-Groovy
    Android Gradle 构建入门2-Gradle
    demo源码

    从事Android开发也有很长一段时间了,最开始的时候,还没有Studio这个东西,那是构建APK都是交给ANT的。Studio发布以后,我也是一个对新东西比较喜欢研究的,用了Studio的就爱上它了。最初从Eclipse切换到Studio肯定会有不适应的,特别是它的Gradle构建,不了解的人肯定是一头蒙逼啊。所以就想充分了解一下Gradle,顺便给自己做一个笔记,便于以后查看。

    Groovy

    Gradle的是以来Groovy语言的,所以想要更好的了解Gradle构建,还是需要了解这个Groovy语言的。Groovy语言有自己的语言风格,但是他有一个很强大的地方可以和Java语言兼容,你在gradle里面写Java语法也是可以的。有一段官方介绍:

    Apache Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform aimed at improving developer productivity thanks to a concise, familiar and easy to learn syntax. It integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional programming.


    译文: Apache Groovy是一种功能强大的可选的类型化动态 语言,具有静态类型和静态编译功能,适用于Java平台,旨在通过简明易懂且易于学习的语法来提高开发人员的生产力。它与任何Java程序平滑地集成,并立即向您的应用程序提供强大的功能,包括脚本功能,特定于语言的语言创作,运行时和编译时元编程功能编程。
    但是了解一下Groovy的语法还是很有必要的。不要紧张,这个语言其实很很很简单。


    大白话: Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。
    Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。

    只了解Java的可能对 闭包 这个名词不是很了解,先不要管它。

    数据类型

    Groovy提供多种内置数据类型。以下是在Groovy中定义的数据类型的列表

    • byte -这是用来表示字节值。例如2。
    • short -这是用来表示一个短整型。例如10。
    • int -这是用来表示整数。例如1234。
    • long -这是用来表示一个长整型。例如10000090。
    • float -这是用来表示32位浮点数。例如12.34。
    • double -这是用来表示64位浮点数,这些数字是有时可能需要的更长的十进制数表示。例如12.3456565。
    • char -这定义了单个字符文字。例如“A”。
    • Boolean -这表示一个布尔值,可以是true或false。
    • String -这些是以字符串的形式表示的文本。例如,“Hello World”的。
    • 对于Java的对象的数据类型也是支持的。例如 java.lang.Integer。

    定义变量

    //定义变量
    task defSimple{
        doLast{
            def i = 1
            def str1 = " def adb"
            def c = 'c'
    
            //java 语法
            int m = 998
            String s = "java string"
    
            println " i = "+i +" str1 = "+str1
            println " m = "+m +" s = "+s
        }
    }
    

    结果:



    集合

    task collectionSimple{
        doLast{
            //List
            def arr = ["1" , "2" , "3"];
            arr.add("4")
            arr[0] = 10;
            println arr
            println arr[1]
    
            //映射 (map)
            def map = ["key1":"value1" , "key2":"value2"]
            map.put("key3","value3");
            map["key1"] = "value_modify"
            println map
            println map["key2"]
        }
    }
    

    结果:



    流程控制语句

    主要说一下for循环吧,其他的基本大同小异

    task controlSimple{
        doLast{
            def arr = ["1" , "2" , "3"];
            def map = ["key1":"value1" , "key2":"value2"]
            //fori
            for (int i = 0; i < arr.size(); i++) {
                println "arr[i]="+arr[i]
            }
    
            for ( i in 0..<arr.size()){
                println "..第几个="+i
            }
            for ( i in 0..arr.size()){
                println "..第几个="+i
            }
    
            //forin
            for (e in arr){
                println "arr ele="+e
            }
            for (e in map){
                println "map key="+e.getKey() + " value = " +e.getValue()
            }
             //each遍历
             map.each {e->
                    println "each map key="+e.getKey() + " value = " +e.getValue()
            }
        }
    }
    

    结果



    方法

    def method1(str1, str2){
       println("str1="+str1 + " str2="+str2)
    }
    
    task methodSimple{
       doLast{
           method1("1" , "2")
           //括号可以省略
           method1 "3" , "4"
       }
    }
    

    结果:


    以上是一些Groovy的基础语法,Gradle构建不需要对这个语言了解很深,知道怎用看就行了。但是闭包这个东西是一定要弄明白的。

    闭包

    闭包和Java的内部类的概念很像,但又不同。可以把它当作数据类型来看待。

    def closureMethod(c){
        c "closureMethod "
    }
    
    task closureSimple{
        doLast{
    
            //定义
            def closure = {
                println "my closure";
            }
            //调用
            closure()
            //call调用
            closure.call()
    
            def closureParam = {param->
                println("param ="+param);
            }
            closureParam("hello")
    
            //隐式的参数 it
            def closure2 = {
                println "param = " +it;
            }
            closure2("hello world")
    
            //当作方法的值传入
            closureMethod closure2
    
            //这样眼熟不?
            closureMethod{
                println "hello world"
            }
        }
    }
    

    现在来看doLast这个方法的含义,其实写完整应该是这样,
    doLast传入的一个闭包当作参数。

    task closureSimple{
        doLast({
            ...
        })
    

    结果:


    先记到这么多吧,掌握这些在看Gradle也足够了,毕竟构建Android才是重点。

    相关文章

      网友评论

        本文标题:Android Gradle 构建入门1-Groovy

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