RegisterResGeneratingTask est obsolète, utilisez registerGeneratedFolders (FileCollection)


158

Utilisation du nouveau studio Android avec le nouveau plug-in Gradle 3.0.0.
Lors de la construction, un avertissement s'est produit:

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)

1
pouvez-vous montrer vos tâches graduées? avez-vous des divisions apk?
itzhar

veuillez montrer votre Gradle
Jéwôm '13

Avez-vous vu cet article décrivant le problème exact (un problème connu) et une solution de contournement? (Premier coup sur Google.)
ashleedawg

@ashleedawg que dois-je faire? mettre à jour le studio Android? ou certaines bibliothèques?
Valentin Baryshev

4
@ashleedawg la solution de contournement que vous mentionnez est, à moins que je ne le comprenne mal, de rester avec l'ancienne version du plugin gradle. Ce n'est pas une façon de gérer la dépréciation à long terme. À court terme, l'avertissement peut être <s> ignoré </s> mémorisé, mais aucune action immédiate n'est nécessaire.
Alex Cohn

Réponses:


46

D'après ce que je peux dire, les plugins ajoutés en tant que dépendances de chemin de classe poseront des problèmes. Ie Firebase a eu un problème avec lui. Spoon et Flutter aussi. Faire cette recherche Google révèle beaucoup de dépôts GitHub avec un problème soulevé par la même chose, et tout ce qu'ils ont en commun est le fait qu'il s'agit d'un plugin Gradle. Le tissu semble également être une cause, comme mentionné par Mate *

D'après ce que je peux dire, le problème vient d'un / plusieurs plug-ins Gradle. Il peut également être déclenché par votre code Gradle, mais cela ne s'applique probablement pas si votre projet est une application et non un plugin Gradle.

Et comme l'a mentionné Alex Cohn dans un commentaire, la dépréciation est un avertissement. Dans ce cas, cela signifie que c'est une fonctionnalité qui sera éventuellement supprimée. Donc pour l'instant, en supposant qu'il s'agisse d'un plugin (et non créé par vous), vous pouvez l'ignorer. Au moment où il est supprimé, la plupart / tous les principaux plugins devraient être mis à jour pour le corriger.

Et, encore une fois, c'est un avertissement; pas une erreur. Vous pouvez toujours l'exécuter et l'ignorer si vous ne pouvez rien faire pour résoudre le problème. Désactiver par exemple le plugin Fabric * est excessif, car il fonctionne toujours.

Je n'utilise pas Fabric moi-même et Fabric n'est pas open-source, donc je ne sais pas si les développeurs l'ont corrigé ou non

TL; DR: les plugins Gradle en sont la cause. C'est un avertissement (pas une erreur), donc supprimer les plugins à l'origine du problème est excessif. Si vous ne pouvez pas le réparer, laissez-le seul tant qu'il est seulement obsolète pour le moment (non supprimé)


Si vous utilisez Firebase, il existe une solution spécifique qui est également mentionnée dans le guide de migration (lié plus loin dans cet article); exclure le module goyave

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

Le problème lui-même est assez difficile à détecter. D'après ce que je peux dire, il n'y a pas de problème unique qui le cause dans tous les plugins que j'ai vérifiés (et liés dans cette réponse). Si vous avez codé quelque chose qui cause le problème (et qu'il est possible de le résoudre; l'ajout d'un plugin gradle tiers ne le cause pas), vous pouvez essayer de résoudre ce problème.

D'après ce que je peux dire de la cause réelle, cela est résolu en mettant à jour le fichier Gradle (bien que dans la bibliothèque Spoon, il ait été corrigé en modifiant une ligne liée à TestVariant) en suivant les rubriques du guide de migration du plugin Gradle 3.0.0.

Le tout est couvert par la documentation du développeur , mais voici quelques-uns des éléments qui, à mon avis, sont pertinents en fonction des demandes de tirage effectuées sur les projets où cela a posé problème:

En plus de la mise à jour de la version et du plugin Gradle, vous devez également ajouter le google()dépôt sous repositories.

compileest maintenant implementationou api, mais implementationest celui recommandé.

providedest compileOnlyet apkestruntimeOnly

androidTestCompileest devenu androidTestImplementation, et testCompile->testImplementation

Si vous utilisez des saveurs, vous devez utiliser des dimensions de saveurs (couvertes par la documentation).

Pour les types de build, vous devez inclure des solutions de secours au cas où il y aurait une bibliothèque qui n'aurait pas ce type de build. Celles-ci sont définies dans le profilebloc sous le androidbloc.

Si ce n'est déjà fait, le plugin gradle doit être défini en premier. Si vous n'avez pas d'autres dépendances de chemin de classe, ce n'est pas un problème. Mais si vous le faites, assurez-vous que le plugin gradle est défini en premier.

