Android Studio Gradle 实例 task用法 Groovy string特性
2015-12-22 11:35
435 查看
Context:
两个项目A、插件B。需求:A运行时将B打包放到asset下 2.运行时必须删除手机里的指定目录(否则更新不起效果)
1.写一个cmd脚本:
路径D:\MyScript\clear.cmdadb 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语言的强大,特别是闭包 老半天才明白点
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories