Android Gradle

本文参考资料:
最重要的Gradle文档:
http://tools.android.com/tech-docs/new-build-system/user-guide

gradle user guide 的中文翻译团队(文档)
https://dongchuan.gitbooks.io/gradle-user-guide-/content/introduction.html

伯乐系列:
http://blog.jobbole.com/71999/

StormZhang(非常简单的入门):
http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/

两个非常重要的概念

Project
Task

project包含了多个Task

一些准备工作

使用Android Studio新建的工程会默认使用Gradle做管理。所以最好新建一个实验用工程。在目录下会生成相应的Gradle文件。

对应的文件

Gradle构建脚本(build.gradle)指定了一个项目和它的任务。
Gradle属性文件(gradle.properties)用来配置构建属性。
Gradle设置文件(gradle.settings)对于只有一个项目的构建而言是可选的,如果我们的构建中包含多于一个项目,那么它就是必须的,因为它描述了哪一个项目参与构建。每一个多项目的构建都必须在项目结构的根目录中加入一个设置文件。

一个简单的Task实例

gradle 命令会在当前目录中查找一个叫 build.gradle 的文件. 我们称这个 build.gradle 文件为一个构建脚本 (build script), 但是严格来说它是一个构建配置脚本 (build configuration script). 这个脚本定义了一个 project 和它的 tasks.

例如:
新建文件build.gradle。
然后在其中新建一个任务hello

task hello{
    doLast{
        println 'hello task !'
    }
}

然后执行

gradle hello

即会执行

:hello
hello task !

BUILD SUCCESSFUL

Total time: 0.821 secs

Android Studio 中的Gradle

这部分内容需要阅读的资料有:

Configuring Gradle Builds
http://developer.android.com/intl/zh-cn/tools/building/configuring-gradle.html

在AS中新建一个工程,可以发现两个有意思的事情。
1.在工程的根目录下。有一个build.gradle,而在module下,同样有一个build.gradle。
2.gradlew*这一类文件是什么用途?

dongergoudeMacBook-Pro:low Fridge$ pwd
/Users/Fridge/Desktop/pp/low
dongergoudeMacBook-Pro:low Fridge$ tree -L 2
.
├── build
│   └── intermediates
├── build.gradle
├── gradle
│   └── wrapper
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
├── low.iml
├── low_main
│   ├── build
│   ├── build.gradle
│   ├── libs
│   ├── low_main.iml
│   ├── proguard-rules.pro
│   └── src
└── settings.gradle

问题1:外层的build.gradle

module low_main中的build.gradle 暂且不表。
外层build.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:1.3.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
}

这里这个buildScript是做什么的呢?我在这里找到了答案:
http://www.cnblogs.com/huang0925/p/3940528.html
大致是说,这个东西是gradle自身脚本运行时所需要的依赖。

问题2:奇怪的gradlew

这个问题的答案在这里:
https://docs.gradle.org/current/userguide/gradle_wrapper.html

大意是说:是为了统一gradle的版本,在运行gradlew的时候会去下载这个gradle中规定的版本。这也是为什么我们导入工程时,gradle会有一个gradle wrapper的选项了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值