打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Gradle系列《一》: 基础概念
2016年07月08日 13:59:52

什么是Gradle

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。——维基百科

以下简要介绍几个相关概念:
1. 建构工具做的工作包括:编译源代码、运行测试、拷贝Class文件到目标目录、签名、打包、依赖管理等。目的是让开发人员更加专注于代码的编写。
2. Groovy:是Java平台上设计的面向对象编程语言。这门动态语言拥有类似Python、Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用。Groovy的语法与Java非常相似。

相对于Ant和Maven来说,Gradle可以算是新一代的自动化构建工具,而且Gradle在基于它们的基础上优化的同时还可以兼容这两者。

Gradle与Android Studio

Android Studio(以下采用缩写AS)采用的构建工具即Gradle,Gradle可以辅助我们简化很多复杂的操作流程如:依赖管理、多渠道打包、签名信息配置、批量修改生成的apk文件名等,因此学习Gradle显得更为重要。当然,以下的介绍的Gradle相关特性和使用都是以AS为例的。

Android Studio工程中与Gradle相关的目录

使用Android Studio新建一个工程之后,其目录结构是这样的(需要强调一下,以下的目录结构以及文件内容都只是新建项目时默认的样子,更高级的用法以及特点将会在后续的章节提及):
├── app········· #Android App目录
│ ├── app.iml···············AS识别项目的配置文件
│ ├── build··················#模块构建输出目录(代码编译后生成的文件存放的位置、生成的Apk文件等)
│ ├── build.gradle····#module构建脚本
│ ├── libs····················· 相关库文件目录
│ ├── proguard-rules.pro··proguard混淆配置
│ └── src·······················源代码,资源等

├── build··············#构建输出目录
│ ├── generated
│ └── intermediates

├── build.gradle·····#工程构建文件

├── gradle
│ └── wrapper

├── gradle.properties······#gradle相关的全局属性设置
├── gradlew ·························#linux下的gradle wrapper可执行文件
├── gradlew.bat ·················#windows下的gradle wrapper可执行文件
├── local.properties···········配置Androod SDK位置文件
└── settings.gradle··········#工程配置
接下来详细介绍几个与Gradle相关的文件以及目录:

  • build.gradle #工程构建文件
    顶级构建文件,可以为所有子项目/模块添加常用的配置选项。
//buildscript中的声明是gradle脚本自身需要使用的资源//可以声明的资源包括依赖项、第三方插件、maven仓库地址等。buildscript {    repositories {        jcenter()  //使用jcenter库        //mavenCentral()    }    dependencies {        // 配置使用gradle所需要依赖的版本库        classpath 'com.android.tools.build:gradle:2.1.0'        //注意:不要在这里配置项目所需要的依赖    }}//项目自身所需要的一些配置allprojects {    repositories {        jcenter()    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • app/build.gradle #module构建文件
    模块(module)中的构建文件,对当前模块生效。开发过程中最需要注重的一个文件,应用的相关特性都在这里进行配置。
//表示该module是一个应用(application)模块,应用了com.android.application插件;//(如果是一个android library,那么这里的是apply plugin:'com.android.library')apply plugin: 'com.android.application'//安卓项目相关的配置,后续章节将进行更为详细的介绍android {    //编译项目所用的SDK版本(即编译时的API版本),com.android.support的版本需要与这个一致    //建议(总是)采用最新版本    compileSdkVersion 23    //构建工具版本    buildToolsVersion "23.0.3"    defaultConfig {        //安装时,依据该ID区分是否为同一个应用        applicationId "com.wiky.supporttest"        //最低支持的系统版本(必须>=所有依赖库所支持的最低版本)        minSdkVersion 9        //举例说明其作用:假设我们compileSdkVersion采用了23(6.0),但是项目暂时还未对6.0的特性(如运行时权限)做相应的处理,        //那么可以设置targetSdkVersion的版本低于23。这样,应用仍可以正常运行在6.0的机子上(当然也就不具有运行时权限的特性)。        targetSdkVersion 23        versionCode 1        versionName "1.0"    }    // buildTypes是构建类型,常用的有release和debug两种,可以在这里面启用混淆,启用zipAlign以及配置签名信息等。后面再具体介绍    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}//该module所需的依赖库配置dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.3.0'}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

PS:关于compileSdkVersion 和 buildToolsVersion这两个版本,在我们导入一些开源的项目时,也是需要关注的。最好在导入项目之前,找到对应的build.gradle文件,然后将其版本号改为当前可正常使用的版本号(即你本地能够顺利运行的项目中对应的版本号)。这样可以很大程度上避免导入项目时的“卡死”(构建中…)现象。

  • settings.gradle #工程配置
    这个文件是全局的项目配置文件,里面主要声明一些需要加入 gradle 的 module,即告诉gradle项目中有哪些模块(module)需要处理,文件内容:
//如果有多个module的话,格式如:include ':app', ':otherModule',..... include ':app'
  • 1
  • 2
  • gradle.properties #gradle相关的全局属性设置
    在google开源的[iosched][1]项目中,可以看到他们利用了该文件配置了一些builde.gradle中需要用到的常(变)量, 如com.android.support. 的版本号以及签名信息相关的配置。利用该文件进行统一依赖管理可参见:[Gradle统一依赖管理][2]

  • gradle.wrapper (Gradle Wrapper )
    它允许你的机器在不需要安装运行的情况下就能运行Gradle脚本(我们在下载AS后可以直接开始使用gradle、开发项目,而无需另外下载及安装gradle,主要归功于这一特性),而且更重要的是它确保了build脚本运行在指定版本的Gradle。它会从中央仓库中自动下载Gradle,解压到你的文件系统,然后用来build。

参考资料:

Gradle User Guide

Gradle In Action(Gradle实战)中文版

如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
史上最详细的Android Studio系列教程四
将Eclipse代码导入到AndroidStudio的两种方式
Android Studio 入门级教程(三):gradle项目构建
Android Studio目录结构浅析
分析第一个android应用的目录结构【Android专题1】
Android Studio 常用功能介绍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服