1.什么是构建工具

Eclipse大家都知道是一种IDE(集成开发环境),最初是用来做Java开发的,而Android是基于Java语言的,所以最初Google还是希望Android能在Eclipse上进行开发,为了满足这个需求,Google开发了一个叫ADT(AndroidDeveloper Tools)的东西,正是因为有了ADT,我们只需要码好代码,然后直接在Eclipse上进行编译、运行、签名、打包等一系列流程。某种意义上 ADT 就是我们的构建工具。

而自Google推出AndroidStudio以来,就宣布默认使用Gradle来作为构建工具,并且之后放弃更新ADT。

一般来说,构建工具除了以上提到的编译、运行、签名、打包等,还具备依赖管理的功能,如果需要用到第三方库,一般都是把jar文件添加到libs目录。但是假设第三方库有更新,需要下载最新的Jar文件,如果引用的第三方库多,就毫无管理可言。

现在Gradle引用第三方库方式是这样的:

compile 'com.android.support:support-v4:24.0.1'

直接可以看到源地址,升级的话直接改下版本号就可以了,这就是所谓的依赖管理。所以构建工具就是对项目进行编译、运行、签名、打包、依赖管理等一系列功能的合集,传统的构建工具有Make、Ant、Maven、Ivy等,而Gradle是新一代的自动化构建工具。而且它是一个独立的项目,跟AS、Android无关,官方网站:https://gradle.org/ ,类似Ant、Maven这类构建工具都是基于xml来进行描述的,很臃肿,而Gradle采用的是一种叫做Groovy的语言,语法跟Java语法很像,但是是一种动态语言,而且在Java基础上做了不少改进,用起来更加简洁、灵活,而且Gradle完全兼容 Maven、Ivy,这点基本上宣布了Maven、Ivy可以被抛弃了,Gradle的推出主要以Java应用为主,当然目前还支持Android、C、C++。Google在推出AS的时候选中了Gradle作为构建工具,做了个AS的插件叫 Android Gradle Plugin,所以我们能在AS上使用Gradle完全是因为这个插件的原因。在项目的根目录有个build.gradle文件,里面有这么一句代码:

classpath 'com.android.tools.build:gradle:2.1.2'   

这个就是依赖Gradle插件的代码,后面的版本号代表的是android gradle plugin的版本,而不是Gradle的版本,这个是Google定的,跟Gradle官方没关系。


2.Gradle Wrapper

现在默认新建一个项目,然后点击运行,默认就会安装Gradle Wrapper。

假设我们本地有多个项目,一个是比较老的项目,还用着Gradle 1.0的版本,一个是用了Gradle 2.0的版本,但是两个项目想同时运行,只装了Gradle 1.0的话肯定不行,所以为了解决这个问题,Google 推出了Gradle Wrapper的概念,就是他在你每个项目都配置了一个指定版本的Gradle,可以理解为每个Android项目本地都有一个小型的Gradle,通过这个每个项目你可以支持用不同的Gradle版本来构建项目。


3. Android项目包含的Gradle配置文件


从上到下依次分析:

1. app文件夹下这个Module的gradle配置文件可以算是整个项目最主要的gradle配置文件,具体里面的配置后面再介绍。

2.每一个Module都需要有一个gradle配置文件,语法都是一样,唯一不同的是开头声明的是apply plugin: ‘com.android.library’。

3. wrapper.properties这个文件的内容声明了gradle的目录与下载路径以及当前项目使用的gradle版本,这些默认的路径我们一般不会更改的,这个文件里指明的gradle版本不对也是很多导包不成功的原因之一。

4.这个文件是整个项目的 gradle基础配置文件,默认的内容就是声明了 android gradle plugin 的版本。

5.全局的项目配置文件,里面主要声明一些需要加入gradle的module。


4. 正确导入下载的开源项目

4.1 下载一个Demo,先打开每个module下的gradle文件,即app目录下的build.gradle以及各个library下的build.gradle ,首先查看 compileSdkVersion 和 buildToolsVersion,因为有些时候你本地的版本和下载的版本不一致,那么就会导致失败。

4.2 然后就是检查gradle-wrapper,Google有些时候要求不同的AS支持不同的Gradle版本。

比如AS1.0的时候要求必须使用Gradle 1.x的版本,等到AS2.0的时候,Google不支持Gradle1.x的版本,这个时候你必须手动更新下android gradle plugin的版本,然后重新同步下。

检查以上两个地方基本就可以导入并运行了。


5. Gradle的配置

在Android Stduio上新建一个全新的Android项目,一般就包含了三个相关的gradle配置文件,分别是根目录下的build.gradle、settings.gradle和app目录下的build.gradle文件,前两个文件配置比较简单,上面已经有所介绍,下面主要介绍下app/build.gradle文件的详细配置。

一般来说,新建的一个项目,在app目录会生成一个build.gradle文件,app目录基本是项目的一个主要目录了,所有的功能开发都是在这个目录下,自然该目录下的 build.gradle 也是整个项目最重要的配置文件,这个文件对全新的项目来说会包含三部分:

apply plugin声明

最顶部有一行代码是这样的:

apply plugin: 'com.android.application'   

代表该项目是一个Android项目,而且一个Android项目只有一句这个声明。

如果你的项目有引用一些module,你可以理解成通过源码的方式引用一些android library,那么你的module开头需要声明是一个android library,那需要这样写:

