一、Gradle基础
1、Gradle概念
Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
2、Gradle构建
Android Studio使用Gradle构建工具,Eclipse的ADT插件使用的是Ant构建工具。要知道构建的概念首先了解下程序的生成过程,可以百度一下,有很多优秀的博文。通过对博客的阅览,初步知道程序的生成过程其实就是将.dex文件、资源文件和.aidl文件打包成apk的过程。
Gradle针对不同语言有不同插件,在Android平台叫Android Gradle Plugin。
3、为什么使用Gradle
因为Gradle内置通过Maven和Lvy进行依赖管理。
依赖管理又是什么意思呢?蛮简单来说就是管理依赖的jar包。
那仓库又是什么东西呢?仓库:简单理解就是存的一些jar包的云端
常见的仓库有如下三种:
* maven
* ivy
* jcenter仓库地址
常见写法
mavenCentral()别名,表示依赖是从Central Maven 2仓库中获取的。
jcenter()别名,表示依赖是从Bintary’s JCenter Maven仓库中获取的。
mavenLocal()别名,表示依赖是从本地的Maven仓库中获取的
仓库地址举例
repositories {//默认仓库
jcenter()//它是当前世界上最大的Java和Android开源软件构件仓库
}
4、Gradle配置
1、配置Gradle的环境变量:
①配置GRADLE_HOME-->D:\Android\Android Studio\gradle\gradle-2.10
②配置path-->%GRADLE_HOME%\bin
2、配置GRADLE_USER_HOME(随意指定一个目录主要是防止使用c盘过大空间)
-->D:\java\gradle\.gradle 默认是在C:\Users\ifengouy\.gradle
注:可在工作空间的build.gradle查看Gadle的使用的版本。
二、项目中Gradle的含义
在AS项目中,项目下以及每个modle各有一个gradle脚本。
1、MyApplication/build.gradle
这个文件是整个项目的gradle基础配置文件,如下:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
一个是声明仓库的源,这里可以看到是指明的jcenter(),之前版本则是mavenCentral(), jcenter可以理解成是一个远程仓库,兼容maven中心仓库,而且性能更优。
另一个是声明了android gradle plugin(Gradle插件)版本,需和AS安装目录下的gradle版本一致。入我的在D:\Android\Android Studio\gradle目录下:
2、MyApplication/App/build.gradle
这个文件是app文件夹下这个Module的gradle配置文件,也可以算是整个项目最主要的gradle配置文件,如图:
// 声明是Android程序,如果是.library则为类库
apply plugin: 'com.android.application'
android {
// 编译SDK的版本,对应sdk的platforms
compileSdkVersion 23
// build tools的版本,对应sdk的build-tools
buildToolsVersion "23.0.3"
//等价于eclispe的<usesdk/>
defaultConfig {
// 应用的包名
applicationId "com.example.ifengouy.myapplication"
//等价于eclipse的minSdkVersion,表示支持的最低的android系统
minSdkVersion 15
//等价于eclipse的targetSdkVersion,表示支持的最高android系统
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
// java版本
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes {
//发行
release {
//打包的时候是否进行压缩,false表示不压缩
minifyEnabled false
//proguard-rules.pro定义混淆规则的文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
//依赖
dependencies {
//编译libs目录下的所有jar包
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
// 编译extras目录下的ShimmerAndroid模块
compile project(':extras:ShimmerAndroid')
}
说明:buildToolsVersion:这个需要你本地安装该版本才行,很多人导入新的第三方库,失败的原因之一是build version的版本不对,这个可以手动更改成你本地已有的版本或者打开SDK Manager 去下载对应版本。
3、MyApplication/settings.gradle
这个文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module,如我的MyApplication项目就包含app这一个model。
include ':app'
4、注意如下三个常见错误
compileSdkVersion不存在
buildToolsVersion不存在
com.android.tools.build:gradle:2.1.0不存在
如果出是由于如上三个版本不对,需进行配置,配置成电脑上已经安装的版本即可。