大家好,又见面了,我是你们的朋友全栈君。
Gradle 是什么
Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
安装Gradle
在 Android Studio 中新建项目成功后会下载Gradle,貌似这个过程不翻墙也是可以下载,但是访问特别慢,建议翻墙下载。那么下载的 Gradle 到什么地方呢,或者说Gradle的本地目录在什么地方呢
- Mac上会默认下载到 /Users/<用户名>/.gradle/wrapper/dists 目录
- Win平台会默认下载到 C:\Documents and Settings\<用户名>.gradle\wrapper\dists 目录
你会看到这个目录下有个 gradle-x.xx-all 的文件夹, 如果下载实在太慢,可以自己手动到Gradle官网下载对应的版本,然后将下载的.zip文件(也可以解压)复制到上述的gradle-x.xx-all 文件夹下。
Gradle基本概念
我个人理解是 Gradle 在 Android Studio 中有三个意思
- Gradle plugin(Gradle 插件及插件版本)
- Gradle(Gradle 的版本)
- Gradle wrapper(安装辅助工具)
下面我用一个开源项目开详细分析一下,加深自己对 Gradle 理解,首先这个项目有两个Moudle,一个是应用程序模块,一个是库模块
1. 9GAG/build.gradle(Gradle plugin)
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 |
值得注意的是,你的AndroidStudio 版本越高,你的Gradle插件版本越高,目前Android Studio 2.3.2的版本对应的是Gradle Plugin 版本是2.3.2
2. 9GAG/app/build.gradle(Gradle)
// 声明是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是最新gradle版本的写法,
- 应用程序的声明是
apply plugin: ‘com.android.application’
- 模块的声明是
apply plugin: ‘com.android.library’
。
- 应用程序的声明是
- buildToolsVersion这个需要你本地安装该版本才行,很多人导入新的第三方库,失败的原因之一是build version的版本不对,这个可以手动更改成你本地已有的版本或者打开 SDK Manager 去下载对应版本。
- compileOptions是指java的版本,android 5.0开始默认安装jdk1.7才能编译,但是mac系统自带jdk的版本是1.6,所以需要手动下载jdk1.7并配置。
- proguardFiles这部分有两段,前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事,这个文件的目录在 /tools/proguard/proguard-android.txt , 后一部分是我们项目里的自定义的混淆文件,目录就在 app/proguard-rules.txt , 如果你用Studio 1.0创建的新项目默认生成的文件名是 proguard-rules.pro , 这个名字没关系,在这个文件里你可以声明一些第三方依赖的一些混淆规则,由于是开源项目,9GAG里并未进行混淆。
compile project(‘:extras:ShimmerAndroid’)
这一行是因为9GAG中存在其他Module。- 以上文件里的内容只是基本配置,其实还有很多自定义部分,如自动打包debug,release,beta等环境,签名,多渠道打包等,后续会单独拿出来讲解。
3. 9GAG/gradle/wrapper.properties(Gradle wrapper)
#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。
- 其中,GRADLE_USER_HOME 表示用户目录。在 windows 下是 %USERPROFILE%/.gradle,例如C:\Users\.gradle\;在 Linux下是 $HOME/.gradle,例如~/.gradle。
- PROJECT 表示工程的当前目录,即 gradlew 所在的目录。
4. 9GAG/settings.gradle
include ':app', ':extras:ShimmerAndroid'
文件中的 app, extras:ShimmerAndroid
都是module,如果还有其他module都需要按照如上格式加进去
版本变更方法–使用 Android Studio
- 修改 build.gradle 插件版本号
dependencies { classpath 'com.android.tools.build:gradle:1.0.0' }
- 修改使用的 Gradle 版本(gradle wrapper 中 distributionUrl 修改 gradle版本与插件版本匹配)
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/
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154153.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...