【发布时间】:2016-10-25 03:55:32
【问题描述】:
我正在尝试做一件非常简单的事情。由于 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
【问题讨论】: