Android的Gradle技巧 4.2向构建过程添加自定义任务

32 篇文章 0 订阅
4.2向构建过程添加自定义任务
问题
您想要在整个构建过程中调用自定义任务。

使用dependOn属性将任务插入到有向无环图中。
讨论
在初始化阶段,Gradle根据它们的依赖性将任务组合成一个序列。结果是DAG。例如,Gradle文档形成了Java插件的DAG,如图4-1所示。


图4-1。用于Java插件任务的定向非循环图
“定向”术语表示每个依赖性箭头在一个方向上。 “无环”意味着图中没有环。
将自己的自定义任务添加到流程意味着将您的任务插入到适当位置的图形中。
在配方4.1中,copyApks任务被定义为将所有生成的APK复制到单独的目录中。为了方便,该任务在示例4-6中再现。
实例4-6。将APK复制到另一个文件夹
task copyApks(type: Copy) {
from("$buildDir/outputs/apk") {
exclude '**/*unsigned.apk', '**/*unaligned.apk'
}
into '../apks'
}

但是,如果尚未生成APK,则该任务不是非常有用。汇编任务构建APK,因此使其成为copyApks任务的依赖关系,如例4-7所示。
实施例4-7。更新复制任务以首先生成它们
task copyApks(type: Copy, dependsOn: assembleDebug) {//1
from("$buildDir/outputs/apk") {
exclude '**/*unsigned.apk', '**/*unaligned.apk'
}
into '../apks'
}
1首先组装Debug
对assembleDebug的依赖意味着所有的调试APK将在复制任务运行之前生成。如果你想发布APKs,你可以使用assemble。
如果您希望每次执行构建时运行copyApks任务,请使其成为构建任务的依赖项,如示例4-8所示。
实施例4-8。使copyApks成为构建的一部分
builddependsOn copyApks
现在运行构建任务还会将APK复制到单独的文件夹中。您已使用正确的依赖关系信息将copyApks任务插入到DAG中。
删除包含所有APK的生成的apks文件夹可以以类似的方式完成,但如配方1.1所示,顶级Gradle构建文件已经有一个干净的任务,我们可以修改,如例4-9所示。
实例4-9。由Android Studio生成的干净任务
task clean(type: Delete) {
delete rootProject.buildDir
}
Gradle中的删除任务接受文件或文件夹列表,因此,不必进行特殊任务来删除apks文件夹,可以轻松修改此任务,如示例4-10所示。
实例4-10。修改clean任务以删除apks目录
task clean(type: Delete) {
delete rootProject.buildDir, 'apks'
}
任何自定义任务都可以使用此机制插入构建过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值