Gradle使用总结
一、Gradle 下载与配置
1.下载
访问https://services.gradle.org/distributions/下载指定版本的Gradle,比如Gradle-2.14.1-all.zip2.配置
解压下载的压缩包,将gradle的路径配置到环境变量中,以mac为例:
cd ~
vi .bash_profile
在.bash_profile文件中配置:
export JAVA_HOME_7=/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
export JAVA_HOME_8=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
export JAVA_HOME=$JAVA_HOME_8
export ANDROID_HOME=/Users/haibozheng/Library/Android/sdk
export GRADLE_HOME=/Users/haibozheng/Documents/gradle_241/gradle-2.14.1 # 配置Gradle
export PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$GRADLE_HOME/bin # 配置Gradle
然后使配置生效
source .bash_profile
在命令行中使用:
$ gradle -version
------------------------------------------------------------
Gradle 3.3
------------------------------------------------------------
Build time: 2017-01-03 15:31:04 UTC
Revision: 075893a3d0798c0c1f322899b41ceca82e4e134b
Groovy: 2.4.7
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_131 (Oracle Corporation 25.131-b11)
OS: Mac OS X 10.12.4 x86_64
当然,你也可参见官方文档:https://gradle.org/install
二、Gradle在android项目中的配置
(1) setting.gradle
指定当前项目下总共有多少个module,用逗号分隔,项目名称前面有冒号;,比如:
include ':app', ':lib'(2) 外层build.gradle
比如一个简单的项目的配置为:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
}
}
allprojects {
repositories {
mavenLocal()
maven {
credentials {
username "admin"
password "**"
}
url "http://xxxx"
}
jcenter()
}
}
这里,首先看buildscript闭包,它配置的是打包插件的仓库以及项目要使用的打包插件的依赖。比如我们使用了com.android.tools.build:gradle:2.2.3
插件,它对应的仓库在jcenter中。其次看allprojects闭包,它是为每个子项目也就是module配置仓库。当子项目获取依赖时,会按照优先级,依次从mavenLocal,maven,jcenter中拉取依赖。
- (3) module的build.gradle
是针对module的打包进行的配置,比如:
apply plugin: 'com.android.library'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
provided 'com.android.support:appcompat-v7:25.0.1'
provided 'com.android.support:recyclerview-v7:+'
testCompile 'junit:junit:4.12'
}