Gradle的介绍
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。
面向Java应用为主。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。
Gradle入门知识
projects 和 tasks是Gradle中最重要的两个概念,任何一个Gradle构建都是由一个或者多个project组成,每个project可以是一个jar包,一个web应用,或者一个android app等,每个project又由多个task构成,一个task其实就是构建过程中一个原子性的操作,比如编译、拷贝等。
一个build.gradle文件是一个构建脚本,当运行gradle命令的时候会从当前目录查找build.gradle文件来执行构建。下面我们来看下gradle的Hello World。在build.gradle构建文件中输入以下构建脚本:
task hello {
doLast {
println 'Hello world!'
}
}
task定义了一个任务,这个任务名字是hello。doLast是Task的方法,意思是在该hello任务执行之后作的事情,可以用一个闭包配置它,这里是输出Hello world!字符串。我们在终端里执行如下命令运行查看结果:
$gradle hello -q
Hello world!
Android Studio的结构
这里新建一个android项目,选择Project结构模式,下面是项目的结构示意图
├── ApplicationName #项目路径
│ ├── .gradle
│ ├── .idea
│ ├── app #Android App目录
│ │ ├── build #构建输出目录
│ │ ├── libs#so相关库
│ │ ├── src #源代码,资源等
│ │ └── .gitignore
│ │ └── app.im
│ │ └── buidle.gradle#构建脚本
│ │ └── proguard-rules.pro#proguard混淆配置
│ ├── build
│ │ ├── intermediates
│ ├── gradle
│ │ ├── wrapper
│ └── .gitignore
│ └── buidle.gradle #工程构建文件
│ └── gradle.properties#gradle的配置
│ └── gradlew #gradle wrapper linux shell脚本
│ └── gradlew.bat
│ └── local.properties #配置Androod SDK位置文件
│ └── MyApplication.iml
│ └── settings.gradle #工程配置
├── External Liraies#类库、jar等
settings.gradle用于配置project,标明其下有几个module,比如这里p一个:ape
module
include ':app'
build.gradle(Project:projectName)是一个顶级的build配置文件,在这里可以为所有project以及module配置一些常用的配置。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
//使用jcenter库
jcenter()
}
dependencies {
// 依赖android提供的1.3.0的gradle build
classpath 'com.android.tools.build:gradle:1.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
//为所有的工程的repositories配置为jcenter
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(Module:moduleName)用于module的配置,也是最重要的部分
apply plugin: 'com.android.application'
android {
compileSdkVersio