android build.dolast,android-gradle复制为doLast不起作用

我正在尝试做一件非常简单的事情.由于gradle在清理时会删除构建目录中的所有文件,因此我想在创建发行版本时将apk移动到其他地方.因此,我将复制任务添加到了链中,并将其设置为最后一个.我尝试的任何方法均无效.所以我简化了它,并添加了一些日志记录来说明这一点.我认为那是行不通的.

使用两个变量,我可以检查在任务定义时和执行时输入和输出路径是否有效.我还可以检查任务是否已执行.我在输入目录中放置了更多文件,以确保在任何情况下都存在一些文件.这是脚本:

def buildPath

def outPath

task copyApks(type: Copy) {

buildPath = "$buildDir\\outputs\\apk"

outPath ="$buildDir\\outputs\\apk2"

logger.error("Source Folder is $buildPath")

logger.error("Destination Folder is $outPath")

from buildPath

into outPath

}

assembleRelease.doLast {

android.applicationVariants.all { variant ->

println "Variant $variant.name"

logger.error("Source Folder is $buildPath")

logger.error("Destination Folder is $outPath")

copyApks

}

}

这是输出,在这里可以看到路径在定义和执行时都是正确的(它们存在并且有效).还可以看到任务已执行:

怎么了?

Executing external task 'assembleRelease'...

Parallel execution with configuration on demand is an incubating feature.

Source Folder is C:\Users\Administrator\Projects\Gradle\MB6\app\build\outputs\apk

Destination Folder is C:\Users\Administrator\Projects\Gradle\MB6\app\build\outputs\apk2

................

some other gradle logs

................

:app:assembleRelease

Variant debug

Source Folder is C:\Users\Administrator\Projects\Gradle\MB6\app\build\outputs\apk

Destination Folder is C:\Users\Administrator\Projects\Gradle\MB6\app\build\outputs\apk2

Variant release

Source Folder is C:\Users\Administrator\Projects\Gradle\MB6\app\build\outputs\apk

Destination Folder is C:\Users\Administrator\Projects\Gradle\MB6\app\build\outputs\apk2

BUILD SUCCESSFUL

解决方法:

首先,您必须知道,仅将任务名称添加到您的闭包中(在您的情况下为copyApks)并不真正意味着应该执行此任务.它与指定变量相同,但不执行任何操作.

还有一点,请注意,两个变体路径都相同,这意味着您尝试将同一文件复制两次.实际上,这并不是唯一的原因,您必须了解,在执行阶段尝试调用复制任务时,还需要在配置阶段对其进行配置,因此无法在参数之间进行更改,并且此任务将始终表现相同.

如果要一个接一个地调用某些任务,则有许多选择,例如任务依赖性,任务完成或任务排序.您可以在official user guide中对其进行阅读.有一种方法可以像方法调用那样调用某些任务,但这是一个非常差的解决方案,您必须避免使用它.

因此,如果您要调用复制任务,则可以尝试这样的解决方案

assembleRelease.finalizedBy copyApks

每次组装完成后,这总是会调用复制任务.

标签:gradle,build,android

来源: https://codeday.me/bug/20191118/2028599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值