今天就开始学习Gradle构建了,听说很牛X。本篇内容就带领我初步窥探Gradle的世界。
 
  1.什么是Gradle
      相信之前都接触过用Ant或者Meavn进行项目的构建,两者各有千秋,Ant的灵活性,以及Meavn的强大依耐性都让它们在构建的世界里占据了一席之地。然而Ant的复杂配置以及Meavn的不灵活,都让程序猿们头疼万分。于是乎,新一代的构建黑马已悄然出世了,它就是Gradle。让我们欢迎它的到来!
      所以Gradle就是新的一种构建工具,只不过它不再使用XML来编写自己的构建脚本了区别了Ant和Meavn。使用了Google的另外一种脚本语言-Groovy。对于Groovy你可以暂时把它理解为强大而又精简的java。因为它就是JAVA,只不过是向上包装了,功能更强大了,语言更简练了。注意哦,Gradle是面向java项目的哦。
     对Gradle有了一个认识之后,接下来我们就开始初步接触Gradle。
 
  2.如何使用安装Gradle    Gradle的安装有两种方式,分别为静态安装和动态安装。动态安装一般在两种情况下使用,第一种普遍的在Eclipse以插件的形式出现用来构建Java项目,第二中则是出现在AndroidStudio中,我们知道Google全新打造的Android项目编辑器-AndroidStudio就是使用Gradle进行对Android项目的构建,在我们安装AS的时候,创建项目的时候,它会自动的下载安装Gradle,注意哦 这个过程可能需要越狱了,原因你懂的。下载完成后,Win平台会默认下载到 C:\Documents and Settings<用户名>.gradle\wrapper\dists 目录。你会看到这个目录下有个 gradle-x.xx-all 的文件夹, 如果下载实在太慢,但是又不想FQ的话,可以进行静态安装,自己手动到Gradle官网下载对应的版本,然后将下载的.zip文件(也可以解压)复制到上述的gradle-x.xx-all 文件夹下,不过还是建议让它直接下载的好。 
 
  3.初步了解Gradle
    现在呢,就让我们结合一个项目实例来了解了解。
 
 
 
     这是一个用AS创建的一个项目,我们可以看到大致的项目结构,具体的就不多说了,不了解的可以去看看AS的项目结构。上面有三处用红色框框标记出来了,我们来一个个说明下,第一个也是最重要的一部分,它是整个工程的主项目的Gradle配置。
 
 
 
  
 
   我们可以看到在这个默认配置中,首先是apply plugin这表示在Gradle中申请一个相关的插件,比如Android项目就是apply plugin 'android',java项目就是apply plugin 'java'.但是要注意哦在当前最新的AS版本(1.0)中,申请Android插件的写法改成如下所示。而后的android{}则是Android插件的持有语法,compileSdkVersion-当前编译Sdk的版本号,buildToolsVersion-buildTools版本号,这个需要你本地安装该版本才行,很多人导入新的第三方库,失败的原因之一是build version的版本不对,这个可以手动更改成你本地已有的版本或者打开 SDK Manager 去下载对应版本。applicationId代表当前应用的包名,这是最新的写法。buildTypes{}什么编译项目的模式,一般有release和debug模式,其中的minifyEnabled 表示是否支持混淆编译,下面的 proguandFiles 包括两部分,前面的是本地的混淆编译文件,注意用来进行混淆声明。这个文件的目录在 **/tools/proguard/proguard-android.txt** , 后一部分是我们项目里的自定义的混淆文件,目录就在 **app/proguard-rules.txt** , 如果你用Studio 1.0创建的新项目默认生成的文件名是 **proguard-rules.pro** , 这个名字没关系,在这个文件里你可以声明一些第三方依赖的一些混淆规则,具体混淆的语法也不是本篇博客讨论的范围。最终混淆的结果是这两部分文件共同作用的
  第二个红色标记部分,则是整个工程的Gradle配置。
 
 
  
 
  我们可以看到buildscript{},这是Gradle语法,表示构建脚本。其中的repositories 表示Gradle依赖的仓储,jcenter()是新一代的中央仓储可以理解为mavencentro的升级版,其依赖仓储还包括Ivy以及本地仓储。dependencies表示该Gradle的构建版本。
 
 
第三个红色标记的部分,表示工程的中项目的声明。
 
 
   
 
这里就表示,该工程中所有的项目,本工程中只有一个项目 :app,对于有些包含多个moudle的工程,则要在此处声明,比如 include ':app', ':XXXproject'  以此类推进行添加
 
  4.小总
 
