Gradle是一个在Java构建技术世界里具有巨大突破性的构建工具。Gradle具有如下特性:
1)一个像Ant一样灵活且通用的构建工具。
2)一种可切换的,像Maven一样的基于约定的构建框架,却又从不约束你(约定优于配置)。
3)对多项目构建的强力支持。
4)对依赖管理的强力支持(基于Apache Ivy)。
5)对已有的Maven和Ivy仓库有着全面的支持。
6)支持可传递性的依赖管理,而不需要远程仓库或者pom.xml和ivy.xml配置文件。
7)Gradle能够很好地支持Ant任务和构建 。(有更好的翻译欢迎提议)
8)支持用Groovy语言编写Gradle的脚本。
9)拥有丰富的领域模型来构建你的脚本。
描述:
Gradle的核心是一个丰富的可扩展的基于Groovy的领域特定语言(DSL)。Gradle通过提供说明性语言元素将说明性构建推到下一层,您可以组装。这些元素也提供build-by-convention支持Java、Groovy、OSGi、Web和Scala项目。更多,这个说明性语言是可扩展的。添加自己的新语言元素或提高现有的,从而提供简洁、易于维护和理解构建。
不同的团队喜欢通过不同的方法来管理工程的外部依赖。Gradle对不同的管理策略皆提供了支持。从依赖管理与远程Maven和lvy库到本地文件系统上的jar包或目录都被包含在内。
buildscript :用于设置驱动构建过程的代码。
jcenter():声明使用 maven 仓库。在老版本中,此处为 mavenCentral()。
mavenCentral() :表示依赖从 Central Maven 2 仓库中获取。
jcenter() :表示依赖从 Bintary’s JCenter Maven 仓库中获取。
* **mavenLocal()** :表示依赖从本地的Maven仓库中获取。
dependencies :声明了使用 Android Studio gradle 插件版本。一般升级AS或者导入从Eclipse中生成的项目时需要修改下面gradle版本。具体的版本对应关系,请点击。
allprojects:设置每一个 module 的构建过程。在此例中,设置了每一个 module 使用 maven 仓库依赖。
include ':app':表示当前 project 下有一个名称为 app 的 module 。
我们可以使用 /gradlew.bat 在命令行中进行 Gradle 任务。但是,建议使用 Android Studio 的 Gradle 功能面板进行 Gradle 任务。
/build.gradle 文件:
配置所有 android 构建过程需要的参数。
compileSdkVersion:
用于编译的 SDK 版本。
buildToolsVersion:
用于 Gradle 编译项目的工具版本。在 SDK 中可以查看本机已安装的版本。
defaultConfig:
Android 项目默认设置。
applicationId:应用程序包名。
minSdkVersion:最低支持 Android 版本。
targetSdkVersion:目标版本。实际上应为测试环境下测试机的 Android 版本。
versionCode:版本号。
* **versionName**:版本名称。
buildTypes:
编译类型。默认有两个: release 和 debug 。我们可以在此处添加自己的 buildTypes ,可在 Build Variants 面板看到。
minifyEnabled:
是否使用混淆。在老版本中为 runProguard ,新版本之所换名称,是因为新版本支持去掉没使用到的资源文件,而 runProguard 这个名称已不合适了。
* **proguardFiles**:
使用的混淆文件,可以使用多个混淆文件。此例中,使用了 **SDK** 中的 **proguard-android.txt** 文件以及当前 **module** 目录下的 **proguard-rules.pro** 文件。
dependencies:
用于配制引用的依赖。
compile fileTree(dir: 'libs', include: ['*.jar']):
引用当前 module 目录下的 libs 文件夹中的所有 .jar 文件。
* **compile 'com.android.support:appcompat-v7:21.0.3'**:
引用 **21.0.3**版本的 **appcompat-v7** (也就是常用的 **v7** library 项目)。
> 在 **Eclipse** 中,使用 **android support** ,需要在 SDK 中下载 **Android Support Library** 。在 Android Studio中,使用 **android support** ,需要在 SDK 中下载 **Android Support Repository** ,且项目中使用的版本不能大于 SDK 中的版本。
总结:Gradle基本就是这么回事,不过这里只是简单的一点介绍!
1)一个像Ant一样灵活且通用的构建工具。
2)一种可切换的,像Maven一样的基于约定的构建框架,却又从不约束你(约定优于配置)。
3)对多项目构建的强力支持。
4)对依赖管理的强力支持(基于Apache Ivy)。
5)对已有的Maven和Ivy仓库有着全面的支持。
6)支持可传递性的依赖管理,而不需要远程仓库或者pom.xml和ivy.xml配置文件。
7)Gradle能够很好地支持Ant任务和构建 。(有更好的翻译欢迎提议)
8)支持用Groovy语言编写Gradle的脚本。
9)拥有丰富的领域模型来构建你的脚本。
描述:
Gradle的核心是一个丰富的可扩展的基于Groovy的领域特定语言(DSL)。Gradle通过提供说明性语言元素将说明性构建推到下一层,您可以组装。这些元素也提供build-by-convention支持Java、Groovy、OSGi、Web和Scala项目。更多,这个说明性语言是可扩展的。添加自己的新语言元素或提高现有的,从而提供简洁、易于维护和理解构建。
不同的团队喜欢通过不同的方法来管理工程的外部依赖。Gradle对不同的管理策略皆提供了支持。从依赖管理与远程Maven和lvy库到本地文件系统上的jar包或目录都被包含在内。
AndroidStudio & Gradle:
一个 Android Studio 项目中,会存在多个 .gradle 文件。其中, project 目录下存在一个 build.gradle 文件和一个 settings.gradle 文件;每一个 module 会存在一个 build.gradle 文件。
Gradle文件格式如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
}
allprojects {
repositories {
jcenter()
}
}
默认的 project 目录下的 build.gradle 文件内容如上。buildscript :用于设置驱动构建过程的代码。
jcenter():声明使用 maven 仓库。在老版本中,此处为 mavenCentral()。
mavenCentral() :表示依赖从 Central Maven 2 仓库中获取。
jcenter() :表示依赖从 Bintary’s JCenter Maven 仓库中获取。
* **mavenLocal()** :表示依赖从本地的Maven仓库中获取。
dependencies :声明了使用 Android Studio gradle 插件版本。一般升级AS或者导入从Eclipse中生成的项目时需要修改下面gradle版本。具体的版本对应关系,请点击。
allprojects:设置每一个 module 的构建过程。在此例中,设置了每一个 module 使用 maven 仓库依赖。
你可以为 repositories 设置多个库。 Gradle 会根据依赖定义的顺序在各个库里寻找它们。在第一个库里找到就不会再在第二个库里进行寻找。
include ':app'
默认的 project 目录下的 settings.gradle 文件内容如上。可有可能默认情况下, project 目录下的 settings.gradle 文件不存在,你可以自己创建。include ':app':表示当前 project 下有一个名称为 app 的 module 。
如果你的一个 module 并不是 project 根目录下,你可以这么设置。
include ':app2'
project(':app2').projectDir = new File('path/to/app2')
我们可以使用 /gradlew.bat 在命令行中进行 Gradle 任务。但是,建议使用 Android Studio 的 Gradle 功能面板进行 Gradle 任务。
/build.gradle 文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "cc.bb.aa.myapplication"
minSdkVersion 10
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}
默认的 module 目录下的 build.gradle 文件内容如上。
apply plugin: 'com.android.application':
表示使用 com.android.application 插件。也就是表示,这是一个 android application module 。 com.android.library 表示,这是一个 android library module 。配置所有 android 构建过程需要的参数。
compileSdkVersion:
用于编译的 SDK 版本。
buildToolsVersion:
用于 Gradle 编译项目的工具版本。在 SDK 中可以查看本机已安装的版本。
defaultConfig:
Android 项目默认设置。
applicationId:应用程序包名。
minSdkVersion:最低支持 Android 版本。
targetSdkVersion:目标版本。实际上应为测试环境下测试机的 Android 版本。
versionCode:版本号。
* **versionName**:版本名称。
buildTypes:
编译类型。默认有两个: release 和 debug 。我们可以在此处添加自己的 buildTypes ,可在 Build Variants 面板看到。
minifyEnabled:
是否使用混淆。在老版本中为 runProguard ,新版本之所换名称,是因为新版本支持去掉没使用到的资源文件,而 runProguard 这个名称已不合适了。
* **proguardFiles**:
使用的混淆文件,可以使用多个混淆文件。此例中,使用了 **SDK** 中的 **proguard-android.txt** 文件以及当前 **module** 目录下的 **proguard-rules.pro** 文件。
dependencies:
用于配制引用的依赖。
compile fileTree(dir: 'libs', include: ['*.jar']):
引用当前 module 目录下的 libs 文件夹中的所有 .jar 文件。
* **compile 'com.android.support:appcompat-v7:21.0.3'**:
引用 **21.0.3**版本的 **appcompat-v7** (也就是常用的 **v7** library 项目)。
> 在 **Eclipse** 中,使用 **android support** ,需要在 SDK 中下载 **Android Support Library** 。在 Android Studio中,使用 **android support** ,需要在 SDK 中下载 **Android Support Repository** ,且项目中使用的版本不能大于 SDK 中的版本。
总结:Gradle基本就是这么回事,不过这里只是简单的一点介绍!