apply plugin: 'com.android.library'

dependencies节点

意为依赖的意思,所以这里就是用来管理依赖的地方。依赖一般有三种:

1.可以在AS中直接依赖jar文件,靠的就是这行代码。意思是编译libs目录下的所有 jar包。

compile fileTree(dir: 'libs', include:['*.jar'])

2.第二种比较常见,就是直接依赖远程项目名字 +版本号,至于该项目是放在哪里的呢?一般是放在jcenter和maven仓库的,这个可以在项目根目录下的build.gradle指定远程仓库地址,甚至可以在本地搭建一个私有仓库,然后指定本地仓库地址。

3.第三种就是类似原始的引用android library的方式,一般是你们公司内部的项目,或者改第三方库的源码,同时本地又没有搭建私有仓库,才会选择这种方式。这种方式目前很不推荐了。

android节点

buildTypes意为编译类型,这里声明了debug和release两种类型,当然你也可以声明其他类型,名字随意取,可以看到debug和release两种类型签名所用的配置不一样,这个配置具体详细也就是在上部分signingConfigs节点指定的,那里面的一些密码信息是在生成keystore文件时设置的。

Android开发工具——Gradle知识汇总的更多相关文章

  1. 最新版Android开发工具

    最新版Android开发工具 JUN 27TH, 2014 Android Tools ADT Bundle ADT Bundle包含了Eclipse.ADT插件和SDK Tools,是已经集成好的I ...

  2. Android开发工具全面转向Android Studio(3)——AS project/module的目录结构(与Eclipse对比)

    如果AS完全还没摸懂的,建议先看下Android开发工具全面转向Android Studio(2)——AS project/module的CRUD. 注:以下以Windows平台为标准,AS以目前最新 ...

  3. Android开发工具全面转向Android Studio(2)——AS project/module的CRUD

    本文有些地方可能需要衔接Android开发工具全面转向Android Studio(1)——准备开发环境,读起来效果会更好. 这个世界很奇妙,所有的东西离不开CRUD,即增删改查.即使人本身也遵循这个 ...

  4. 给 Android 初学者的 Gradle 知识普及

    给 Android 初学者的 Gradle 知识普及:http://gold.xitu.io/entry/5778f8bd165abd0054b443b0/promote?utm_source=bai ...

  5. Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具

    Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具 记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路, ...

  6. Android开发工具Android Studio、Android SDK和Genymotion完全配置

    所谓“工欲善其事,必先利其器”.Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提 ...

  7. Android群英传》读书笔记 (1) 第一章 Android体系与系统架构 + 第二章 Android开发工具新接触

    第一章 Android体系与系统架构 1.Dalvik 和 ARTDalvik好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用.ART好比是一辆组装好了的自行车,装好就可以骑了. ...

  8. 关于无法下载android开发工具的解决方法

    目前中国内地访问android网站需要FQ.不过这个网站http://www.androiddevtools.cn/提供了所有的和官网上一样的android开发工具和一些其他问题的解决方法.为andr ...

  9. Android群英传笔记——第二章:Android开发工具新接触

    Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...

随机推荐

  1. 神奇的VIM

    1. di'.di".di`.di( .di{ .dt 'abc' ==> '' di' "abc"==> "" di" `ab ...

  2. 20 个案例教你在 Java 8 中如何处理日期和时间?

    前言 前面一篇文章写了<SimpleDateFormat 如何安全的使用?>, 里面介绍了 SimpleDateFormat 如何处理日期/时间,以及如何保证线程安全,及其介绍了在 Jav ...

  3. 谈PHP中的钩子

    钩子,英文为hooks.在程序中应用相当广泛,但是究竟什么是钩子呢?本人介绍一下目前本人对钩子的理解和相关心得. 假如有这么一段程序流: function fun(){ funA(); funB(); ...

  4. SQL server函数

    一般在开发中用到的函数 标量函数用的比较多 标量函数:就是返回一个单一的结果值 下面介绍一下标量函数的语法 create function GetFunction  --创建函数 (   @name ...

  5. springclould feign客户端添加全局参数

    用springclould feign作为调用服务的客户端,一般来说参数可以写在feignclient的方法参数里 有时需要所有feign请求都统一添加一些参数,例如token用于鉴权等,可以这样做: ...

  6. VS 2013如何编译ASM文件

    1.  左键点击解决方案下面的工程 2.  点击上面菜单中的项目,此时有个生成自定义属性 3.  勾选上masm,此时就有Microsoft Macro Assembler了 https://stac ...

  7. 洛谷 P2910 [USACO08OPEN]寻宝之路Clear And Present Danger

    题目描述 Farmer John is on a boat seeking fabled treasure on one of the N (1 <= N <= 100) islands ...

  8. 状态压缩---区间dp第一题

    标签: ACM 题目 Gappu has a very busy weekend ahead of him. Because, next weekend is Halloween, and he is ...

  9. 迅为4412开发板Linux设备树的镜像烧写和源码简单优化教程

    1 烧写:   烧写和4412默认镜像的烧写类似,使用fastboot. 先更新uboot,用4412默认uboot更新支持设备树的uboot 用支持设备树的uboot烧写. 进入支持设备树的uboo ...

  10. kubernetes添加不了google apt-key

    转自icepoint的博客 key来源 我的百度云盘 密码:v3wo 下载kube_apt_key.gpg到本地,上传到服务器后执行下面的命令 apt-get update && ap ...