关于Android Studio 中的 gradle

本文参考了开发技术前线 www.devtf.cn
(该文详细介绍了 Jcenter 和 Maven 这两个中央仓库)和Stromzhang的Android studio系列教程之Gradle两篇博文,以及Android官网文档

创世之初,世上只有 Make 一种构建工具,后来,其发展为 GNU Make。但是,由于需求的不断涌现,码农的世界里逐渐演化出了千奇百怪的构建工具。

当前,JVM 生态圈由三大构建工具所统治 Ant,Maven,Gradle。Gradle和前两者类似,但是却结合了前两者的优点,在此基础之上做了很多改进。也就是说,gradle 并不是 Android Studio 所特有的,他同时可以来构建其他 Java 项目。

在学习 gradle 之前,如果对构建工具不怎么熟悉,建议学习一下 Maven。限于文章篇幅,我在这里对Maven就不再详细介绍了。接下来我就以一个小的项目为例来给大家介绍一下 Gradle。

这是一个 Android 项目的文件目录:
\"\"

build.gradle (Project)

这是 Project 下的 gradle 文件(第一个gradle文件):

\"\"

buildscript 中可以声明 gradle 脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven 仓库地址等。
表示: gradle脚本自身使用了Jcenter这个中央仓库。
依赖的路径为\’com.android.tool.build:gradle:1.5.0\’
jcenter是一个由 bintray.com 维护的 Maven 仓库 。
Maven Central 则是由 sonatype.org 维护的 Maven 仓库

allprojects 中可以声明依赖项、仓库地址等整个项目自身需要的资源。表示:仓库为 jcenter。(现在新版本的 Android Studio默认的仓库为Jcenter
我们在项目的 build.gradle 文件中如下定义仓库,就能使用jcenter了:

build.gradle (Module)

这是 Module 下的 gradle 文件:
\"\"

apply plugin: \’com.android.application\’表示项目类型为Android 应用程序。

compileSdkVersion 17,说明要运行该源码,你必选已经安装了android API 17,也就是 API Level。以下是android官网上对应SDK版本所对应的API Level。
\"\"

buildToolsVersion 23.0.2 说明要运行该源码,你必须已经安装了 android sdk build-tools 23.0.0(中间会有一些小的版本比如23.0.1,23.03等等,但没有影响)。 buildeToolVersion 是你构建工具的版本,其中包括了打包工具 aapt、dx等等。
(注意: buildToolVersion 的版本号必须大于或者等于 compileSdkVersion 和 targetSdkVersion 的版本号。)

applicationId \”com.example.customview01\” 说明项目的包名的地址为com.example.customview01。

minSdkVerison 8 表示向下低至android API 8,即 androd 2.2的版本都要安装上。Android 的manifest 文件中提供了 标签。该标签中有三个属性,分别是minSdkVersion,targetSdkVersion,maxSdkVersion。官网上都有详细解释。在这三个属性比较容易让人迷惑,我也是仔细读了谷歌的官方文档,才弄清楚这三个属性的意义。此外,在项目构建时,还有个概念叫 build target,在本文中也会进行分析。

targetSdkVersion 17 表示这个应用程序运行的手机系统环境最好是17( Android 4.2 或者 Android 4.2.2)低于这个版本的的手机系统运行这个应用程序时,将会导致该应用程序的某些新特性无法表现出来。

minifyEnabled false 表示不进行代码混淆,代码混淆技术是一种防止反编译,保护源代码的一种技术。具体可以查维基百科

proguardFiles getDefaultProguardFile(\’proguard-android.txt\’), \’proguard-rules.txt\’ 表示文件的位置。

最下面的 dependencies 里指明的就是需要用到的第三方库\’com.android.support:support-v4:18.0.0\’

gradle-warpper

\"\"

这个目录下有个 wrapper 文件夹,里面可以看到有两个文件,文件中声明了它指向的目录和版本。只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。

总结

这是我第一次接触项目构建工具 Gradle,所以查了很多资料,包括一些 Gradle 的官方文档以及一些优秀的博客,同时也了解 Gradle 的前世今生(这个背景很重要,因为我之前都不知道
Gradle 是干嘛的),以及类似的项目构建工具 Ant,maven。知道了项目构建工具对实际项目开发的重要性。

发表评论

电子邮件地址不会被公开。 必填项已用*标注