您的位置:首页 > 移动开发 > Android开发

Android Studio Gradle 实例 task用法 Groovy string特性

2015-12-22 11:35 435 查看

Context:

两个项目A、插件B。

需求:A运行时将B打包放到asset下   2.运行时必须删除手机里的指定目录(否则更新不起效果)

1.写一个cmd脚本:

路径D:\MyScript\clear.cmd

adb uninstall com.oppo.reader.test
adb shell rm -rf sdcard/Reader
第一行删除应用,第二行删除目录。

2.在AndroidStudio A项目的build.gradle中写task:

task renameSearchPlug{
print "这是配置区,每次运行脚本都会运行该处代码"

doLast{
print "这是增加Action的区域,只有执行该task才会执行代码"
print "do buildSearch task"
File searchPlug = new File("F:\\iReader_AS_workspace\\HiReader\\branchs\\HiReader_103_optimize\\plugin_Search_huawei\\build\\outputs\\plugin_Search_huawei-release.apk");
if (searchPlug.exists()){
searchPlug.renameTo("F:\\iReader_AS_workspace\\HiReader\\branchs\\HiReader_103_optimize\\plugin_Search_huawei\\build\\outputs\\pluginweb_search.apk")
}
}
}

task copySearchPlug(type: Copy, dependsOn: 'renameSearchPlug'){
doLast {
print 'do copySearchPlug task'
from "F:\\iReader_AS_workspace\\HiReader\\branchs\\HiReader_103_optimize\\plugin_Search_huawei\\build\\outputs\\pluginweb_search.apk"
into "F:\\iReader_AS_workspace\\HiReader\\branchs\\HiReader_103_optimize\\iReader_V4200_free15_huawei_s\\src\\main\\assets"
}
}

task buildSearchPlug(dependsOn: 'copySearchPlug') {
doLast{
println "do buildSearchPlug"
println "D:\\MyScript\\clear.cmd".execute().text
}


gradle是使用的groovy语言,groovy完全兼容java。

执行顺序:

执行buildSearchPlug,就会触发renameSearchPlug---》copySearchPlug---》buildSearchPlug,顺序通过声明task时传入的形参dependsOn,实际上是一种配置。

task是groovy的一个对象,里面主要有两种功能:

1.配置  

直接在task的方法体内写的代码,类似于Java赋值操作(当然可以执行方法的)。每次运行脚本都会被执行。比如你运行make moduel,配置的代码就会运行。如上面的:print "这是配置区,每次运行脚本都会运行该处代码"

 2.增加Action 

这个是增加的行为,类似于方法。只有运行该task时才执行,我们可以用 doFirst、doLast 也可以使用doLast的重载符号 <<  这是等价的。

3.type

gradle预先写好的task,有预定义的Action,你只需要配置下就行了。如copySearchPlug的type是Copy,我们配置下该task暴漏出的两个属性from、into就可以了。

Groovy对JAVA的String类进行了增强,特性:

1.字面常量:

有''' '''就是 多行字面常量 版的,用json就不用考虑什么反斜杠,3引号里是什么就是什么。

2.运行命令行:

"脚本绝对路径“.execute()就直接执行这个命令了,

3.在字符串中引用变量、表达式:

def testGString(obj){
println "class: ${obj.getClass().name}"
}

val = 125
testGString("The Stock closed at ${val}")

运行:

在AndroidStudio的右上角有个gradle的icon,点击展开,然后刷新。找到指定的项目下的task,因为我们的task没有分组所以都在other组里。然后双击就可以运行了。

右下角是隐藏起来的控制台,可以点击看输出。



想深入的小伙伴,推荐两本书:

博文视点的《实战Gradle》,你可以看到真正的Gradle的为例。完全介入到程序开发的流程,从前期环境、配置、代码审查(find bug)、持续集成(Jenkins)、发布

 图灵的《Groovy程序设计》,可以看到Groovy语言的强大,特别是闭包 老半天才明白点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android groovy Gradle task