build 之前执行task_如何将自定义task在gradle系统task运行前后执行

展开全部

在使用gradle构建android应用的过程中,build tools提供的标准gradle task有时没法满足自己的62616964757a686964616fe4b893e5b19e31333365633837要求(比如上传、自动构建),或者有些问题需要一些自定义task才可以解决(比如使用自定义task动态修改一些文件),这个时候就需要自定义task并结合标准task一起在构建版本的过程中达到自己的目的,那么如何让自己写的task能放在指定标准task后运行呢?(或者说hack)

以我最近解决的问题为例,因为公司的产品使用了百川的jar包和so文件,但在使用build tools2.2.0的过程中,发现要打包的so文件被构建系统修改了(官方bug,询问无果,暂无解),导致了阿里云推送无法正常工作,于是我编写了一个task,在即将打包时,把正常的so文件替换掉损坏的so文件,实现如下://开始--》移动正常的so文件到打包目录中

task moveLibToTrip(type: Copy) {

from "bctrouble/armeabi/libsecuritysdk-3.1.27.so"

into "$buildDir/intermediates/transforms/stripDebugSymbol/CouponSimpleChinese/debug/folders/2000/1f" +

"/main/lib/armeabi/"

}

task moveLibToTrip2(type: Copy) {

from "bctrouble/x86/libsecuritysdk-3.1.27.so"

into "$buildDir/intermediates/transforms/stripDebugSymbol/CouponSimpleChinese/debug/folders/2000/1f" +

"/main/lib/x86/"

}

afterEvaluate {

tasks.matching {

it.name.startsWith('process') && (it.name.endsWith('ReleaseJavaRes') || it.name.endsWith

('DebugJavaRes'))

}.each { tk ->

tk.dependsOn(moveLibToTrip,moveLibToTrip2)

}

}

//结束

可以看到,这里实现了task moveLibToTrip,moveLibToTrip2先于以process开头以ReleaseJavaRes或DebugJavaRes结尾的标准task执行(当然还可以写成it.name.equals(***),语法类似Java)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值