Gradle 的基础知识和理解
日期: 2016-12-09 16:39:53
我们相信我们的构建系统是Java (JVM) 领域构建技术的突破。
Gradle是Java编译技术领域的一项突破。
Gradle是什么?
Gradle首先可以理解为一个项目构建工具,但如果深入挖掘的话,它也是Google官方推荐的最受欢迎的Android项目编译工具。官方介绍如下。
可见Gradle 的评价有多高。因此,对于Java 程序员,尤其是Android 程序员来说,学习和应用它是一项宝贵的技能。
Gradle 强大再哪里?为何选择她?
###优点(gradle提供):
* 与Ant相比,Maven更灵活、更强大、更容易构建功能
* 强大的多项目编译支持
* 强大的项目依赖管理
* 完整的Maven 库支持(存储库基础设施)
* 简单而强大的Groovy语言
* 技术成熟,可以处理大型构建
*可定制的插件(plugins),定制能力强
* 即是Java程序员先编译工具~
Gradle安装及环境部署
### 安装
下载地址:https://gradle.org/gradle-download/?_ga=1.168710433.1636299837.1479991326
文档位置:https://docs.gradle.org/current/userguide/installation.html
下载后解压到电脑指定位置并设置环境变量。
当然,你也可以使用sudo apt 安装,这样就不需要手动设置环境变量了。
### Gradle 包装器
Gradle 本地打包无需在PC 上安装Gradle。 Google推出了Gradle Wrapper的概念,为每个项目在本地配置指定版本的Gradle。这允许每个项目支持使用不同的Gradle 版本构建项目,并允许包装器与项目同步保存,以便可以在其他PC 机器上安装和使用,而无需安装Gradle。集成的gradle版本。
如何创建自己的gradlw 包装器?
首先,在您的项目下添加一个build.gradlw 文件。
””
任务createWrapper( type: 包装器){
gradleVersion='2.1-预览-1'
}
””
运行**gradle cW** 将生成必要的包装器。这是目录结构和代码:
## 对项目结构的基本了解
Gradle 项目有两个概念:项目和任务,其中任务从属于项目,每个构建都在模块项目中进行管理。
这里我们有一个android 项目,显示了gradle 中的基本项目构建结果。
### Gradle 管理的Android 项目的基本结构
项目根目录包含gradlewrapper相关文件以及整个项目构建的相关配置。
app目录为主项目目录,其中放置主项目模块,子模块目录可以包含多个子项目。每个模块项目的根目录都有一个build.gradle 文件,该文件定义了模块的编译方式。
#### 1 *settings.gradle* 配置整个项目的多个模块,如:
””
包含“:App”和“:WaveProgress”
包含“:SwitchButton”
项目(':SwitchButton').projectDir=new File('子模块/SwitchButton')
项目(':WaveProgress').projectDir=new File('子模块/Waveprogress/app')
””
如果每个模块的根目录是整个项目的根目录,则不需要指定projectDir。
#### 2 *local.properties* 用于放置本地PC相关的配置路径,例如关联的SDK存储路径。该文件不需要同步保存。
””
ndk.dir=/home/android-sdk-linux/ndk-bundle
sdk.dir=/home/android-sdk-linux
””
#### 3 *gradle.properties* 设置或分配一些变量给gradle
””
## 项目范围的Gradle 配置。
#
# 有关如何配置构建环境的更多信息,请访问:
#http://www.gradle.org/docs/current/userguide/build_environment.html
#
# 指定用于守护进程的JVM 参数。
# 此设置在调整内存设置时特别有用。
# 默认值: -Xmx10248m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#
# 如果设置,Gradle 将在孵化并行模式下运行。
# 仅在独立项目中使用此选项。有关详细信息,请参阅。
http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:de Coupled_projects
# org.gradle.Parallel=true
#2016 年1 月21 日星期四20:02:21 CST
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=8118
””
#### 4 *build.gradle* 位于根目录
””
//顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。
构建脚本{
存储库{
jcenter()
}
依赖项{
类路径“com.android.tools.build:gradle:2.1.2”
}
}
所有项目{
存储库{
jcenter()
}
}
””
整个项目中的相关全局变量和引用都在这里定义。默认情况下,Android项目指向这里的jcenter()代码存储库。 Gradle 有三个仓库,你可以在这里配置: *maven* *ivy* 和一个本地*flat* 仓库。
””
Maven{
网址“.”
}
常春藤{
网址“.”
}
平面目录{
网址“.”
}
””
当然,这些仓库允许你定义别名,但直接引用别名更方便,如下所示:
””
存储库{
jcenter()
}
””
在某些场景下,Maven还需要引用本地库,比如Java项目引用了一些Android库。 Maven 还可以像这样设置m2repository 目录:
””
Maven {
URL '/home/android-sdk-linux/extras/android/m2repository'
}
””
#### 5 Android编译文件build.gradle
””
//添加插件
apply plugin: 'com.android.application' //Android项目插件
apply plugin: 'com.neenbedankt.android-apt' //可以添加多个插件
安卓{
compileSdkVersion 24 //编译版本
buildToolsVersion deps.bTVersion //编译工具版本
defaultConfig { //项目默认设置应用于buildTypes相关版本
应用程序ID 'com.canking.bind.cxinjectdemo'
minSdk版本15
目标SDK版本24
版本代码1
版本名称“1.0”
}
buildTypes { //编译版本控制。可以进行多种设置
发布{
minifyEnabled false //混乱
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
依赖项{//依赖项模块
编译fileTree(dir: 'libs', include: ['*.jar'])
编译deps.supportCompat
编译deps.supportv7
测试编译“junit:junit:4.12”
编译项目(':bindview')
编译项目(':animationlib')
apt 项目(':javabind')
}
””
### Gradle 任务
Gradle 的Android 插件提供了四种评分任务。
组装构建项目输出
检查执行发现和测试任务
构建用于组装和检查接头
不错的清洁工作
buildType的不同版本的调平任务被组合成新的不同任务。
喜欢:
””
./gradlew 汇编调试
””
在介绍Gradle Wrapper 时,细心的同学会注意到gradle 命令支持缩写,例如:
C.W.
./gradlw AD
””
您可以通过“gradletasks”查看项目中的所有任务。
问题
如何自定义编译gradle项目,包括如何扩展项目build.gradle以及如何自己打包逻辑并等待。如果你想掌握这些技能,你需要学习Groovy,Gradle的写作语言。更灵活的构建系统可以帮助您构建更复杂的项目。
总而言之,在下一节中,您将学习Groovy 语音的基础知识,并更深入地了解Gradle。
作者主页:http://www.canking.win/
新浪:http://weibo.com/canking666
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。