RegisterResGeneratingTask ist veraltet. Verwenden Sie registerGeneratedFolders (FileCollection).


158

Verwenden von neuem Android Studio mit neuem 3.0.0 Gradle Pluging.
Beim Bau ist eine Warnung aufgetreten:

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)

1
Kannst du deine Gradle-Aufgaben zeigen? Hast du Apk Splits?
Itzhar

Bitte zeigen Sie Ihren Gradle
Jéwôm '13.

Haben Sie diesen Artikel gesehen, in dem das genaue Problem (ein bekanntes Problem) und eine Problemumgehung beschrieben werden? (Erster Treffer bei Google.)
Ashleedawg

@ashleedawg was soll ich tun? Android Studio aktualisieren? oder einige Bibliotheken?
Valentin Baryshev

4
@ashleedawg Die von Ihnen erwähnte Problemumgehung besteht darin, bei einer älteren Version des Gradle-Plugins zu bleiben, es sei denn, ich verstehe das falsch. Dies ist auf lange Sicht keine Möglichkeit, mit Abwertungen umzugehen. Kurzfristig kann die Warnung <s> ignoriert </ s> gespeichert werden, es sind jedoch keine sofortigen Maßnahmen erforderlich.
Alex Cohn

Antworten:


46

Nach allem, was ich sagen kann, verursachen Plugins, die als Klassenpfadabhängigkeiten hinzugefügt wurden, Probleme. Dh Firebase hatte ein Problem damit. Löffel und Flattern auch. Wenn Sie diese Google-Suche durchführen , werden viele GitHub-Repos mit einem Problem angezeigt, das über dasselbe Thema aufgeworfen wurde. Allen gemeinsam ist jedoch die Tatsache, dass es sich um ein Gradle-Plugin handelt. Stoff scheint ebenfalls eine Ursache zu sein, wie von Mate * erwähnt

Soweit ich das beurteilen kann, stammt das Problem von einem / mehreren Gradle-Plugins. Es kann auch durch Ihren Gradle-Code ausgelöst werden. Dies gilt jedoch höchstwahrscheinlich nicht, wenn Ihr Projekt eine App und kein Gradle-Plugin ist.

Und wie von Alex Cohn in einem Kommentar erwähnt, ist die Ablehnung eine Warnung. In diesem Fall bedeutet dies, dass es sich um eine Funktion handelt, die irgendwann entfernt wird. Angenommen, es ist ein Plugin (und nicht von Ihnen erstellt), können Sie es ignorieren. Zum Zeitpunkt des Entfernens sollten die meisten / alle wichtigen Plugins aktualisiert werden, um das Problem zu beheben.

Und wieder ist es eine Warnung; kein Fehler. Sie können es weiterhin ausführen und ignorieren, wenn Sie nichts gegen das Problem unternehmen können. Das Deaktivieren von z. B. dem Fabric * -Plugin ist übertrieben, da es immer noch funktioniert.

Ich benutze Fabric selbst nicht und Fabric ist nicht Open Source, daher weiß ich nicht, ob die Entwickler es behoben haben oder nicht

TL; DR: Gradle-Plugins sind die Ursache. Es ist eine Warnung (kein Fehler), daher ist das Entfernen der Plugins, die das Problem verursachen, übertrieben. Wenn Sie es nicht reparieren können, lassen Sie es in Ruhe, solange es im Moment nur veraltet ist (nicht entfernt).


Wenn Sie Firebase verwenden, gibt es eine spezielle Lösung, die auch im Migrationshandbuch (weiter unten in diesem Beitrag verlinkt) erwähnt wird. Schließen Sie das Guavenmodul aus

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

Das Problem selbst ist ziemlich schwer zu erkennen. Soweit ich weiß, gibt es in allen Plugins, die ich überprüft (und in dieser Antwort verlinkt) habe, kein einziges Problem, das es verursacht. Wenn Sie etwas codiert haben, das das Problem verursacht (und es kann behoben werden; das Hinzufügen eines Gradle-Plugins eines Drittanbieters verursacht es nicht), können Sie versuchen, das Problem zu beheben.

Soweit ich die tatsächliche Ursache beurteilen kann, wird das Problem durch Aktualisieren der Gradle-Datei (obwohl es in der Spoon-Bibliothek durch Ändern einer Zeile in Bezug auf behoben wurde) behoben, indem TestVariantdie Themen im Migrationshandbuch für das Gradle-Plugin 3.0.0 befolgt werden.

Das Ganze wird in den Entwicklerdokumenten behandelt , aber hier sind einige Dinge , die meiner Meinung nach relevant sind, basierend auf den Pull-Anforderungen, die für Projekte gestellt wurden, bei denen es ein Problem war:

Neben der Aktualisierung der Gradle-Version und des Plugins müssen Sie auch das google()Repo unter hinzufügen repositories.

compileist jetzt implementationoder api, ist aber implementationdie empfohlene.

providedist compileOnlyund apkistruntimeOnly

androidTestCompileist geworden androidTestImplementation, und testCompile->testImplementation

Wenn Sie Aromen verwenden, müssen Sie Geschmacksdimensionen verwenden (die in den Dokumenten behandelt werden).

Für Build-Typen müssen Sie Fallbacks einschließen, falls es eine Bibliothek gibt, die diesen Build-Typ nicht hat. Diese werden im profileBlock unter dem androidBlock definiert.

