RegisterResGeneratingTask está en desuso, use registerGeneratedFolders (FileCollection)

158

Usando el nuevo estudio de Android con el nuevo plugin 3.0.0 Gradle.
Al construir alguna advertencia sucedió:

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)
Valentin Baryshev
fuente
1
¿Puedes mostrar tus tareas de gradle? ¿Tiene divisiones apk?
itzhar
muestra tu Gradle
Jéwôm '
¿Has visto este artículo que describe el problema exacto (un problema conocido) y una solución alternativa? (Primer hit en Google.)
ashleedawg
@ashleedawg ¿qué debo hacer? actualizar android studio? o algunas bibliotecas?
Valentin Baryshev
44
@ashleedawg la solución que mencionas es, a menos que lo malinterprete, permanecer con la versión anterior del complemento gradle. Esta no es una forma de manejar la degradación a largo plazo. A corto plazo, la advertencia se puede <s> ignorar </s>, pero no se necesita ninguna acción inmediata.
Alex Cohn el

Respuestas:

46

Por lo que puedo decir, los complementos agregados como dependencias de classpath darán problemas. Es decir, Firebase tuvo un problema con él. Cuchara y aleteo también. Hacer esta búsqueda en Google revela una gran cantidad de repositorios de GitHub con un problema planteado sobre lo mismo, y todo lo que tienen en común es el hecho de que es un complemento de Gradle. La tela también parece ser una causa, como lo menciona Mate *

Por lo que puedo decir, el problema proviene de uno / varios complementos de Gradle. También puede ser activado por su código de Gradle, pero esto probablemente no sea aplicable si su proyecto es una aplicación y no un complemento de Gradle.

Y como lo menciona Alex Cohn en un comentario, la desaprobación es una advertencia. En este caso, significa que es una característica que eventualmente se eliminará. Entonces, por ahora, suponiendo que sea un complemento (y no creado por usted), puede ignorarlo. Para cuando se elimine, la mayoría / todos los complementos principales deben actualizarse para solucionarlo.

Y, de nuevo, es una advertencia; No es un error. Aún puede ejecutarlo e ignorarlo si no puede hacer nada al respecto. Desactivar, por ejemplo, el plugin Fabric * es excesivo, ya que todavía funciona.

Yo no uso Fabric, y Fabric no es de código abierto, así que no sé si los desarrolladores lo arreglaron o no.

TL; DR: los complementos de Gradle son la causa. Es una advertencia (no un error), por lo que eliminar los complementos que causan el problema es excesivo. Si no puede arreglarlo, déjelo solo siempre y cuando esté en desuso en este momento (no eliminado)


Si usa Firebase, hay una solución específica que también se menciona en la guía de migración (vinculada más adelante en esta publicación); excluir el módulo de guayaba

classpath ('com.google.firebase:firebase-plugins:1.1.0') {
    exclude group: 'com.google.guava', module: 'guava-jdk5'
}

El problema en sí es bastante difícil de detectar. Por lo que puedo decir, no hay un problema único que lo cause en todos los complementos que verifiqué (y vincularon en esta respuesta). Si ha codificado algo que causa el problema (y es posible solucionarlo; agregar un complemento de gradle de terceros no lo está causando), hay algunas cosas que puede intentar solucionar.

Por lo que puedo decir a partir de la causa real, se resuelve actualizando el archivo Gradle (aunque en la biblioteca Spoon, se solucionó cambiando una línea relacionada con TestVariant) siguiendo los temas en la guía de migración del complemento 3.0.0 de Gradle.

Todo esto está cubierto por los documentos del desarrollador , pero aquí hay algunas cosas que creo que son relevantes en función de las solicitudes de extracción realizadas en proyectos donde ha sido un problema:

Además de actualizar la versión y el complemento de Gradle, también debe agregar el google()repositorio debajo repositories.

compilees ahora implementationo api, pero implementationes el recomendado.

providedes compileOnlyy apkesruntimeOnly

androidTestCompilese ha convertido androidTestImplementation, y testCompile->testImplementation

Si usa sabores, debe usar las dimensiones de sabor (cubiertas por los documentos).

Para los tipos de compilación, debe incluir retrocesos en caso de que haya una biblioteca que no tenga ese tipo de compilación. Estos se definen en el profilebloque debajo del androidbloque.

Si aún no lo ha hecho, el complemento gradle debe definirse primero. Si no tiene otras dependencias de classpath, no es un problema. Pero si lo hace, asegúrese de que el complemento gradle se defina primero.

Si lo usa testVariants, asegúrese de no llamar testedVarianta la clase. Parece ser la causa de la biblioteca Spoon.

Estas cosas son, por lo que he podido decir, algunos de los cambios que se hicieron para solucionar el problema.

