Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
在 Android Studio 中新建项目成功后会下载Gradle,貌似这个过程不也是可以下载,但是访问特别慢,建议下载。那么下载的 Gradle 到什么地方呢,或者说Gradle的本地目录在什么地方呢
你会看到这个目录下有个 gradle-x.xx-all 的文件夹, 如果下载实在太慢,可以自己手动到Gradle官网下载对应的版本,然后将下载的.zip文件(也可以解压)复制到上述的gradle-x.xx-all 文件夹下。
我个人理解是 Gradle 在 Android Studio 中有三个意思
下面我用一个开源项目开详细分析一下,加深自己对 Gradle 理解,首先这个项目有两个Moudle,一个是应用程序模块,一个是库模块
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
}
allprojects {
repositories {
jcenter()
}
}
这个文件是整个项目的gradle基础配置文件,内容主要包含了两个方面:一个是声明仓库的源,这里可以看到是指明的jcenter(),jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。另一个是声明了 Gradle Plugin 的版本,这个dependencies中的gradle:1.0.0代表的就是使用Gradle 插件版本 1.0.0。在编译过程中,如果Gradle插件版本与Gradle版本不匹配,编译就会失败。
目前一些的Gradle与Gradle Plugin版本的对应关系如下:
Gradle Plugin 版本 | Gradle 版本 |
---|---|
2.3.0+ | 3.3+ |
2.1.3 - 2.2.3 | 2.14.1+ |
2.0.0 | 2.10 - 2.13 |
1.5.0 | 2.2.1 - 2.13 |
1.2.0 - 1.3.1 | 2.2.1 - 2.9 |
1.0.0 - 1.1.3 | 2.2.1 - 2.3 |
Android Plugin for Gradle Release Notes
值得注意的是,你的AndroidStudio 版本越高,你的Gradle插件版本越高,目前Android Studio 2.3.2的版本对应的是Gradle Plugin 版本是2.3.2
// 声明是Android程序
apply plugin: 'com.android.application'
android {
// 编译SDK的版本
compileSdkVersion 21
// build tools的版本
buildToolsVersion "21.1.1"
defaultConfig {
// 应用的包名
applicationId "me.storm.ninegag"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0.0"
}
// java版本
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes {
debug {
// debug模式
}
release {
// 是否进行混淆
minifyEnabled false
// 混淆文件的位置
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
// 移除lint检查的error
lintOptions {
abortOnError false
}
}
dependencies {
// 编译libs目录下的所有jar包
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:21.0.2'
compile 'com.etsy.android.grid:library:1.0.5'
compile 'com.alexvasilkov:foldable-layout:1.0.1'
// 编译extras目录下的ShimmerAndroid模块
compile project(':extras:ShimmerAndroid')
}
这里需要说明几点:
apply plugin: ‘com.android.application’
apply plugin: ‘com.android.library’
。compile project(‘:extras:ShimmerAndroid’)
这一行是因为9GAG中存在其他Module。#Thu Dec 18 16:02:24 CST 2014
//distributionBase 是解压 gradle-2.14.1-all.zip 的文件的存放位置
distributionBase=GRADLE_USER_HOME
//distributionPath 是 distributionBase 指定的目录下的子目录
distributionPath=wrapper/dists
//zipStoreBase 是下载的 gradle-2.14.1-all.zip 所存放的位置
zipStoreBase=GRADLE_USER_HOME
//zipStorePath 是 zipStoreBase 指定的目录下的子目录
zipStorePath=wrapper/dists
//distributionUrl 是要下载的 gradle 的地址,使用哪个版本的 gradle,就在这里修改
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
这里需要说明几点:
下载位置可以和解压位置不一样。
zipStoreBase 和distributionBase 有两种取值:GRADLE_USER_HOME 和 PROJECT。
include ':app', ':extras:ShimmerAndroid'
文件中的 app, extras:ShimmerAndroid
都是module,如果还有其他module都需要按照如上格式加进去
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
gradle wrapper 中 distributionUrl 修改 gradle版本与插件版本匹配
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
本文大量参考引用以下两篇文章,包括图片和代码,感谢两位作者
http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/
http://hucaihua.cn/2016/09/27/Gradle_upgrade/