后面的系列博客,我将会写一写自己这段时间对于android的学习、认识、体会,希望能够与大家分享。

相信大家从ADT开发切换到android studio最大、最直观的变化就是gradle,因为在android studio里面是利用gradle去构建整个项目的。那么gradle到底是什么东西呢?为什么google官方提供的开发工具android studio里面要集成gradle呢?优势在哪呢?

gradle是一种构建工具,它抛弃了传统的基于xml构建脚本,而是采用基于Groovy的内部领域特定语言。说到这里你也许就会想知道什么是Groovy了吧?其实我自己对Groovy的认识也不是太深,只能简单的说你可以认为它是下一代的java语言,你可以认为它是现在的jvm,所以与java集成度是非常高的。那么下面就让我们来看看基于Groovy构建的gradle语法到底是什么样的?

当我们用android studio新建一个android项目之后,我们可以直观的看到现在的项目结构相比于ADT变化还是挺大的。在该项目结构下面我们同样能够找到java/res文件夹,看名字相信你也应该猜到该文件夹下面到底是放什么文件的。但是有变化的就是AndroidManifest.xml文件的放置位置,以及最下面多出来的build.gradle文件。当我们打开build.gradle文件的时候,会发现里面的语法格式类似于json数据。下面我们可以截取片段代码看一看:

buildscript {
//支持java依赖库管理
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
} //项目构建的类型
apply plugin: 'com.android.application' dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.android.support:support-v4:22.2.0'
} android { compileSdkVersion 19
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.gumpcome"
minSdkVersion 18
targetSdkVersion 19
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
} buildTypes {
debug {
buildConfigField "Boolean", "DEBUG_MODE", "true"
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
release {
buildConfigField "Boolean", "DEBUG_MODE", "false"
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
} debug {
minifyEnabled true
}
} sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
} // Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests') // Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}

相信如果你之前没有接触过该语法的话,初看起来还真的不知道它到底讲的是什么东西,下面就让我们拆开来分析一下。

首先第一个标签buildscript就是指明该文件的gradle脚本开始,然后在里面我们能够看看repositories和dependencies两个子标签,在第一个子标签里面我们可以看到mavenCentral()。如果我们之前接触过

buildscript {
//支持java依赖库管理
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}

maven相信大家就会对该标签不陌生了,它的主要目的就是基于maven构建项目,这样的话我们就可以很方便的管理我们项目依赖的jar包。那么说到这里,你也许会问我们项目里面具体依赖的jar在哪里可以看出来呢?在下面的代码里面,我们可以看到以下代码:

dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.android.support:support-v4:22.2.0'
}

dependencies标签就是起到指明依赖jar的作用。

然后我们看一下后面的一段代码,在这句代码里面就是直接指明当前的应用插件就是android app。

apply plugin: 'com.android.application'

最后在android这个标签里面,我们就可以设置android相关的具体属性信息,其中如下代码:

compileSdkVersion 19
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.gumpcome"
minSdkVersion 18
targetSdkVersion 19
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}

我们可以看到sdk/buildTool/id等相关app基本属性设置。在buildTypes标签下面,我们就可以分类指定当前build的类型,比如我们可以在命令行里面通过:gradle assembleDebug/gradle assembleRelease分别编译debug/release版本。在sourceSets标签里面,我们就可以设置具体的代码信息。

这次分享有点贴代码之嫌,如果有什么不对的地方欢迎拍砖。

