Мне удалось записать build-extras.gradle в копию скомпилированного Cordova APK в другую папку, но на самом деле он запускается до компиляции APK:
ext.postBuildExtras = {
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
if (output.outputFile != null && output.outputFile.name.endsWith('.apk'))
copy {
from file("${project.buildDir}/outputs/apk/${variant.name}/${output.outputFileName}")
into file("${project.buildDir}/outputs/apk/")
}
delete file("${project.buildDir}/outputs/apk/${variant.name}/${output.outputFileName}")
}
}
}
}
Этот код выполняется до скомпилированного APK: копируемый файл является ранее созданным.
Добавив этот расширитель задачи, мне удалось добавить событие который запускается только в конце процесса компиляции ( cdvBuildDebug - последняя показанная задача):
tasks.whenTaskAdded { task ->
if (task.name.equals("cdvBuildDebug")) {
task.doLast({
// APK cannot be renamed here because variant.name and output.outputFileName are not available in this scope
println ">>> cdvBuildDebug.doLast() <<<"
})
}
}
Вопрос в том, как я мог бы связать эти функции чтобы копия APK имела место при выполнении cdvBuildDebug.doLast()
? variant.name
недоступно в моих doLast()
, похоже, проблема для моих навыков нулевого уровня.
Я знаю, что могу просто переименовать файл, связавшись с переменной output.outputFileName
, но моя цель создать копию APK , а не переименовывать ее.