原文:https://code.tutsplus.com/zh-...
原做:Jessica Thornsby
翻译:Stypstivehtml
做为第一个专为Android打造的IDE(集成开发环境),由Google支持的Android Studio是最值得Android开发人员期待的。 但这同时意味着必须掌握一些新技术,特别事Gradle构建系统。android
本文将让您掌握Android的新构建系统,从基础的知识,如什么是Gradle和它能作什么,到深刻研究一些重要的Gradle文件,以及学习如何执行和监控Gradle任务。web
你将进一步了解 Android Studio 中各类不一样的 Gradle 工具窗口,并学习如何项目中添加依赖,这些都不须要 Gradle 相关经验。服务器
掌握 Android 新构建系统的第一步是正确理解 Gradle 是什么,以及为何在 Android Studio 中引入 Gradle 对 Android 开发人员来讲是一个好消息。网络
Gradle 是一套自动构建工具包,它能够经过插件集成到不少不一样的环境中。 在 Android Studio 中,Gradle 的集成是经过恰当命名的 Android Gradle 插件来实现的。app
当你考虑迁移到 Android Studio 时,若是以前从未使用过 Gradle,它多是一个使人沮丧的入门壁垒。 可是,Gradle 可以给 Android 开发人员提供不少帮助,因此很是值得投入一些时间来学习 Gradle 的前因后果。 这里是几个你可使用 Gradle 作的事情。ide
减小新项目所需的配置
Gradle 有一套默认配置,它会自动应用于您在 Android Studio 中建立的每一个项目。 若是您开发的项目不能遵照这些默认配置规则,Gradle 也很容易自定义。工具
声明项目依赖关系
依赖关系能够是模块、 JAR 文件或者库,而且它们既能够位于本地文件系统也能够位于远程服务器上。学习
测试您的项目
Gradle 自动生成一个测试目录,并从您项目的测试源文件生成一个测试 APK,还能够在构建过程当中运行测试。测试
生成签名 APK
若是你将全部必要的信息,如 keyPassword
和 keyAlias
,添加到您的 Gradle 文件中,您可使用 Gradle 来生成签名的 APK。
从单个模块生成多个 APK
Gradle 可使用不一样的包和配置从单个模块生成多个 APK 。 这个特性对安卓开发人员来讲特别方便,有如下几个缘由:
1) 支持各类设备
Android 平台开发中很大一部分是用来尽量支持更多不一样的 Android 设备和不一样版本的 Android 操做系统。 谷歌市场甚至有多 APK 支持,所以您能够为您的 app 建立多个版本,在每一个版本针对不一样的设备配置,在市场中提供单独的清单列表。
这就是为何引进 Gradle 的缘由。 您可使用 Android 的新构建系统从同一个模块生成多个 APK 的不一样版本。 只须要给这些不一样版本提供相同的包名,您就能够将它们上传到相同的谷歌市场清单列表。
2) 提供一个 app 的不一样版本
有时,您会想要在谷歌市场中列出您的 app 的多个版本,例如,您想要提供您的 app 的免费和"Pro"版本。 一样,您可使用 Gradle 从同一个模块中生成多个 APK,并给每一个 APK 一个不一样的包名。 以后你就能够分别上传每一个 APK 到谷歌市场中。
每当在 Android Studio 中建立项目时,构建系统会自动生成全部必需的 Gradle 文件。
由于每次你建立一个 Android Studio 项目,你都会遇到相同的 Gradle 文件。咱们将建立一个基本示例项目,而后仔细看看这些自动生成的文件。
第一步,建立示例项目:
启动 Android Studio。
单击 Start a new Android Studio project。
给您的项目一个名字,输入域名,而后选择用于存储您的示例项目的位置。 单击 Next。
确保只有 Phone and tablet 被选中,并接受默认最低 SDK 设置。 单击 Next。
选择 Blank Activity 而后单击 Next。
保持默认设置,而后单击 Finish。
Gradle 文件使用特定领域语言或 DSL 定义自定义构建逻辑,并与 Gradle 插件的安卓专有元素进行交互。
Android Studio 项目由一个或多个模块组成,这些模块是您能够单独构建、 测试和调试的组件。 每一个模块都有本身的构建文件,所以,每一个 Android Studio 项目包含两种 Gradle 构建文件:
顶级构建文件: 你将在这里找到项目全部模块的通用配置选项。
模块级构建文件: 每一个模块都有本身的的 Gradle 构建文件,包含了模块特定的设置。 绝大多数时间,您都在编辑模块级构建文件而不是项目的顶级构建文件。
要查看这些 build.gradle 文件,请打开 Android Studio Project 面板 (经过选择 Project 选项卡) 并展开 Gradle Scripts 文件夹。 在咱们的示例项目中,列表中的前两项是您项目的顶级和模块级构建文件。
咱们的示例项目只有单个模块级别的构建文件,但下面的截图给你一个提示,在多模块项目中 Gradle Scripts 文件夹可能的样子。
顶级 Gradle 构建文件
每一个 Android Studio 项目包含一个惟一的顶级 Gradle 构建文件。 这个 build.gradle 文件是出如今 Gradle Scripts 文件夹中的第一项,并清楚地标记为 Project。
大多数状况下,您不须要对此文件进行任何更改,但了解它的内容和它在您的项目锁扮演的角色仍然颇有用。 如下即是一个典型的顶级构建文件的注释版。
buildscript { //Project-level Gradle build files use buildscript to define dependencies.// repositories { jcenter() } //This file relies on the jJCenter repository.// dependencies { classpath 'com.android.tools.build:gradle:1.0.0' //Project is dependent on version 1.0.0 of the Android plugin for Gradle.// } } allprojects { //Defines the dependencies required by your application.// repositories { jcenter() } } //Application depends on the jCenter repository.//
模块级 Gradle 构建文件
除了项目级 Gradle 构建文件,每一个模块有一个本身的 Gradle 构建文件。 如下即是一个基本的模块级 Gradle 构建文件的注释版。
apply plugin: 'com.android.application' //Since this project is an Android app, the build.gradle file utilises the Android plugin.// android { //The following section configures all your project’s Android-specific parameters, and tells Gradle which version of Android it should build your project with. If you’ve developed Android applications before, the following should all be familiar.// compileSdkVersion 21 //The API your project is targeting.// buildToolsVersion "21.1.1" ////The version of the build tools you want to use.// defaultConfig { applicationId "com.example.jessica.myapplication" //Defines your application’s ID. Note, earlier versions of the Android plugin used ‘packageName’ instead of ‘applicationID.’// minSdkVersion 16 //The minimum API required by your project.// targetSdkVersion 21 //The version of Android you’re developing your application for.// versionCode 1 versionName "1.0" } buildTypes { release { //‘BuildTypes’ controls how your app is built and packaged. If you want to create your own build variants, you’ll need to add them to this section.// minifyEnabled true //Gradle runs ProGuard during the build process.// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //Applies the default ProGuard settings from the Android SDK.// } } } dependencies { //Declares the dependencies for the current module.// compile fileTree(dir: 'libs', include: ['*.jar']) //Although you can add JAR files by compiling them individually, this can be time-consuming if you have lots of JARs. In this example, we’re telling Gradle to add all the JAR files in the app/libs folder.// compile 'com.android.support:appcompat-v7:21.0.3' //To create more dependencies, add them to the depencies closure.// }
除了 Build.gradle 文件,您 Gradle Scripts 文件夹中包含一些其余 Gradle 文件。 很少数状况下,你没必要手动编辑这些文件,当您更改项目的任何有关配置,它们会自动更新。 然而,理解这些文件在您的项目内扮演的角色是一个不错的主意。
gradle-wrapper.properties (Gradle Version)
此文件用来容许其余人生成代码,即便在他们的机器上没有安装 Gradle。 此文件检查是否安装了正确版本的 Gradle,若有必要下载必要的版本。 在咱们的示例 app 中,gradle wrapper.properties 包含如下内容:
distributionBase=GRADLE_USER_HOME //Determines whether the unpacked wrapper distribution should be stored in the project, or in the Gradle user home directory.// distributionPath=wrapper/dists //The path where the Gradle distributions required by the wrapper are unzipped.// zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip //The URL where the correct version of Gradle should be downloaded from.//
settings.gradle
此文件将引用组成您项目的全部模块。 由于咱们的示例项目只有一个模块,此文件很是直白,正如你在下面看到的那样。
include ':app'
gradle.properties (Project Properties)
此文件包含您整个项目的配置信息。 它默认是空的,但您能够经过在此文件中添加内容以使您的项目应用大范围的特性。
local.properties (SDK Location)
该文件用来告诉 Gradle 插件,它在哪里能够找到你的 Android SDK 安装位置 。 例如:
sdk.dir=/Users/jessica/Library/Android/sdk
请注意,local.properties 包含的信息是指定安装在 本地 的 Android SDK 的路径。 这意味着你不该该将这个文件放在代码版本控制中。
如今,您已经熟悉全部自动生成的 Gradle 文件,是时候转向与 Gradle 构建系统交互了。 好消息是,你能够经过 Android Studio 的用户界面与 Gradle 直接进行交互。
在 Andorid Studio 的竖直与水平边缘,有一些用于打开的各类工具窗口的选项卡。 在接下来的几节中,我会向您介绍一些 Android Studio 中的 Gradle 工具窗口,并展现如何经过这些窗口与 Gradle 构建系统进行交互。
您可使用 Gradle 任务窗口浏览和执行不一样的任务,这些任务是将您的项目编译成可执行应用程序中执行所涉及的各项任务。
若要打开 Gradle 任务窗口,请单击 Android Studio 右侧的 Gradle 选项卡。 若是您自定义了您的 Android Studio 用户界面,致使找不到 Gradle 选项卡,那么您能够依次选择 View > Tool Windows > Gradle。
在 Gradle 任务选项卡中,双击您的项目和您的模块。 你会看到有关此模块的全部 Gradle 任务的列表。
当您在 Gradle 任务窗口中的双击一个任务时,它开始执行并在另外一个 Gradle 窗口中输出显示,这个窗口是 Gradle Console。
Gradle 控制台显示 Gradle 任务执行的输出,包括任何错误消息或警告。
若要打开 Gradle 控制台,请选择您 IDE 右下角的 Gradle Console 选项卡。 若是您自定义了 Android Studio 的用户界面,并找不到此选项卡,您老是能够经过选择 View > Tool Windows > Gradle Console 来代替。
让咱们去 Gradle 控制台兜一圈。 在 Gradle 任务窗口中,找到 assemble 任务,而后双击它,这个任务用于生成即将发布您的应用程序的发布版本。 当 assemble 任务执行时,任务的输出显示在 Gradle 控制台中。
Gradle 控制台而后将要么通知您,您的项目已成功构建,要么它将显示"构建失败"的消息,同时还有您构建失败缘由的有关信息。
您还能够从 Android Studio 集成的 Terminal 运行 Gradle 任务。 若是您知道到底什么 Gradle 任务要执行,比起在 Gradle Console 中浏览任务列表,终端一般更快,更方便。
要打开终端,单击位于 Android Studio 左下角的 Terminal 选项卡或选择 View > Tool Windows > Gradle Console。 而后终端被打开,而且已经选定当前目录。 而后,您就能够经过键入任务到终端,并按键盘上的 Return 或Enter 键执行 Gradle 任务。
在本节中,咱们将探讨如何使用 Gradle 来管理您的项目模块依赖关系、 本地二进制文件依赖关系和远程二进制文件依赖关系。
当向项目中添加依赖关系时,Gradle 提供了几个选项。
选项 1:拖拽文件到项目的 libs/ 目录
相关 build.gradle 文件将自动更新。
选项 2:手动修改 build.gradle 文件
打开您的 build.gradle 文件并在依赖项节添加新的构建规则。 例如,若是您想要添加谷歌服务,您的项目依赖项节将会看起来是这样:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.google.android.gms:play-services:6.5.+' }
选项 3:使用 Android Studio 的用户界面
在 Project 面板中,Control+Click 您要添加依赖的模块,而后选择 Open Module Settings。
选择 Dependencies 选项卡,紧接着选择左下角的 + 按钮。 你能够选择如下列表中的选项:
Library Dependency
File Dependency
Module Dependency
而后,您能够输入要添加到您的项目中的依赖的详细信息。 例如,若是你选择 Library Dependency,Android Studio 显示一个库列表供您选择。
一旦您添加了您的依赖,请检查您的模块级 build.gradle 文件。 它应该会自动更新以包含新的依赖关系。
这篇文章已经向你介绍了在一个典型的 Android Studio 项目中全部你能找到的自动生成的 Gradle 构建文件,尤为是顶级和模块级 Gradle 构建文件。 您还学习了如何经过 Android Studio 的用户界面直接与 Gradle 构建系统进行交互。
若是你有兴趣学习更多 Gradle 相关知识,你将会在 Android developer website 和 Gradle website 上发现不少补充信息。
Envato艺云台是数据资产和创造性人才汇聚的全球领先市场平台。全球数百万人都选择经过咱们的市场平台、工做室和课程来购买文件、选聘自由职业者,或者学习建立网站、制做视频、应用、制图等所需的技能。咱们的子网站包括Envato艺云台Tuts+ 网络,全球最大的H五、PS、插图、代码和摄影教程资源库,以及Envato艺云台市场,其中的900多万类数字资产均经过如下七大平台进行销售 - CodeCanyon、ThemeForest、GraphicRiver、VideoHive、PhotoDune、AudioJungle和3DOcean。