android开发系列之gradle认识的更多相关文章

  1. Android 开发系列教程之(一)Android基础知识

    什么是Android Android一词最早是出现在法国作家维里耶德利尔·亚当1986年发表的<未来夏娃>这部科幻小说中,作者利尔·亚当将外表像人类的机器起名为Android,这就是And ...

  2. Android开发工具: AS, Gradle, Git等

    (一)史上最详细的Android Studio系列教程 你还没有使用Android Studio + Gradle么?那就有点太落伍了,下面自己原创总结了Android Studio的一系列教程,图文 ...

  3. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)6.2——DSL文档

    问题: 你需要查找Android Gradle DSL的完整文档. 解决方案: 访问Gradle Tools网站,从Android开发网站下载ZIP文件. 讨论:Android开发网站首页有完整的AP ...

  4. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.3——用Eclipse ADT导出App

    问题: 想在一个已经存在的Eclipse ADT的项目中使用Gradle 解决方案: Eclipse ADT插件可以帮助生成Gradle文件 讨论: Eclipse的ADT插件是在2013年推出Gra ...

  5. Android开发:《Gradle Recipes for Android》阅读笔记1.2

    在android开发中会需要配置使用app的android SDK的最低版本和目标版本,这个是bulidl.gradle的android模块设置.默认有以下几个设置: applicationId,这个 ...

  6. [Android开发系列]IT博客应用

    1.关于坑 好吧,在此之前先来说一下,之前开的坑,恩,确实是坑,前面开的两个android开发教程的坑,对不起,实在是没什么动力了,不过源码都有的,大家可以参照github这个应用 https://g ...

  7. Android开发系列之按钮事件的4种写法

    经过前两篇blog的铺垫,我们今天热身一下,做个简单的例子. 目录结构还是引用上篇blog的截图. 具体实现代码: public class MainActivity extends Activity ...

  8. Android开发系列之SQLite

    上篇博客提到过SQLite,它是嵌入式数据库,由于其轻巧但功能强大,被广泛的用于嵌入式设备当中.后来在智能手机.平板流行之后,它作为文件型数据库,几乎成为了智能设备单机数据库的必选,可以随着安卓app ...

  9. Android开发系列之Android项目的目录结构

    今天开始正式学习Android开发的种种细节,首先从最基本的概念和操作学起. 首先看一下Android项目的目录结构. 这是我随便建立的一个test项目,我们重点关注一下几个方面的内容: 1.src目 ...

随机推荐

  1. Guid.NewGuid().ToString()的几种格式

    1.Guid.NewGuid().ToString("N") 结果为:      38bddf48f43c48588e0d78761eaa1ce6 2.Guid.NewGuid() ...

  2. SVN与TortoiseSVN实战:文件加锁详解

    硬广:<SVN与TortoiseSVN实战>系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主. 本篇详解使用Tortoi ...

  3. 【Framework】HTTP运行期与页面执行模型

    HTTP运行期 HTTP运行期处理客户端应用程序(例如Web浏览器)进入的一个Web请求,通过处理它的应用程序的适当组件路由请求,然后产生响应并发回提出请求的客户端应用程序. 进入的HTTP Web请 ...

  4. Win8系统安装NET Framework 3.5的方法

    1)找到下载过的Win8系统盘,解压到某个目录下,例如 F:, 找到解压的系统盘目录中"sources\sxs"文件夹 2)以管理员身份运行cmd命令,执行下面的命令: dism. ...

  5. hdu2097

    #include <stdio.h> int sum1(int n,int sign){ ; while(n){ sum+=n%sign; n/=sign; } return sum; } ...

  6. DirectDraw打造极速图形引擎(Alpha混合)

    显然DirectDraw是Windows下写2D图形程序的最好选择,虽然Direct3D也可以写,但是没DirectDraw简单方便,特别对于初学者,一来就接触那么多函数和参数总不是件愉快的事,所以我 ...

  7. NC V6 安装目录各文件夹作用描述

    ant:存放Apache Ant,用来执行EJB的构建. bin: 存放nc部署和系统监控等命令.configsys.log部署日志(包含NC中间件.WAS中间件等部署信息)以及NC_Client文件 ...

  8. 最新CSS3常用30种选择器总结(适合初学者)

     1. *:通用元素选择器 * { margin: 0; padding: 0; } *选择器是选择页面上的全部元素,上面的代码作用是把全部元素的margin和padding设为0,最基本的清除默认C ...

  9. Sublime Text 使用 Emmet 补全错误问题

    Sublime Text安装了Emmet后,使用Tab或者ctrl+e发现补全有问题,如: div.testClass#testId 变成了 div.<testClass id="te ...

  10. CSS文件中第一行@charset "utf-8";的作用

    使用UTF-8编码唯一的好处是,国外的用户如果使用Windows XP英文版,浏览UTF-8编码的任何网页,无论是中文.还是日文.韩文.阿拉伯文,都可以正常显示,UTF-8是世界通用的语言编码,而如果 ...