android基础:构建神器gradle

什么是gradle

项目自动化构建工具,用以取代xml的繁琐配置,目前大量用于android开发。
作用提现在以下两点

  • 首先Gradle需要找到你工程需要的东西,这些东西就是所谓的“依赖”。
  • 另外Gradle需要构建和上传你工程的产出,这就是所谓的发行。

如何学习

  • 了解Groovy基本语法

Gradle基于Groovy语言,Groovy语法的学习,推荐官方文章Differences with Java和IBM developerWorks的精通Groovy

  • 粗读Gradle User Guide和Gradle Plugin User Guide

gradle概念

gradle构建android工程

gradle实用技能

1.解决重复依赖

如何发现

  • 方法1

windows环境下

1
2
命令行执行
gradlew -q dependencies module名称:dependencies --configuration compile

mac os环境下

1
2
命令行执行
gradle -q dependencies yourProject:dependencies --configuration compile

  • 方法2

下载gradle view插件

如何解决

在重复引用的依赖里,去除对引入的其他依赖

eg:

1
2
3
4
5
6
7
8
dependencies {
compile('org.hibernate:hibernate:3.1') {
//excluding a particular transitive dependency:
exclude module: 'cglib' //by artifact name
exclude group: 'org.jmock' //by group
exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group
}
}

需要注意的是,当我们依赖本地module时,
eg:

1
2
3
4
5
6
7
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.android.support:support-v4:23.3.0'
···

···
}

2 使用gradle统一配置sdk和dependencies版本

首先在工程目录下新建config.gradle文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
ext {
android = [compileSdkVersion:23,
buildToolsVersion:"23.0.1",
minSdkVersion:15,
targetSdkVersion:23]
dependencies = [
appcompatv7:'com.android.support:appcompat-v7:23.3.0',
junit:'junit:junit:4.12',
xlog:'com.elvishew:xlog:1.3.0',
flexbox:'com.google.android:flexbox:0.2.5'
]
}

在工程的build.gradle里引入

1
apply from:'config.gradle'

然后在app或者module的build.gradle使用这些配置信息,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion

defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode 1
versionName "1.0"
}
}

dependencies {
...
//
compile rootProject.ext.dependencies.appcompatv7
...
}

参考文献

Android项目中如何用好构建神器Gradle?

Gradle之依赖管理