1:预备知识
1.1 groovy语言,java语言的简写版,也运行在JVM中,具体参考如下博客
http://blog.csdn.net/kmyhy/article/details/4200563
1.2 闭包和回调
http://blog.csdn.net/caiwenfeng_for_23/article/details/8230432
2:创建studio项目,build.gradle默认内容
//第一块
apply plugin: 'com.android.application'
//第二块
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.mytest"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
}
3:代码解析
第一块:调用了一个方法叫apply ,传入一个map类型的参数,key是plugin ,plugin的值是”com.android.application”说明是一个android应用工程;
如果把plugin的值改成”com.android.library”就说明这是一个库工程。
第二块:方法android接收一个闭包,闭包里调用compileSdkVersion, buildToolsVersion等方法并给他们传值,并且还调用了defaultConfig这个方法来做一些配置,这个方法也是接收一个闭包,可以想象,通过闭包回调可以对值进行设置,当调用defaultConfig方法的时候,方法里面会先调用传入的这个闭包来初始化一些值,然后再进行别的其他操作。这也就是闭包的魅力所在。类同,buildTypes ,dependencies方法也接收一个闭包,闭包里面调用方法。