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 ...
随机推荐
- shell脚本实现自动化备份
1.备份规则: 在生产环境中有若干服务器需要定时将服务器中应用程序,以及数据库等进行备份.要求在本地服务器中保存近一周的备份,备份服务器中保存最近一月的备份文件. ...
- public private protected 三种访问修饰符在c#中的区别
1. public 公有的可见性:在类自身内部可见: 可被子类继承: 类外部可见 2. protected 受保护的可见性:在类自身内部可见: 可被子类继承: 类外部不可见 3. private 私有 ...
- JSP新闻发布系统
1.主页面 1.1登录 1.2 分页 2.注销 3.代码如下 package cn.news.dao.impl; import java.sql.SQLException; import org ...
- 状态模式和php实现
状态模式: 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类.其别名为状态对象(Objects for States),状态模式是一种对象行为型模式. 模式分析: 在很多情况下, ...
- 使用nginx+tomcat实现静态和动态页面的分离
博主最近在优化一个javaweb项目,该项目之前一直都是使用tomcat处理用户请求的,无论静态还是动态的东西,一律交给tomcat处理.tomcat主要是负责处理servlet的,静态的文件还是交给 ...
- apache安装报错
libtool: install: error: cannot install `libaprutil-1.la' to a directory not ending /some_directory ...
- HDU 1520 Anniversary party (树形DP,入门)
题意:给一棵树,每个节点都有权值,要求选择部分节点出来,使得权值之和最大,但是每对(父亲,儿子)中最多只能挑一个. 思路: 比较入门的题,每个节点可以选也可以不选.若当前节点选的话,孩子必须全部不选: ...
- codevs 2277 爱吃皮蛋的小明(水题日常)
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题目描述 Description 小明特别爱吃蛋,特别是皮蛋.他一次可以吃一个蛋或者两个蛋(整个吞下去),而且他 ...
- Codeforces C The Game of Efil (暴力枚举状态)
http://codeforces.com/gym/100650 阅读题,边界的cell的邻居要当成一个环形的来算,时间有8s,状态最多2^16种,所以直接暴力枚举就行了.另外一种做法是逆推. #in ...
- KTU Programming Camp (Winter Training Day 1)
A.B.C(By musashiheart) 0216个人赛前三道题解 E(By ggg) Gym - 100735E Restore H(by pipixia) Gym - 100735H