原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7
翻译:Android Studio 中文组(大锤译)
鉴于Android Studio使用Gradle构建项目,在IDE的使用过程中可能会遇到很多令人头疼的问题。大锤也是第一次接触,为有个基本的认识,特找来Android官方手册,和大家一起学习学习。翻译不当之处,望指出。
为什么要用Gradle?
Gradle是比较先进的构建系统,也是一个很好的构建工具,允许通过插件自定义构建逻辑
以下是为什么Android Studio选择Gradle的主要原因:
- 使用领域专用语言(Domain Specific Language)来描述和处理构建逻辑。(以下简称DSL)
- 基于Groovy。DSL可以混合各种声明元素,用代码操控这些DSL元素达到逻辑自定义。
- 支持已有的Maven或者Ivy仓库基础建设
- 非常灵活,允许使用best practices,并不强制让你遵照它的原则来。
- 其它插件时可以暴露自己的DSL和API来让Gradle构建文件使用。
- 允许IDE集成,是很好的API工具
需要准备:
- Gradle 1.6 or 1.7
- SDK with Build Tools 17.0.0 (released 5/16/2013)
Basic Project
在Gradle项目的根目录下,有个叫build.gradle的文件,它描述了这个项目的整体构建基础。
build文件
最基本的java程序,它的build.gradle文件就一句话:
apply plugin: 'java'
最基本的Android项目,它的build.gradle如下:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.6'
}
}
apply plugin: 'android'
android {
compileSdkVersion 17
}
我们一步步来分析一下上面三部分的内容。
- buildscript{...} 配置了驱动build的代码,它声明将在Maven中央仓库,取一个classpath dependency,也就是Android plugin for Gradle v0.5.6
- apply plugin 指明了用到的plugin是android,就像前面java程序中,用的plugin是java一样
- android{...} 中配置了所有android构建的参数,这里也就是Android DSL的入口点。
默认的,只有目标编译环境是必要的,也就是compileSdkVersion这个属性。这和以前在project.properties中的target属性类似。
值得注意的是,如果你在Android项目中写 apply plugin:java 而不是apply plugin:android的话,将会build失败。
续Gradle(一)
项目结构
两大组件(source sets): main source code 和 test code. 它们分别在以下两个目录中:
src/main/
src/instrumentTest/
这两个目录里面,又分别有各自的代码源文件和资源文件。
java/
resources/
对于 Android plugin, 又有以下额外的目录:
AndroidManifest.xml
res/
assets/
aidl/
rs/
jni/
配置项目结构
根据Gradle文档说明,可以通过以下两个方法来重新配置项目结构。
sourceSets {
main {
java {
srcDir 'src/java'
}
resources {
srcDir 'src/resources'
}
}
}
或者:
sourceSets {
main.java.srcDirs = ['src/java']
main.resources.srcDirs = ['src/resources']
}
而Android的项目也类似,如下列所示:
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
}
注:setRoot这个方法将所有src/instrumentTest目录下的文件及文件夹移到了tests/目录下。
接续: Gradle(一) | Gradle(二)
通用任务
将一个plugin运用到build file中时,会自动创建一系列的构建任务(build task)去运行。Java plugin和Android Plugin也都会如此。
我们对于任务的约定有以下四个:
-
assemble任务,汇集所有项目输出
- check任务,运行所有校验
-
build任务,既汇集又校验
- clean任务,清除所有项目输出
assemble, check and build任务自己本身不做任何事情,它们只是plugin锚点,真正任务的是由plugin来添加执行。
这样做的好处是,不管你在什么项目中,你都可以调用同样的命令来执行。
通过命令行,你可以得到更高级别的任务,命令如下:
gradle tasks
列出当前运行的所有任务,以及查看他们之间的依赖关系:
gradle tasks --all
注: Gradle会自动地检测一个任务中申明的输入和输出。当重复执行两次build任务时,Gradle会报告当前所有任务是UP-TO-DATE的状态。
Java项目的任务
Java plugin会创建两个任务,分别挂到锚任务中,如下:
assemble
jar This task creates the output.
check
test This task runs the tests.
- jar任务是编译执行Java源代码。
- test任务是运行unit test
通常,java项目中的任务只会用到assemble和check这两个,更多的其他task详见此处。
Android 任务
Android的任务比通用的四大任务多了“connectedCheck”和“deviceCheck”,这是想要让项目忽视设备是否连接,正常执行check任务。
- assemble任务, 汇集所有项目输出
- check任务,运行所有校验
- connectedCheck任务,运行所有需要链接设备或模拟器的校验, 并行运行
- deviceCheck任务,运行调用远程设备的校验,运用于CI Servers
- build任务,既汇集又校验
- clean任务,清除所有项目输出
注:build任务不依赖与deviceCheck或connectedCheck
一个安卓的项目至少有两个输出,一是debug apk,二是release apk.这两个输出都有自己对应的锚任务,来实现它们各自的构建调用assemble任务时会同时调用assembleDebug和assembleRelease来保证有两个输出。
assemble
- assembleDebug
- assemblRelease
Tip: Gradle 支持Camel命名方式的简写,比如在输命令行时,可以用aR代替assembleRelease,如果没有其他别的任务也是aR简写的话:
gradle aR = gradle assembleRelease
Check任务也有它们自己的依赖关系:
---lint (目前还没实现,汗一个)
---connectedInstrumentTest
---connectedUiAutomatorTest (这个也还没实现……)
依赖于任务创建时,其他插件实现测试的扩展点
最后, 为了能够安装卸载,Android plugin 为所有的build类型(debug,release,test)都创建了install/uninstall 任务,但需要signing。
相关推荐
### Gradle 使用手册中文版知识点概览 #### 关于本书 本书旨在为用户提供全面的 Gradle 使用指导,从基础知识到高级技巧,帮助开发者熟练掌握 Gradle 的各项功能,提高项目构建效率。 #### 介绍 Gradle 是一种...
### Gradle用户手册中文版知识点概述 #### 一、简介 **Gradle**是一种基于Java的构建工具,它采用了一种灵活的DSL(领域特定语言)——Groovy,来定义项目构建逻辑。Gradle旨在提高构建过程的效率与灵活性,并支持...
gradle用户手册2.13,好多项目都从maven迁移到了gradle,咱们也要与时俱进
这两个部分非常简洁,但它们清晰地指出了文档的主要内容是关于如何使用Gradle工具进行Android项目的构建、打包等相关操作的手册。接下来,我们将深入探讨这部分内容所涵盖的关键知识点。 #### 知识点详述 根据提供...
为了学习AS,发现使用gradle构建项目。国外网站访问太慢了,果断写个简单的爬虫全量下载下来,要看的拿走
Gradle用户手册是官方提供的文档,目的是指导用户如何使用Gradle进行项目构建。 ### Gradle用户手册知识点 #### 1. 安装Gradle - **系统要求**:使用Gradle之前需要先检查系统要求,例如JVM(Java虚拟机)版本。 -...
【Gradle高阶实战手册1】是一份针对Gradle构建工具在Android开发中的高级实践指南。这份文档基于Gradle插件的0.9版本,强调了新构建系统的主要目标和优势,同时也列出了使用Gradle的原因、环境要求、基本项目构建和...
要创建可执行的Jar文件,可以使用Gradle的`jar`任务,并通过`main-class`属性来指定程序的入口类。 **9.2 依赖库打包范围** - **9.2.1 本地jar**:可以将本地的jar文件添加到构建过程中。 - **9.2.2 compile替换**...
《Groovy学习与Gradle实践经典手册》是一本深度探讨Groovy编程语言和Gradle构建工具的指南,专为Android及Java开发人员提供全面的知识覆盖。本书旨在帮助开发者提升在项目管理和自动化构建方面的技能,使其能够高效...
Gradle的入门教学手册,0基础,一册在手,说走就走 :)
- `docs`目录:可能包含Gradle的用户手册、API文档和开发者指南。 - ` licenses`目录:包含Gradle使用的各个库的许可文件。 - `init.d`目录:允许自定义Gradle的初始化脚本。 - `src`目录:如果包含,可能有Gradle的...
本文档为Gradle使用手册V2.5,欢迎指正,也欢迎加入Gradel中文QQ群:463988029,联系我们一起为开源工具做贡献。 本文档前11章来自github但是比较残缺部分章节无线学院补充翻译、12章-31张来自,感谢他们对Gradle...
2. **docs** 目录:包含了Gradle的文档,包括API参考、用户指南和开发者手册,帮助开发者理解和学习Gradle的使用方法。 3. **lib** 目录:存储Gradle运行时需要的各种库文件,包括核心库、插件库以及它们的依赖。 ...
Gradle用户手册是针对使用Gradle构建系统的用户编写的指南,它提供了详细的说明、教程和参考资料。以下是从给定内容中提取的关键知识点: 1. Gradle User Guide 版本信息 用户手册的版本为1.12,由Hans Dockter和...
Gradle,这是一个基于 JVM 的富有突破性构建工具。Gradle 正迅速成为许多开源项目和前沿企业构建系统的选择,同时也在挑战遗留的自动化构建...本教程主要讲解了如何使用 Gradle 构建系统和构建系统过程中涉及的插件。
3. `docs`或`documentation`目录:可能包含了Gradle的文档,如用户手册、API文档等,帮助开发者理解和使用Gradle。 4. `licences`目录:可能包含Gradle及其依赖库的许可协议文件。 5. `init.d`目录:这里可以放置...
这是Gradle 7.6的第一个补丁发布。它修复了以下问题: 1.测试套件插件的依赖块中不可能有平台依赖 2.增加内存使用量(使用-p选项) 3.工具链下载期间构建gradle本身...13.在Gradle手册中提到Foojay工具链解析器插件 ......
3. **docs 文件夹**(可能包含):可能包含Gradle的文档,如用户手册、API参考和快速入门指南,帮助开发者了解和学习Gradle的使用。 4. **licenses 文件夹**(可能包含):可能包含Gradle及其依赖库的许可信息,这...