Gradle学习系列(一)
今天就开始学习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
现在呢,就让我们结合一个项目实例来了解了解。
![](http://images0.cnblogs.com/blog/720630/201502/031722589065475.jpg)
这是一个用AS创建的一个项目,我们可以看到大致的项目结构,具体的就不多说了,不了解的可以去看看AS的项目结构。上面有三处用红色框框标记出来了,我们来一个个说明下,第一个也是最重要的一部分,它是整个工程的主项目的Gradle配置。
![](http://images0.cnblogs.com/blog/720630/201502/031723568437676.jpg)
我们可以看到在这个默认配置中,首先是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配置。
![](http://images0.cnblogs.com/blog/720630/201502/031724382658563.jpg)
我们可以看到buildscript{},这是Gradle语法,表示构建脚本。其中的repositories 表示Gradle依赖的仓储,jcenter()是新一代的中央仓储可以理解为mavencentro的升级版,其依赖仓储还包括Ivy以及本地仓储。dependencies表示该Gradle的构建版本。
第三个红色标记的部分,表示工程的中项目的声明。
![](http://images0.cnblogs.com/blog/720630/201502/031724542039533.jpg)
这里就表示,该工程中所有的项目,本工程中只有一个项目 :app,对于有些包含多个moudle的工程,则要在此处声明,比如 include ':app', ':XXXproject' 以此类推进行添加
4.小总
经过以上学习,相信我们已经初步的了解的Gradle。如非要给Gradle加上一个标签,那Gradle就是Ant和maven优点的结合体,并在此基础上添加了自己的优点! 更多的学习,敬请期待!