1.引言
AndroidStudio使用Gradle做项目构建、打包和部署。像Maven,但是使用的是脚本语言:Groovy。 传送门很明显的一点就是你可以直接使用命令行来做原本IDE完成的事情,意味着可以自动化我们的构建过程。学习Gradle你需要了解到Java、Android、Groovy,还好不需要去深入研究它们。
- 构建类型build type
- 定制product flavor
- 签名管理signing configuration
- 库项目library project
通过gradle的apply功能,将Android插件添加到构建系统中,从而能够使用Android段的领域特定语言(DSL)配置。
distributionUrl = "" 显示了wrapper会下载并安装Gradle版本。
Unix上运行使用wrapper
./gradlew
Windows上运行gradlew.bat命令。
可以通过空格来分割运行多个任务
执行多个任务: > ./gradlew lint assembleDebug
可以通过 -x标志来不执行某一个任务。
示例:不执行lintDebug
> ./gradlew assembleDebug -x lintDebug
tasks命令加上 --all标志不仅显示项目中所有的构建任务,也显示每个任务的依赖。
gradle tasks --all
可以在命令行中使用任务名字的缩写,只要提供的字符足够指定这个是唯一的任务。示例:
每个配置的依赖树
> ./gradlew anDep
:app:androidDependencies
若构建文件不叫build.gradle,使用-b标志来指定一个构建文件名,如:
> ./gradlew -b app.gradle
AndroidStudio中运行Gradle--使用Gradle视图执行任务
添加Java库的依赖
基本语法 - Gradle支持几种不同的方式来定义依赖。最常用的就是使用引号,并通过冒号分隔开组名、名字和版本号。
依赖的完整语法:testCompile group: 'junit',name:'junit',version:'4.12'
依赖的快捷语法:testCompile 'junit:junit:4.12' (默认使用的就是它的形式)
想要添加一系列的文件到配置中,但又希望将它们添加到一个库中,可以在dependencies中使用files或者fileTree语法。
Gradle需要知道去哪里搜索并解析依赖,这就需通过repositories块实现。
Java项目中Gradle命令dependencies可以用来查看传递依赖。Android中使用的是AndroidDependencies命令。
示例:查看ANDROID依赖
> ./gradlew androidDependencies
禁用传递依赖--transitive标志
使其值为false,就可阻止传递依赖的下载。
只引入模块jar的完整语法
dependencies{
compile 'org.codehaus.groovy:groovy-all:2.4.4@jar'
compile group:'org.codehaus.groovy',name:'groovy-all',version:'2.4.4',ext:'jar'
}
从dependcies块中排除一个传递依赖
dependcies{
androidTestCompile('org.spockframework:spock-core:1.0-groovy-2.4'){
exclude group:'org.codehaus.groovy'
exclude group:'junit'
}
}
这样就不会包含Groovy依赖和JUnit库。
repositories{
mavenLocal() 本地Maven缓存
mavenCentral() 公用Maven中央仓库
}
从URL添加Maven仓库
repositories{
maven{
url'http://repo.spring.io/milestone'
}
}
通过密码保护的仓库可以使用一个credentials块
repositories{
maven{
credentials{
username 'username'
password 'password'
}
url 'http://repo.mycompany.com/maven2'
}
}
使用一个ivy仓库
repositories{
ivy{
url 'http://my.ivy.repo'
}
}
使用一个本地目录作为一个仓库
repositories{
flatDir{
dirs 'lib'
}
}
设置项目属性
使用ext块(代表extra)配置通用的值。一次定义变量,全局使用。
命令行使用-p标志来设置。
packagingOptions块使用,exclude来移除冲突文件或啥文件
AndroidStudio使用Gradle做项目构建、打包和部署。像Maven,但是使用的是脚本语言:Groovy。 传送门很明显的一点就是你可以直接使用命令行来做原本IDE完成的事情,意味着可以自动化我们的构建过程。学习Gradle你需要了解到Java、Android、Groovy,还好不需要去深入研究它们。
2.Android开发中使用Gradle构建的一些知识点
针对Android应用程序增加了特性有:- 构建类型build type
- 定制product flavor
- 签名管理signing configuration
- 库项目library project
这里插入新建一个Android项目的时候IDE会自动生成3个Gradle文件:setting.gradle、build.gradle和app/build.gradle
Android项目是多项目Gradle构建。Settting.gradle文件显示了每个子目录所对应的子项目。
include ‘:app'
include表示app子目录是唯一的子项目。我们在添加库项目的时候会发现该文件也会添加对应的库项目名称。
通过gradle的apply功能,将Android插件添加到构建系统中,从而能够使用Android段的领域特定语言(DSL)配置。
distributionUrl = "" 显示了wrapper会下载并安装Gradle版本。
第一次运行后,这个Gradle的发行版本会被缓存到zipStoreBase下的zipStorePath目录,并被用于后续的Gradle任务的执行。
Unix上运行使用wrapper
./gradlew
Windows上运行gradlew.bat命令。
可以通过空格来分割运行多个任务
执行多个任务: > ./gradlew lint assembleDebug
可以通过 -x标志来不执行某一个任务。
示例:不执行lintDebug
> ./gradlew assembleDebug -x lintDebug
tasks命令加上 --all标志不仅显示项目中所有的构建任务,也显示每个任务的依赖。
gradle tasks --all
可以在命令行中使用任务名字的缩写,只要提供的字符足够指定这个是唯一的任务。示例:
每个配置的依赖树
> ./gradlew anDep
:app:androidDependencies
若构建文件不叫build.gradle,使用-b标志来指定一个构建文件名,如:
> ./gradlew -b app.gradle
AndroidStudio中运行Gradle--使用Gradle视图执行任务
添加Java库的依赖
基本语法 - Gradle支持几种不同的方式来定义依赖。最常用的就是使用引号,并通过冒号分隔开组名、名字和版本号。
依赖的完整语法:testCompile group: 'junit',name:'junit',version:'4.12'
依赖的快捷语法:testCompile 'junit:junit:4.12' (默认使用的就是它的形式)
想要添加一系列的文件到配置中,但又希望将它们添加到一个库中,可以在dependencies中使用files或者fileTree语法。
Gradle需要知道去哪里搜索并解析依赖,这就需通过repositories块实现。
Java项目中Gradle命令dependencies可以用来查看传递依赖。Android中使用的是AndroidDependencies命令。
示例:查看ANDROID依赖
> ./gradlew androidDependencies
禁用传递依赖--transitive标志
使其值为false,就可阻止传递依赖的下载。
只引入模块jar的完整语法
dependencies{
compile 'org.codehaus.groovy:groovy-all:2.4.4@jar'
compile group:'org.codehaus.groovy',name:'groovy-all',version:'2.4.4',ext:'jar'
}
从dependcies块中排除一个传递依赖
dependcies{
androidTestCompile('org.spockframework:spock-core:1.0-groovy-2.4'){
exclude group:'org.codehaus.groovy'
exclude group:'junit'
}
}
这样就不会包含Groovy依赖和JUnit库。
repositories{
mavenLocal() 本地Maven缓存
mavenCentral() 公用Maven中央仓库
}
从URL添加Maven仓库
repositories{
maven{
url'http://repo.spring.io/milestone'
}
}
通过密码保护的仓库可以使用一个credentials块
repositories{
maven{
credentials{
username 'username'
password 'password'
}
url 'http://repo.mycompany.com/maven2'
}
}
使用一个ivy仓库
repositories{
ivy{
url 'http://my.ivy.repo'
}
}
使用一个本地目录作为一个仓库
repositories{
flatDir{
dirs 'lib'
}
}
设置项目属性
使用ext块(代表extra)配置通用的值。一次定义变量,全局使用。
命令行使用-p标志来设置。
packagingOptions块使用,exclude来移除冲突文件或啥文件