Выполнить задачу build-extras.gradle после компиляции APK - PullRequest
0 голосов
/ 25 февраля 2020

Мне удалось записать 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 , а не переименовывать ее.

...