美文网首页Android studioandroid技术专栏Android开发
小码哥Android培训-Gradle 入门到精通(一)

小码哥Android培训-Gradle 入门到精通(一)

作者: 3128bf1f3c4e | 来源:发表于2017-09-09 09:59 被阅读48次

    前言

    Gradle详解内容将分篇介绍,这里首先介绍Gradle的基础知识和项目结构。

    1 Gradle 安装

    gradle的网站是http://gradle.org/。我们可以通过相关的网站获取到相应的gradle的版本。也可以在这个网站上面获取相应的资料。

    1.1 下载相应的版本

    https://gradle.org/releases

    在上面的网站下载最新gradle的版本

    1.2 配置

    将下载的文档解压,解压完成后,将路径添加到系统变量Path内部。

    1.3 校验安装

    在命令行下输入

    1.gradle-v

    如果有相对应的输出代表安装成功

    2 Groovy语法入门

    2.1 why Groovy?

    为什么我们学习gradle需要学习groovy? groovy是google推出的一款基于java的脚本语言。只要简单几句代码就可以完成java程序。虽然groovy看起来是脚本编程语言,但是究其更本也是运行在jvm上面的java语言,知识groovy对java进行了二层的封装。因为这个语言的灵活性,gradle选择了groovy。

    2.2 helloWorld

    让我们使用最简单的helloWorld代码来入门。首先要确保gradle安装正确,安装正确后,我们新建一个文件夹,在这个文件夹内部新建一个build.gradle文件。

    1.println("Hello World!");

    接着我们在命令行执行gradle 后就可以看到相应的结果了。

    2.3 基础语法

    1.defa=1

    2.defb="abc"

    3.definta

    上面是gradle如何定义一个变量的写法。注意gradle没有要求每行必须以;结尾,一行就是一句代码

    1.defoneMeathod(arg1){

    2.

    3.}

    4.

    5.inttwoMeathod(arg1,arg2){

    6.arg1+arg2

    7.}

    上面是定义方法的写法,如果是无返回的方法。需使用def定义。如果指定了相应的返回类型的话,可不使用def关键字。

    注意如果有返回值的话,需在最后一行将需要返回的值返回。

    2.4 字符串

    1.defa='huangkai'

    2.defb="i am $a"

    3.deflines=''' abc

    4.

    5.

    6.abc

    7.

    8.end '''

    字符串有三种格式

    ·‘’ 代表完全按照符号内部的内容

    ·“” 如果内部有$变量值的话,先取变量值

    ·‘’’ ‘’’代表文本支持换行

    2.5 容器类型

    在Java里提供了多种的容器类型,常见的有List Map Set。他们分别适合不同场景。为不同需求提供解决能力。在grrovy内部也提供了对应的容器类型。

    以下内容不用死记硬背,学会查询即可

    http://docs.groovy-lang.org/latest/html/groovy-jdk/

    2.5.1 List

    与Java数组类型相似,与java不一样的,Java需要类型相同的对象。可以理解为定义了一个ArrayList

    1.defa=["a",5,6]

    上面是定义的方法。

    可以在上面的网站查询到list提供的方法

    1.defa=[5,'string',true]

    2.

    3.println(a.getAt(2));

    2.5.2 Map

    与java中的map类似,map提供的键值对的能力。

    1.defmap=["a":100,"b":200]

    定义map的方法,key:vaule key必须为字符串 value可以为任何值。 多个值之间使用,分开

    简单的使用map

    1.defmap=["a":100,"b":200]

    2.

    3.println(map.getAt("b"));

    2.6 闭包(Closure)

    2.6.1 闭包的定义

    我们在Java开发中经常使用下面的代码

    1.image=(ImageView)findViewById(R.id.imageView);

    2.image.setOnClickListener(newView.OnClickListener(){

    3.@Override

    4.publicvoidonClick(Viewv){

    5.

    6.}

    7.});

    这个代码是android里面最常见的代码。为一个ImageView设置了一个点击的回调,回调的意思就是设置一个对象给另外一个对象,当被设置的对象发生某种变化后会触发设置对象的方法。

    闭包是groovy里面的特殊语法,我们在很多文件都可以看到闭包的身影。闭包是类似回调的一个代码块。因为groovy是脚本语言,所以有很多约定的写法,下面我们来看看闭包是如何定义与书写的。

    1.defaClosure={

    2.println("helloWorld");

    3.}

    这个就是最简单的一个闭包,看样子是不是比较像一个方法。

    带参数的闭包,

    1.defxxx={a,b->

    2.

    3.println(a);

    4.println(b);

    5.

    6.}

    -> 符号前代表输入的参数,可以不使用类型

    带默认参数的闭包

    1.defxxx={

    2.println(it);

    3.}

    每个闭包在定义的时候都带了一个默认的参数,这个参数的名称叫it。我们可以直接获取他不需要定义。以上闭包的几种定义的方式。

    2.6.2 闭包的使用

    在上面的章节我们学习了怎么定义闭包,下面我们来学习一下怎么使用闭包。

    闭包的使用通常有两种:

    ·1 直接用,我们把闭包当做一个函数使用。

    ·2 作为一个参数使用,我们把闭包作为一个回调使用。

    1 作为一个函数使用

    1.defabc={time,name->

    2.

    3.println(time);

    4.

    5.println(name);

    6.

    7.}

    8.

    9.abc.call(100,"huangkai");

    10.

    11.

    12.defxxx={

    13.println(it);

    14.}

    15.

    16.xxx.call(10086)

    上面定义了两个闭包,每个闭包的调用方法都是使用call()方法,注意call方法的参数

    2 作为参数

    1.Listeach(Closureclosure)

    list定义了一个方法,这个方法是遍历list的方法,方法接收一个参数,参数的类型就是一个闭包。

    1.defa=[5,'string',true]

    2.

    3.defb={

    4.println(it);

    5.}

    6.

    7.a.each(b);

    上面的例子就是怎么把一个闭包作为参数传递给一个方法

    4 创建一个简单的Gradle项目

    为了让大家能够理解gradle的项目的结构,我们来创建一个最简单的gradle项目来理解Gradle的项目结构。

    1 创建一个文件夹作为工程目录

    2 在这个目录内新建一个build.gradle文件

    3 编写build.gradle文件,在文件内加入这个一句话。

    1.task wrapper(type:Wrapper){

    2.gradleVersion='2.0'

    3.}

    这句话的意思就是,为当前项目创建一个wrapper包,使用的gradle版本是2.0

    4 在命令行下进入当前的工程目录,执行以下命令

    1.gradle wrapper

    5 执行成功后,工程目录下生成

    wrapper文件是让项目在没有安装gradle的情况下能够使用gradle

    gradlew 与 gradlew.bat 是在不同平台下面使用的文档。

    6 gradle-wrapper.properties

    7 在gradle-wrapper.properties文件中修改成

    distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

    8 使用android studio加载这个项目

    9 在build.gradle 文件中添加一句脚本,接着打开终端标签页面

    10 在终端中输入./gradlew命令,最后gradle的文件就会编译完成

    5 默认的项目结构

    上面的例子我们学习了gradle的基本结构,我们知道了wrapper等文件的作用,下面我们来看看android studio创建的项目结构。

    这个目录结构是比较常见的android项目结构,这个多项目结构(Multi project),什么叫多项目结构,意味着项目是由多个子项目组成的,每个子项目都有自己的构建文件(build.gradle)最后由Gradle将多个子项目整合。进而完成项目的构建。

    我们看看上图,上图就是最经典的项目结构。

    ·app 、app2 : 业务代码

    ·library : 代码库

    ·build.gradle :项目的总的build文件

    ·setting.gradle: 项目会构建的模块

    ·gradle : gradle的jar包与配置文件

    ·gradlew : gradle的跨平台执行文件

    上图是我们项目的默认的目录结构。

    有的时候我们需要自定义一些项目结构,如下图

    上图的项目结构就是典型的eclipse项目的结构,我要做就是以下几步:

    ·1 创建一个目录

    ·2 修改项目根目录下settings.gradle,在后面将目录的名称添加到文件中 如下图

    ·3 在目录下创建一个build.gradle文件

    ·4 修改build.gradle文件,添加sourceSets支持 如下图

    1.sourceSets{

    2.main{

    3.manifest.srcFile'AndroidManifest.xml'

    4.java.srcDirs=['src']

    5.jniLibs.srcDirs=['libs']

    6.aidl.srcDirs=['src']

    7.renderscript.srcDirs=['src']

    8.res.srcDirs=['res']

    9.assets.srcDirs=['assets']

    10.}

    11.androidTest.setRoot('tests')

    12.}

    未完待续…

    �� �P��M���%�

    相关文章

      网友评论

      本文标题:小码哥Android培训-Gradle 入门到精通(一)

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