Falls noch nicht geschehen, muss zuerst das Gradle-Plugin definiert werden. Wenn Sie keine anderen Klassenpfadabhängigkeiten haben, ist dies kein Problem. Wenn Sie dies jedoch tun, stellen Sie sicher, dass das Gradle-Plugin zuerst definiert ist.

Wenn Sie verwenden testVariants, stellen Sie sicher, dass Sie testedVariantdie Klasse nicht anrufen . Es scheint die Ursache für die Löffelbibliothek zu sein.

Diese Dinge sind, soweit ich das beurteilen konnte, einige der Änderungen, die vorgenommen wurden, um das Problem zu beheben.


Aber ich bin nicht in der Lage, Codezeile zu debuggen, es zeigt Fehler
Abhinav Gupta

FAILURE: Build mit einer Ausnahme fehlgeschlagen. * Was ist schief gelaufen: Ausführung für Aufgabe ': app: compileDebugJavaWithJavac' fehlgeschlagen. > Kompilierung fehlgeschlagen; Weitere Informationen finden Sie in der Compilerfehlerausgabe. * Versuchen Sie: Führen Sie die Option --stacktrace aus, um den Stack-Trace abzurufen. Führen Sie die Option --info oder --debug aus, um mehr Protokollausgabe zu erhalten. Führen Sie mit --scan aus, um vollständige Einblicke zu erhalten. * Weitere Hilfe erhalten Sie unter help.gradle.org. BUILD FAILED in 4s 29 umsetzbare Aufgaben: 2 ausgeführt, 27 aktuell
Abhinav Gupta

@AbhinavGupta das ist nicht der Stacktrace. Das ist nur eine Nachricht, die Ihnen sagt, dass etwas schief gelaufen ist
Zoe

aber ich bin nicht in der Lage, dies zu lösen und aus diesem Grund kann ich apk nicht auf meinem Gerät installieren
Abhinav Gupta

@AbhinavGupta so stellen Sie eine neue Frage auf Stapelüberlauf
Zoe

17

Ich verwende das Play Services Gradle Plugin com.google.gms:google-servicesmit Version 4.2.0.

Im Quellcode können wir Folgendes sehen: Geben Sie hier die Bildbeschreibung ein

Für mich war das der Grund für meine Warnungen und kann erst entfernt werden, wenn das Plugin repariert ist. Das Problem ist hier

Wie von @Zoe erwähnt, kann dies auch von anderen Gradle-Plugins stammen.

Beste


15

Das Problem wurde mit dem Google Services Plugin Version 4.3.0 behoben (mit diesem Commit behoben )

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

gefunden hier


10

Das Aktualisieren auf die neueste Version des Fabric Gradle Plugins behebt dieses Problem.

Aus dem Changelog:

  • Die Verfallswarnung "registerResGeneratingTask" wurde behoben.

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


Was ist es aber genau? Lohnt sich ein Upgrade? Verursacht es Probleme (vor und nach dem Update)? Wir verwenden v2.6.8 und jetzt haben sie v2.9.3, aber ich sehe nicht, wie man es im Changelog betrachtet. Sie haben dort verschiedene Versionen ("1.4.2 24. Mai 2018" zum Beispiel)
Android-Entwickler

@androiddeveloper Sie verwechseln Fabric Gradle Plugin und Crashlytics. Überprüfen Sie verschiedene Komponenten im linken Menü.
Eugen Pechanec

4

In meinem Fall wurde dies durch eine nicht übereinstimmende Version der Android-Unterstützungsbibliotheken verursacht. Ich habe alle Module auf die neueste Version (28.0.0) aktualisiert und das hat es gelöst.


1

Nach der ordnungsgemäßen Installation von Fabric wurde dieses Problem für mich behoben

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

Ich hatte diese Fehlermeldung und viele andere mögen

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

und alle meine Projekte gaben plötzlich die gleichen Fehlermeldungen aus.

Android Studio warnte vor meinem Antivirenprogramm. Ich habe versucht, es zu konfigurieren, aber es hat nicht funktioniert.

Schließlich habe ich QuickHeal Antivirus von meinem System deinstalliert und jetzt ist alles in Ordnung


0

Alle anderen Antworten beziehen sich auf Probleme mit Komponenten von Drittanbietern .

So aktualisieren Sie Ihr Projekt, das registerResGeneratingTaskdirekt verwendet wird:

Vor:

variant.registerResGeneratingTask generateIcon, ICON_DIR

Nach dem:

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

0

Projektebene Build.Gradle

Verwenden Sie die folgende Version der Abhängigkeit von Google Services.

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

Problem für mich gelöst.


-2

Für mich verschwand diese Warnung, als ich das Fabric Gradle Plugin deaktivierte. Bitte überprüfen Sie, ob Sie Fabric oder ein anderes Plugin verwenden, das für diese Warnung verantwortlich ist.


Stoff entfernt, aber diese Warnung wird weiterhin angezeigt.
Valentin Baryshev

Ich benutze keinen Stoff und ich habe diese Nachricht!
Thiagolr

3
Durch Deaktivieren des Plugins io.fabric wurden 8 dieser Warnungen auf 4 reduziert. Es scheint also mehr als eine Quelle zu geben.
Mario Huizinga

4
com.google.gms:google-services 4.0.1& 4.0.2beide verursachen diesen Warnhinweis.
Martin Zeitler
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.