经过以上学习,相信我们已经初步的了解的Gradle。如非要给Gradle加上一个标签,那Gradle就是Ant和maven优点的结合体,并在此基础上添加了自己的优点! 更多的学习,敬请期待!
  

Gradle学习系列(一)的更多相关文章

  1. Gradle学习系列之一——Gradle快速入门

    这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...

  2. Gradle学习系列之一——Gradle快速入门(转)

    这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...

  3. Gradle学习系列之九——自定义Task类型

    在本系列的上篇文章中,我们学习了多Project构建,在本篇文章中,我们将学到如何自定义Task类型. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...

  4. Gradle学习系列之三——读懂Gradle语法

    在本系列的上篇文章中,我们讲到了创建Task的多种方法,在本篇文章中,我们将学习如何读懂Gradle. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...

  5. Gradle学习系列(三)

    上一篇我们已经学习了 Gradle 打包,那么这一节 就开始讲讲本章的第二版块:打包及使用Gradle过程中的常见错误问题. 有时候我们需要编辑一个开源项目之类的,希望把它导入了我们自己的IDE工具中 ...

  6. Gradle学习系列之十——自定义Plugin(本系列完)

    在本系列的上篇文章中,我们讲到了如何自定义Task类型,在本篇文章中,我们将讲到如何自定义Plugin. 请通过以下方式下载本系列文章的Github示例代码: git clone https://gi ...

  7. Gradle学习系列之八——构建多个Project

    在本系列的上篇文章中,我们讲到了Gradle的依赖管理,在本篇文章中,我们将讲到如何构建多个Project. 请通过以下方式下载本系列文章的Github示例代码: git clone https:// ...

  8. Gradle学习系列之七——依赖管理

    在本系列的上篇文章中,我们讲到了如何使用java Plugin,在本篇文章中,我们将讲到Gradle的依赖管理. 请通过以下方式下载本系列文章的Github示例代码: git clone https: ...

  9. Gradle学习系列之六——使用Java Plugin

    在本系列的上篇文章中,我们讲到了如何自定义Property,在本篇文章中,我们将讲到如何使用java Plugin. 请通过以下方式下载本系列文章的Github示例代码: git clone http ...

  10. Gradle学习系列之五——自定义Property

    在本系列的上篇文章中,我们讲到了增量式构建,在本篇文章中,我们将讲到如何自定义Project的Property. 请通过以下方式下载本系列文章的Github示例代码: git clone https: ...

随机推荐

  1. js弹出图片原图效果

    1.将js方法独立出来common.js function openwin(src){ var basePath = document.getElementById("basePath&qu ...

  2. Static、final、abstract、接口、构造方法及java语法总结

    Static:定义类的时候一般不用static来修饰,在一定意义上,用static修饰的字段可以作为全局变量,static修饰的字段和方法存储在类的内存区域,所有实例共享.static字段和方法都是属 ...

  3. 异步等待的 Python 协程

    现在 Python 已经支持用协程进行异步处理.但最近有建议称添加协程以全面完善 Python 的语言结构,而不是像现在这样把他们作为生成器的一个类型.此外,两个新的关键字---异步(async)和等 ...

  4. jQuery对象和javascript对象互换

    jquery变js var obj=$("dom"); 或 var obj=jQuery("dom"); js 变 jquery var $jobj=$(obj ...

  5. acdream1116 Gao the string!(扩展KMP)

    今天是字符串填坑的一天,首先填的第一个坑是扩展KMP.总结一下KMP和扩展KMP的区别. 在这里s是主串,t是模式串. KMP可以求出的是以s[i]为结尾的串和 t前缀匹配的最长的长度.假如这个长度是 ...

  6. ExtJs布局之Column

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  7. zoj 3057 Beans Game 博弈论

    思路:三维DP,刚开始用记忆化搜索,MLE…… 后来改为直接预处理所有的情况. 总之就是必败态的后继是必胜态!!! 代码如下: #include<iostream> #include< ...

  8. Good Bye 2015 A. New Year and Days 签到

    A. New Year and Days   Today is Wednesday, the third day of the week. What's more interesting is tha ...

  9. 【poj1061-青蛙的约会】拓展欧几里得-不定方程

    http://poj.org/problem?id=1061 题意:裸题.注意负数. //poj1061 #include<cstdio> #include<cstdlib> ...

  10. hdu2021(很闲~~)

    http://acm.hdu.edu.cn/showproblem.php?pid=2021 water~~~ #include<iostream> #include<stdio.h ...