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. morphia(5)-删除

    @Test public void delete() throws Exception { final Query<Employee> query = datastore.createQu ...

  2. python入门之生成器

    生成器 通过列表生成式,可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限得.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果仅仅需要访问前面几个元素,那后面绝大多数元素 ...

  3. odoo filter 日期

    <!--日期--> <filter name="before_twodays" string="前天" domain="[('dat ...

  4. 牛客网Java刷题知识点之同步方法和同步代码块的区别(用synchronized关键字修饰)

    不多说,直接上干货! 扩展博客 牛客网Java刷题知识点之多线程同步的实现方法有哪些 为何要使用同步?      java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查 ...

  5. 回顾Quick Sort(Javascript 实现)

    Introduction QuickSort的时间复杂度渐近函数虽然不能达到MergeSort般的O(nlgn),但因其良好的时间常量以及平均运行时间而被广泛使用. 下图解释了QuickSort的过程 ...

  6. 提升 Web开发性能的 10 个技巧

    随着网络的高速发展,网络性能的持续提高成为能否在芸芸App中脱颖而出的关键.高度联结的世界意味着用户对网络体验提出了更严苛的要求.假如你的网站不能做到快速响应,又或你的App存在延迟,用户很快就会移情 ...

  7. spark性能测试理论-Benchmark(转)

    一.Benchmark简介Benchmark是一个评价方式,在整个计算机领域有着长期的应用.正如维基百科上的解释“As computer architecture advanced, it becam ...

  8. COGS 788. 昵称

    788. 昵称 ★☆   输入文件:nickname.in   输出文件:nickname.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] ZSUQ送信者与腾讯QQ相似 ...

  9. 00_HTTP协议介绍

    1. 什么是HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到 ...

  10. Android(java)学习笔记143:Android中View动画之 XML实现 和 代码实现

    1.Animation 动画类型 Android的animation由四种类型组成: XML中: alph 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动 ...