Gradle advertencia: variante.getOutputFile () y variant.setOutputFile() está obsoleto
Estoy utilizando la siguiente configuración simplificada en un proyecto de aplicación Android.
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 20
versionCode 1
versionName "1.0.0"
applicationVariants.all { variant ->
def file = variant.outputFile
def fileName = file.name.replace(".apk", "-" + versionName + ".apk")
variant.outputFile = new File(file.parent, fileName)
}
}
}
Ahora que actualizé el plug-in de Gradle a v.0.13.0 y Gradle a v.2. 1. aparecen las siguientes advertencias:
WARNING [Project: :MyApp] variant.getOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
WARNING [Project: :MyApp] variant.setOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
WARNING [Project: :MyApp] variant.getOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
WARNING [Project: :MyApp] variant.setOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
¿Cómo puedo reescribir el script Groovy para deshacerme de las advertencias de obsolescencia?
4 answers
Basándose en la respuesta de Larry Schiefer puede cambiar el script a algo como esto:
android {
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = outputFile.name.replace('.apk', "-${versionName}.apk")
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:19:20
El fragmento de código completo se parece a ese:
// Customize generated apk's name with version number
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def manifestParser = new com.android.builder.core.DefaultManifestParser()
def fileName = outputFile.name.replace(".apk", "-DEBUG-" + manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile) + ".apk")
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-24 08:07:29
La API de salida de la variante de compilación ha cambiado en el último complemento de Android Gradle. Ahora permite múltiples archivos de salida (o directorios), por lo que este método ha sido marcado como obsoleto. Si usa variant.outputs
en su lugar, le dará un Collection
que luego puede iterar y obtener cada archivo de salida. Tendrás que verificar que el objeto file no es null y que coincide con tus criterios (por ejemplo, tiene un '.apk " extensión.) Luego puede crear un nuevo objeto File
y agregarlo a la salida dentro del colección.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-23 15:41:14
Complemento de Android para Gradle 3.0.0
Puedes usar así
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
Puede obtener más información sobre las características y los nuevos cambios en la documentación de Android https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#update_gradle
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-27 06:22:35