翻译自gradle官网针对APP DEVELOPER的教程
文档下载地址:http://download.csdn.net/detail/jw20082009jw/9505240
针对:App开发者
Gradle深入浅出
以下部分可以让你将一个基于gradle建立的android程序跑起来,并将重点介绍gradle为安卓开发过程中带来的一些特性。让你仔细看看android studio里面的gradle窗口工具,并解释他是如何添加依赖的。
作为第一个完全致力于安卓开发的ide,同时作为有google后台的ide,android studio是一个足以令安卓开发者们激情澎湃的有前景的开发工具。但是,同时也意味着开发者们需要掌握一些新技术,就像gradle构建系统。
这篇文章可以让你开始跑起来一个基于gradle的安卓程序,以一个更深视角看待一些重要的gradle文件,学会如何运行一个gradle任务。
你也可以仔细看看android studio里的各种各类的gradle图形工具,并学会如何给一个项目添加依赖,并不需要任何的gradle经验。
第一步就是准确的理解什么是gradle以及为什么gradle被集成到android studio中是个好消息。
1、什么是gradle?
Gradle是一个自动化构建工具,可以通过插件集成到很多不同的系统中。在android studio中,gradle通过android的gradle插件集成。
如果你从来没有使用过gradle,那当你想开始使用android studio的时候可能会碰到一些让你很沮丧的障碍。然而,gradle为开发者提供了很多帮助,所以本文是值得投入一些时间来学习的。下面你可以使用gradle来做的几件事。
最小化新项目的配置项
在android studio中创建的每个项目gradle都自动应用了一系列的默认配置项。
如果你开发的项目有些与默认规则相悖的配置项,自定义gradle也是很简单的。
声明项目依赖
依赖可以是一个module,jar文件或者是库,这些依赖可以是本地也可以是远程的。
测试项目
gradle自动从你的测试资源生成一个测试目录和一个测试apk,并且可以在构建过程中运行测试。
生成签名apk
如果你添加了所有签名必要信息,例如 keyPassword 和 keyAlias 在你的build.gradle文件中,那你就可以使用gradle来生成签名apk包。
从单个Module中打包出多个不同的apk包
Gradle可以从单个module中使用不同的包配置和构建配置来生成多个不同的apk包。这个特性尤其方便,主要有一下几个原因:
1、以此支持绝大部分设备
Android平台的开发通常都是尽可能多的适配更多的不同android设备和android系统版本。Google Play Store甚至有多apk支持,让你能够使用不同设备配置来对应生成不同版本的app,提供出了一个应用商店的列表。
这就是引入gradle的重要原因。你可以使用android新的构建系统来生成单module多apk包。给这些apk包同样的包名然后你就可以将他们上传到google应用商店的同一个应用列表下。
2、提供同一app的不同版本
有时候,你会想要在应用商店中展示应用的多个版本,例如,你提供了一个免费的版本和一个”增强收费”版本。同样,你可以使用gradle来生成单module多apk包,给每个apk一个单独的包名即可,然后你可以单独上传每个apk包到应用商店。
2、探索gradle文件
每当在android studio里创建一个项目,构建系统会自动生成所有必要的gradle构建文件。
因为每次创建android studio项目都会碰到这一堆的gradle文件,所以我们来创建一个基础的示例项目然后来仔细看看这些自动生成的文件。
第一步是创建示例项目:
1、启动Android studio.
2、点击创建一个新的项目
3、项目命名,输入域名,然后选择保存位置,点击Next
4、选择Phone and tablet,使用默认的最低sdk设置,点击Next
5、选择Blank Activity点击Next
6、使用默认设置,点击Finish
Gradle的构建文件
Gradle构建文件使用的是Domain Specific Language(DSL)来定义个性化构建逻辑以及来与android的gradle插件来交互。
Android studio项目包含了一个或多个module,每个module都可以单独构建、测试和调试。每个module都有他自己的build文件,所以每个android studio项目包括两种build文件。
l Top-Level build文件:在这个文件里面是项目内所有module里面通用的一些设置项。
l Module-Level build文件:每个module都有自己的Gradle构建文件,里面是针对当前module的设置项。你将会发给大部分时间在编辑Module-Level的build文件,而不是项目的Top-Level的build文件。
我们来看一看这些build.gradle文件,打开Android studio的项目面板(选择Project选项卡,android视图)然后展开Gradle Scripts目录。在我们的示例项目中,展开列表前两个条目分别是你项目的Top-Level和Module-Level构建文件。
我们的示例项目只包含了一个单独的Module-Level构建文件,但是下面这个截屏给出了另一种情况,一个项目包括多个modules时候的Gradle Scripts目录的可能样子。
Top-Level构建文件
每一个android studio项目都包含一个Top-Level构建文件。这个build.gradle是Gradle Scripts目录下的第一个条目,并且被清晰的标记为Project。
大部分情况下,你都不需要对这个文件做任何更改,但是理解他的内容和他在项目中所扮演的角色都是非常有必要的。下面是一个带注释的经典Top-Level构建文件。
Module-Level构建文件
做为项目级别构建文件的补充,每个module都有他自己的构建文件。下面是一个带注释的基础的Module-Level构建文件。(部分注释无法显示完全,但是不影响理解)
其他gradle文件
作为build.gradle文件的补充,你的Gradle Scripts目录下包含一些其他的gradle文件。大部分时间你都不会需要手动去编辑这些文件,因为在你对项目做相关改动的时候会自动更新这些文件。然而,理解这些文件在项目中扮演的角色依旧十分有必要。
gradle-wrapper.properties(gradle的版本文件:在高版本的gradle下已经隐藏该文件在Gradle Scripts的显示)
这个文件允许其他人来构建你的代码,甚至可以在他们机器上没有安装gradle的时候也可以。这个文件可以检查是否安装了正确版本的gradle,如果没有的话将会下载需要的版本。在我们的示例app中gradle-wrapper.properties包含以下内容:
settings.gradle
这个文件引用了项目的所有module。因为我们的项目中只有一个module,所以这个文件非常简单(就只有以下一行内容)。
gradle.properties(根项目目录下的)
这个文件包含整个项目的配置信息。默认下为空,但是你可以在这个文件中添加属性来对整个项目范围做更改。
Local.properties(sdk 位置)
这个文件告诉android的gradle插件,在哪里可以找到android sdk。例如:
注意local.properties包含了android sdk在本地的安装目录,这意味着你不应该把这个文件加入source control(xcode下的版本管理)
3、android studio用户界面
现在你已经对所有自动生成的gradle文件都熟悉过了,是时候进一步来和gradle构建系统做进一步交互了。比较不错的是你可以直接通过android studio的用户界面来使用gradle。
在android studio的垂直和水平边缘是一些打开不同工具窗口的选项卡。在接下来的几个部分,我将会向你介绍一些android studio的gradle窗口工具,并展示如何通过这些窗口工具与gradle构建系统交互。
Gradle 任务窗口
你可以使用gradle任务窗口来浏览和执行在编译一个可执行项目中存在的各种各样的任务。
打开任务窗口的步骤,点击android studio右手边的Gradle选项卡。如果你更改了你的android studio用户界面而且找不到你的Gradle选项卡的话,你可以选择View>Tool Window>Gradle。
在Gradle任务选项卡下,双击你的项目,在你的module后面,你会看到一个与该module关联的所有gradle任务的列表。
当你双击gradle任务窗口中的某个任务时候,这个任务将会被执行,并且任务的输出将会出现在另一个gradle相关的窗口中,那就是Gradle Console。
Gradle Console
Gradle Console展示gradle任务执行中的输出,任何错误和警告都会被展示出来。
打开Gradle Console的步骤,选择IDE右下角的Gradle Console选项卡。如果你更改了你的android studio用户界面而且找不到你的Gradle Console选项卡的话,你可以选择View>Tool Windows>Gradle Console。
让我们使用Gradle Console来完整做一遍练习。在Gradle任务窗口,找到assemble任务,并双击它(assemble任务可以构建一个你应用的发布版本)。在assemble任务执行的时候,任务的输出会出现在Gradle Console。
无论你的项目是否构建成功了,Gradle Console都将会通知你,如果出错了,将会显示“build failed”并将为什么你的构建失败了也一并显示出来。
Terminal
你也可以通过Android studio继承的Terminal来运行Gradle任务。如果你准确的知道你想要执行的任务,Terminal一般都是比在Gradle Console列表中寻找任务更快捷方便的方式。
打开Terminal的方式,点击android studio左下角的Terminal选项卡,或者选择View>Tool Windows>Gradle Console。Terminal会已经默认选中了当前目录。你可以通过在Terminal中输入Gradle任务并按下Return或者Enter来执行这些任务。
4、添加依赖
在本部分,我们将会探索怎样可以使用Gradle来管理项目的module依赖,本地二进制依赖,以及远程二进制依赖。
当为项目添加依赖时,gradle提供了几种选择。
选择1:把文件丢进项目的libs/目录下
关联的build.gradle文件将会自动更新
选择2:手动修改build.gradle文件
打开你的build.gradle文件并且添加一个新的构建规则到dependencies闭包(closure:groovy中的闭包规则,具体语法可以先看看groovy)中。例如,如果你想要添加一个google应用商店的服务,你的项目dependencies部分可能会类似下图:
选择3:使用android studio用户界面
在project面板下,Control+Click(windows下直接右键单击)你想要添加依赖的module然后选择Open Module Settings。
选中Dependencies选项卡,然后点击左下角的“+”按钮。你就可以从以下列表中选择:
l Library Dependency
l File Dependency
l Module Dependency
然后你就可以输入更多你想要添加到你项目中的依赖信息。例如,如果你选择了Library Dependency,Android studio就会显示一个库列表给你选择。
一旦你添加了依赖,检查你的Module-Level的build.gradle文件,应该已经自动更新进了新的依赖。
结语:
本文已经向你介绍了所有Android studio项目下自动生成的gradle文件。尤其是Top-Level和Module-Level的gradle文件,你也已经学会如何通过android studio用户界面直接与gradle构建系统交互。