Android开发工具——Gradle知识汇总
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知识汇总的更多相关文章
- 最新版Android开发工具
最新版Android开发工具 JUN 27TH, 2014 Android Tools ADT Bundle ADT Bundle包含了Eclipse.ADT插件和SDK Tools,是已经集成好的I ...
- Android开发工具全面转向Android Studio(3)——AS project/module的目录结构(与Eclipse对比)
如果AS完全还没摸懂的,建议先看下Android开发工具全面转向Android Studio(2)——AS project/module的CRUD. 注:以下以Windows平台为标准,AS以目前最新 ...
- Android开发工具全面转向Android Studio(2)——AS project/module的CRUD
本文有些地方可能需要衔接Android开发工具全面转向Android Studio(1)——准备开发环境,读起来效果会更好. 这个世界很奇妙,所有的东西离不开CRUD,即增删改查.即使人本身也遵循这个 ...
- 给 Android 初学者的 Gradle 知识普及
给 Android 初学者的 Gradle 知识普及:http://gold.xitu.io/entry/5778f8bd165abd0054b443b0/promote?utm_source=bai ...
- Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具
Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具 记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路, ...
- Android开发工具Android Studio、Android SDK和Genymotion完全配置
所谓“工欲善其事,必先利其器”.Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提 ...
- Android群英传》读书笔记 (1) 第一章 Android体系与系统架构 + 第二章 Android开发工具新接触
第一章 Android体系与系统架构 1.Dalvik 和 ARTDalvik好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用.ART好比是一辆组装好了的自行车,装好就可以骑了. ...
- 关于无法下载android开发工具的解决方法
目前中国内地访问android网站需要FQ.不过这个网站http://www.androiddevtools.cn/提供了所有的和官网上一样的android开发工具和一些其他问题的解决方法.为andr ...
- Android群英传笔记——第二章:Android开发工具新接触
Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...
随机推荐
- axios delete 请求
axios delete 请求 在传递一个参数的时候,直接把参数放在请求连接后面,用'/' 连接就可以了 this.axios.post(this.APIURL+'/'+ID) //http://ww ...
- ZOJ Course Selection System DP
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5565 Course Selection System Time ...
- audio、video的控制
W3C上面给的是js控制相关的播放与暂停,不过在实际开发中我们多会选择JQ来操作的,毕竟方便很多,而play()和pause()用于js play并不是jQuery的函数,而是DOM元素的函数,所以我 ...
- springmvc当要返回中文字符串时出现乱码
当过滤器,页面编码都对,tomcat版本在8以上(8内部默认用utf-8) 在方法参数中加上,produces="text/html;charset=UTF-8" 绝对可以解决!! ...
- split命令:文件切割
split命令:文件切割 有时候文件过大,导致不能正常使用,可以用split进行切割. 命令参数: split [选项] [要切割的文件] [输出文件名前缀] -a, --suffix-length= ...
- 小程序 显示Toobar
要实现的效果 在 下面app.json 中加下列代码 "tabBar": { "color": "#7A7E83", "se ...
- 寻找最美的你(select)
Time Limit:2000ms Memory Limit:128MB 题目描述 这个问题是这样的,如果一个区间[L,R]存在一个数ai,使得这个数是这个区间所有数的约数,那么[L,R]这段区间 ...
- 集合框架比较两个对象是否相同(equals和hashCode方法)
package com.dcz.hashset; import java.util.HashSet; import java.util.Set; /** * HashSet是接口最常用的实现类,顾名思 ...
- IP Addresses of Google Global Cache
Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123.23.7 93.123. ...
- Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()
为什么使用Python-OpenCV? 虽然python 很强大,而且也有自己的图像处理库PIL,但是相对于OpenCV 来讲,它还是弱小很多.跟很多开源软件一样OpenCV 也提供了完善的pytho ...