gradle笔记

所谓好记性不如赖笔头今天记一下gradle的一点基础知识。

一:基础

gradleAndroid开发中的项目构建系统,其特点如下:

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 {printlnHello World} //gradle中常见的写法
4.接收两个参数的方法: myMethod(arg1, myClosure) 
5.4类似,单数closure是内联的: myMethod(arg1, { println Hello World’ }) 
6.如果最后一个参数是closure,它可以从小括号从拿出来: myMethod(arg1) { println   Hello World’ }

 

这个特点非常关键,因为以后在 Gradle 中经常会出现图 这样的代码:

buildscript { ... } 

android { ... }

sourceSets { ... } 

这样再回过头去看gradle就很容易理解了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值