Si vous utilisez testVariants, assurez-vous de ne pas appeler testedVariantdans la classe. Cela semble être la cause de la bibliothèque Spoon.

Ces choses sont, d'après ce que j'ai pu dire, certaines des modifications qui ont été apportées pour résoudre le problème.


Mais je ne suis pas en mesure de déboguer la ligne de code, elle affiche une erreur
Abhinav Gupta

ÉCHEC: la construction a échoué avec une exception. * Ce qui n'a pas fonctionné: l'exécution de la tâche ': app: compileDebugJavaWithJavac' a échoué. > La compilation a échoué; voir la sortie d'erreur du compilateur pour plus de détails. * Essayez: Exécutez avec l'option --stacktrace pour obtenir la trace de la pile. Exécutez avec l'option --info ou --debug pour obtenir plus de sortie de journal. Exécutez avec --scan pour obtenir des informations complètes. * Obtenez plus d'aide sur help.gradle.org BUILD FAILED in 4s 29 tâches exploitables : 2 exécutées, 27 à jour
Abhinav Gupta

@AbhinavGupta ce n'est pas le stacktrace. C'est juste un message vous disant que quelque chose s'est mal passé
Zoe

mais je ne suis pas en mesure de résoudre cela et à cause de cela, je ne peux pas installer apk sur mon appareil
Abhinav Gupta

@AbhinavGupta alors posez une nouvelle question sur Stack Overflow
Zoe

17

J'utilise le plugin Gradle des services Play com.google.gms:google-servicesavec la version 4.2.0.

Dans le code source, nous pouvons voir que: entrez la description de l'image ici

Donc pour moi, c'était la raison de mes avertissements et ne peut pas être supprimé tant que le plugin n'est pas corrigé. Le problème est ici

Comme mentionné par @Zoe, cela peut également provenir d'autres plugins Gradle.

Meilleur


15

Le problème est résolu avec la version 4.3.0 du plug-in de services Google (résolu avec ce commit )

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

Trouvé ici


10

La mise à jour vers la dernière version du plugin Fabric Gradle résout ce problème.

Depuis le journal des modifications:

  • Correction de l'avertissement de dépréciation «registerResGeneratingTask».

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


Mais qu'est-ce que c'est exactement? Vaut-il la peine d'être amélioré? Cela cause-t-il des problèmes (avant et après la mise à jour)? Nous utilisons la v2.6.8 et maintenant ils ont la v2.9.3, mais je ne vois pas comment la regarder dans le changelog. Ils ont différentes versions là-bas ("1.4.2 24 mai 2018" par exemple)
développeur android

@androiddeveloper Vous confondez le plugin Fabric Gradle et Crashlytics. Découvrez différents composants dans le menu de gauche.
Eugen Pechanec

4

Dans mon cas, cela était dû à une version incompatible des bibliothèques de support Android. J'ai mis à jour tous les modules avec la dernière version (28.0.0) et cela l'a résolu.


1

Après avoir correctement installé Fabric, ce problème a été résolu pour moi

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' }
}

1

J'ai eu ce message d'erreur et beaucoup d'autres comme

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

et tout mon projet a commencé à donner soudainement les mêmes messages d'erreur.

Le studio Android donnait des avertissements concernant mon programme antivirus. J'ai essayé de le configurer mais je n'ai pas fonctionné.

Enfin, j'ai désinstallé l'antivirus QuickHeal de mon système et tout va bien maintenant


0

Toutes les autres réponses concernent des problèmes avec des composants tiers .

Voici comment mettre à jour votre projet qui utilise registerResGeneratingTaskdirectement:

Avant:

variant.registerResGeneratingTask generateIcon, ICON_DIR

Après:

variant.mergeResourcesProvider.get().dependsOn generateIcon
variant.registerGeneratedResFolders files(ICON_DIR)

0

Construction au niveau du projet.

Utilisez la version suivante de la dépendance des services 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'
    }
}

Problème résolu pour moi.


-2

Pour moi, cet avertissement a disparu lorsque j'ai désactivé le plugin Fabric Gradle, veuillez vérifier si vous utilisez Fabric ou un autre plugin dont je suis responsable de cet avertissement.


Tissu supprimé, mais cet avertissement apparaît toujours.
Valentin Baryshev

Je n'utilise pas de tissu et j'ai ce message!
thiagolr

3
La désactivation du plugin io.fabric a réduit 8 de ces avertissements à 4. Il semble donc qu'il y ait plus d'une source.
Mario Huizinga

4
com.google.gms:google-services 4.0.1& les 4.0.2deux provoquent cet avertissement.
Martin Zeitler
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.