Variant.getOutputFile() устарел. Вызовите его на одном из вариантов .getOutputs() вместо

Это происходит с момента обновления до gradle 2.1 в Android gradle плагина 0.13.0, но для жизни меня не могу понять, почему иногда записывает это предупреждение.

Рассмотрим этот блок для переименования APK на основе типа варианта:

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def oldFile = output.outputFile
        if (oldFile != null && oldFile.name.endsWith('.apk')) {
            def newFile = "Fancy conditionally-formatted file name here"
            print "\nBefore"
            output.outputFile = new File(oldFile.parent, newFile)
            print "\nAfter"
        }
    }
}

Глядя на журналы gradle, я вижу следующее:

Before
WARNING [Project: <myproject>] variant.getOutputFile() is deprecated. Call it on one of variant.getOutputs() instead.
WARNING [Project: <myproject>] variant.getProcessResources() is deprecated. Call it on one of variant.getOutputs() instead.
After

Что бы показалось, что вызов строки output.outputFile = new File(oldFile.parent, newFile) вызывает это предупреждение. Дело в том, что Google специально использует этот стиль в своем примере внизу на этой странице. Если мы вообще не можем коснуться output, как мы можем установить его outputFile?

Кроме того, я не вижу, как задействован getProcessResources().

Любые идеи?

Ответ 1

Оказалось, что плагин Gradle по-прежнему использует устаревшие вызовы под капотом. Начиная с Android Gradle Plugin 0.14.4, эти предупреждения больше не отображаются.

Ответ 2

Измените variant.outputFile на variant.outputs[x].outputFile

Ответ 3

Вместо

def newFile = "Fancy conditionally-formatted file name here"
output.outputFile = new File(oldFile.parent, newFile)

Сделайте следующее

def apk = output.outputFile
def newName = getNewName() // any fancy formatted file name
apk.renameTo(new File(apk.parentFile, newName))

Надеюсь, что это поможет.