Zoe
fuente
Pero no puedo depurar la línea de código que muestra error
Abhinav Gupta
FALLO: Falló la compilación con una excepción. * Lo que salió mal: la ejecución falló para la tarea ': aplicación: compileDebugJavaWithJavac'. > La compilación falló; vea la salida de error del compilador para más detalles. * Intente: ejecutar con la opción --stacktrace para obtener el seguimiento de la pila. Ejecute con la opción --info o --debug para obtener más resultados de registro. Ejecute con --scan para obtener información completa. * Obtenga más ayuda en help.gradle.org ERROR EN LA CONSTRUCCIÓN en 4s 29 tareas procesables: 2 ejecutadas, 27 actualizadas
Abhinav Gupta
@AbhinavGupta ese no es el stacktrace. Eso es solo un mensaje que te dice que algo salió mal
Zoe
pero no puedo resolver esto y debido a esto no puedo instalar apk en mi dispositivo
Abhinav Gupta
@AbhinavGupta, así que haz una nueva pregunta sobre Stack Overflow
Zoe
17

Estoy usando el complemento Gradle de servicios de Play com.google.gms:google-servicescon la versión 4.2.0.

En el código fuente podemos ver que: ingrese la descripción de la imagen aquí

Entonces, para mí, esa fue la razón de mis advertencias y no se puede eliminar hasta que se arregle el complemento. El problema está aquí.

Como mencionó @Zoe, esto también puede provenir de otros complementos de Gradle.

Mejor

usuario1998494
fuente
15

El problema se resuelve con el complemento de servicios de Google versión 4.3.0 (resuelto con esta confirmación )

buildscript {
    dependencies {
        // Change version to 4.3.0
        classpath 'com.google.gms:google-services:4.3.0'
    }
}

Encontrado aquí

Más simple
fuente
10

La actualización a la última versión de Fabric Gradle Plugin soluciona este problema.

Desde el registro de cambios:

  • Se corrigió la advertencia de desaprobación "registerResGeneratingTask".

https://docs.fabric.io/android/changelog.html#march-15-2018

luis_cortes
fuente
¿Pero qué es exactamente? ¿Vale la pena actualizarlo? ¿Causa algún problema (antes y después de la actualización)? Usamos v2.6.8 y ahora tienen v2.9.3, pero no veo cómo verlo en el registro de cambios. Tienen diferentes versiones allí ("1.4.2 24 de mayo de 2018", por ejemplo)
desarrollador de Android
@androiddeveloper Estás confundiendo Fabric Gradle Plugin y Crashlytics. Echa un vistazo a los diferentes componentes en el menú de la izquierda.
Eugen Pechanec
4

En mi caso, esto fue causado por una versión no coincidente de las bibliotecas de soporte de Android. Actualicé todos los módulos a la última versión (28.0.0) y eso lo resolvió.

Lee Hounshell
fuente
1

Después de instalar Fabric correctamente, este problema se resolvió por mí.

import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;

public class MyApplication extends Application {


    @Override
    public void onCreate() {
        super.onCreate();
        Fabric.with(this, new Crashlytics());

    }
}

build.gradle

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

dependencies {
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
}

repositories {
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
}
Nithin Raja
fuente
1

Recibí este mensaje de error y a muchos otros les gusta

x-version is deprecated and use y-version instead and it'll be removed in 2019

y todo mi proyecto comenzó a dar los mismos mensajes de error de repente.

Android Studio estaba dando advertencias sobre mi programa antivirus. Intenté configurarlo pero no funcionó.

Finalmente desinstalé el antivirus QuickHeal de mi sistema y todo está bien ahora

Makarand
fuente
0

Todas las otras respuestas son sobre problemas con componentes de terceros .

Aquí le mostramos cómo actualizar su proyecto que usa registerResGeneratingTaskdirectamente:

Antes de:

variant.registerResGeneratingTask generateIcon, ICON_DIR

Después:

variant.mergeResourcesProvider.get().dependsOn generateIcon
variant.registerGeneratedResFolders files(ICON_DIR)
0xF
fuente
0

Proyecto Nivel Build.Gradle

Use la siguiente versión de la dependencia de servicios de google.

dependencies {
    classpath 'com.android.tools.build:gradle:3.4.2'
    classpath 'com.google.gms:google-services:4.3.0'
    classpath ('com.google.firebase:firebase-plugins:1.1.0') {
        exclude group: 'com.google.guava', module: 'guava-jdk5'
    }
}

Problema resuelto para mí.

Akram Chauhan
fuente
-2

Para mí, esta advertencia desapareció cuando apagué el complemento de gradle de tela, o compruebe si usa fabric u otro complemento que yo sea responsable de esta advertencia.

Compañero
fuente
Se eliminó la tela, pero aún aparece esta advertencia.
Valentin Baryshev
¡No estoy usando tela y tengo este mensaje!
thiagolr
3
La desactivación del complemento io.fabric redujo 8 de estas advertencias a 4. Por lo tanto, parece que hay más de una fuente.
Mario Huizinga
44
com.google.gms:google-services 4.0.1y 4.0.2ambos causan este aviso de advertencia.
Martin Zeitler