gradle笔记
2015-09-26 16:58
183 查看
所谓好记性不如赖笔头今天记一下gradle的一点基础知识。
一:基础
gradle是Android开发中的项目构建系统,其特点如下:
1. 打包、签名与发布方便
2. 使用领域驱动语言(DSL)来描述构建逻辑,构建脚本使用Groovy
3. 内建的依赖管理系统,使用Maven或者Ivy
看一个最简单的Android项目build.gralde
上面的代码中就声明了我们的构建程序会使用Maven中央仓库。
buildscript { ... } 配置驱动构建过程的代码,意思就是buildscript中的配置仅仅在构建过程中起作用,也就是构建程序所使用的配置。
apply plugin: 'android' 是指使用Android插件。
android { ... } 配置了Android项目构建时需要的所有参数。
sourceSets { ... } 指项目的目录结构
buildTypes{ ... } 指项目的编译版本类型
minifyEnabled 是否混淆
proguardFiles 混淆规则文件
debuggable 可否调试
signingConfig 签名类型
dependencies { ... } 指项目所依赖的库
二:提高
Gradle脚本是使用Groovy语言来写的,Groovy中有一个很重要的概念你必要要弄懂–Closure(闭包)。从 从 C/C++ 语言的角度看 , 闭包和函数指针很像,如果闭包没定义参数的话 , 则隐含有一个参数 ,叫 这个参数名字叫 it ,和 和 this 的作用类
似 。
Closure 的定义格式是:
defClosure = {paramters -> code} //或者
def Closure = {无参数,纯 code} 这种情况不需要->符号
例如:
def closure = {// 闭包是一段代码 , 所以需要用花括号括起来..
String param1, int param2 -> //箭头很关键。前面是参数定义,后面是代码
println "this is code" //这是代码,最后一句是返回值,
}
Closure可以当做参数传递,把closure当做参数传递有以下几种语法规则:
1.只接收一个参数,且参数是closure的方法: myMethod(myClosure)
2.如果方法只接收一个参数,括号可以省略: myMethod myClosure
3.可以使用内联的closure:myMethod {println‘Hello World’} //gradle中常见的写法
4.接收两个参数的方法: myMethod(arg1, myClosure)
5.和4类似,单数closure是内联的: myMethod(arg1, { println ‘Hello World’ })
6.如果最后一个参数是closure,它可以从小括号从拿出来: myMethod(arg1) { println ‘Hello World’ }
这个特点非常关键,因为以后在 Gradle 中经常会出现图 7 这样的代码:
buildscript { ... }
android { ... }
sourceSets { ... }
这样再回过头去看gradle就很容易理解了。
一:基础
gradle是Android开发中的项目构建系统,其特点如下:
1. 打包、签名与发布方便
2. 使用领域驱动语言(DSL)来描述构建逻辑,构建脚本使用Groovy
3. 内建的依赖管理系统,使用Maven或者Ivy
看一个最简单的Android项目build.gralde
buildscript { repositories { //使用maven中央仓库构建代码 mavenCentral() } dependencies { //gradle插件版本号: classpath 'com.android.tools.build:gradle:1.2.3' } } apply plugin: 'android' android { compileSdkVersion 22 buildToolsVersion "22.0.1" sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } androidTest { manifest.srcFile 'tests/AndroidManifest.xml' java.srcDirs = ['tests/src'] resources.srcDirs = ['tests/src'] aidl.srcDirs = ['tests/src'] renderscript.srcDirs = ['tests/src'] res.srcDirs = ['tests/res'] assets.srcDirs = ['tests/assets'] } debug.setRoot('build-types/debug') release.setRoot('build-types/release') } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' signingConfig signingConfigs.release } debug { debuggable true minifyEnabled false signingConfig signingConfigs.release } alpha { debuggable true signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' } } dependencies { //本地libs目录依赖模式: compile fileTree(dir: 'libs', include: '*.jar') //本地项目依赖模式: compile project(':Library') //远程依赖模式: compile 'com.android.support:support-v4:19.+' compile 'com.android.support:appcompat-v7:19.+' compile 'com.android.support:recyclerview-v7:+' compile 'com.jakewharton:butterknife:6.1.0' compile 'de.greenrobot:eventbus:2.4.0' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4' compile 'com.squareup.dagger:dagger:1.2.2' apt 'com.squareup.dagger:dagger-compiler:1.2.2' }
上面的代码中就声明了我们的构建程序会使用Maven中央仓库。
buildscript { ... } 配置驱动构建过程的代码,意思就是buildscript中的配置仅仅在构建过程中起作用,也就是构建程序所使用的配置。
apply plugin: 'android' 是指使用Android插件。
android { ... } 配置了Android项目构建时需要的所有参数。
sourceSets { ... } 指项目的目录结构
buildTypes{ ... } 指项目的编译版本类型
minifyEnabled 是否混淆
proguardFiles 混淆规则文件
debuggable 可否调试
signingConfig 签名类型
dependencies { ... } 指项目所依赖的库
二:提高
Gradle脚本是使用Groovy语言来写的,Groovy中有一个很重要的概念你必要要弄懂–Closure(闭包)。从 从 C/C++ 语言的角度看 , 闭包和函数指针很像,如果闭包没定义参数的话 , 则隐含有一个参数 ,叫 这个参数名字叫 it ,和 和 this 的作用类
似 。
Closure 的定义格式是:
defClosure = {paramters -> code} //或者
def Closure = {无参数,纯 code} 这种情况不需要->符号
例如:
def closure = {// 闭包是一段代码 , 所以需要用花括号括起来..
String param1, int param2 -> //箭头很关键。前面是参数定义,后面是代码
println "this is code" //这是代码,最后一句是返回值,
}
Closure可以当做参数传递,把closure当做参数传递有以下几种语法规则:
1.只接收一个参数,且参数是closure的方法: myMethod(myClosure)
2.如果方法只接收一个参数,括号可以省略: myMethod myClosure
3.可以使用内联的closure:myMethod {println‘Hello World’} //gradle中常见的写法
4.接收两个参数的方法: myMethod(arg1, myClosure)
5.和4类似,单数closure是内联的: myMethod(arg1, { println ‘Hello World’ })
6.如果最后一个参数是closure,它可以从小括号从拿出来: myMethod(arg1) { println ‘Hello World’ }
这个特点非常关键,因为以后在 Gradle 中经常会出现图 7 这样的代码:
buildscript { ... }
android { ... }
sourceSets { ... }
这样再回过头去看gradle就很容易理解了。
相关文章推荐
- C基础--双链表的构造
- Connection #Facebook Relay文档翻译#
- 基本的Web控件二
- Linux下LDAP统一认证解决方案
- 原生js 简单拖拽
- 待解决的问题 线程冲突!
- c++错题
- win10系统下QQ2D桌球打开失败该怎么办?
- RDF-资源描述框架
- test8.5
- 重载问题
- 课程作业01
- 如何在action中访问servlet API
- 链表中倒数第k个节点
- 阿里巴巴中间件性能挑战赛(RPC篇 复杂版)
- highcharts中X轴描述过长问题
- strcpy和memcpy
- 给定字符串,实现大小写之间的转换
- replaced element ,input,select
- Listview中一些小的注意问题