Android 之Gradle

在Gradle爆红之前,常用的构建工具是ANT,然后又进化到Maven。ANT和Maven这两个工具其实也还算方便,现在还有很多地方在使用。但是二者都有一些缺点,所以让更懒得人觉得不是那么方便。比如,Maven编译规则是用XML来编写的。XML虽然通俗易懂,但是很难在xml中描述 if{某条件成立,编译某文件}/else{编译其他文件} 这样有不同条件的任务。所以,Gradle选择了Groovy。

Groovy

Groovy基于Java并拓展了Java,Groovy说白了就是把写Java程序变得像写脚本一样简单。写完就可以执行,Groovy内部会将其编译成Java class然后启动虚拟机来执行。

List底层对应的就是java中的List接口,ArrayList作为真正的实现

def mList = [1,"zhangsan",false]

mList.each{

item -> println()

}

Map底层对应java中的LinkeHashMap

def mMap = ['name':'zhangsan',age:18,addr:'北大街']

Range是Groovy对List的一种扩展

def aRange = 1..5 (开始值 + 两点 + 结束值)

aRange = 1..<5 (< 表示不包括最后一个值)

Closure闭包,是一种以{}括起来可执行的代码

def aClosure = {

//->左边表示参数,右边表示逻辑代码

params -> println "$params"

}

def aClosure = {

//或者没有(显式)参数,但是会有默认参数it

println "no params"

}

aClosure() //无参闭包调用

aClosure("name") //有参闭包调用

aClosure.call("name") //有参闭包调用

Groovy文件的读写

def nh = new File('nihao.groovy')

println new String(nh.getBytes())

nh.eachLine{

       line -> println line

}

nh.withInputStream{

       ios -> ios.text

}

nh.withOutputStream{

       out << "hehe"

}

Gradle

在Gradle中,每个待编译的工程都叫一个project(build.gradle),每个build.gradle都会转成一个project对象,Project对象对应的就是Build Script对象;每个project中包含一系列的task,一个tasks包含了一系列动作,也就是一段被执行的代码。

Gradle工作流程:

初始化 --> 执行settings.gradle,为每个project创建实例。 配置 --> 执行project(build.gradle),为每个project创建task。 执行 --> gradle会决定执行哪个Task任务

//添加插件

apply plugin: 'com.android.application'

android {

//编译app使用的api版本

compileSdkVersion 22

//构建工具版本

buildToolsVersion "22.0.1"

//核心配置

defaultConfig {

applicationId "com.gradleforandroid.gettingstarted"

minSdkVersion 14

targetSdkVersion 22

versionCode 1

versionName "1.0"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile

('proguard-android.txt'), 'proguard-rules.pro'

}

//构建一个新版本,类似继承

staging.initWith(buildTypes.debug)

staging {

applicationIdSuffix ".staging"

versionNameSuffix "-staging"

debuggable = false

}

}

productFlavors {

//创建不同版本,相同属性覆盖默认属性

shanxisheng {

applicationId 'com.gradleforandroid.red'

versionCode 3

}

weiyangqu {

applicationId 'com.gradleforandroid.blue'

minSdkVersion 14

versionCode 4

}

}

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:22.2.0'

}

Android task

assemble 针对每个版本创建一个apk

clean 删除所有的构建任务,包含apk文件

check 执行Lint检查并且能够在Lint检测到错误后停止执行脚本

build 执行assemble和check

connectedCheck 在测试机上执行所有测试任务

deviceCheck 执行所有的测试在远程设备上

你可能感兴趣的:(Android 之Gradle)