Ответ 1
Оказалось, что плагин Gradle по-прежнему использует устаревшие вызовы под капотом. Начиная с Android Gradle Plugin 0.14.4, эти предупреждения больше не отображаются.
Это происходит с момента обновления до 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()
.
Любые идеи?
Оказалось, что плагин Gradle по-прежнему использует устаревшие вызовы под капотом. Начиная с Android Gradle Plugin 0.14.4, эти предупреждения больше не отображаются.
Измените variant.outputFile
на variant.outputs[x].outputFile
Вместо
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))
Надеюсь, что это поможет.