RegisterResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection)

AndroidAndroid StudioGradleKotlinAndroid Studio-3.0

Android Problem Overview


Using new android studio with new 3.0.0 Gradle pluging.
When building some warning happened:

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)

Android Solutions


Solution 1 - Android

From what I can tell, plugins added as classpath dependencies will give problems. I.e. Firebase had an issue with it. Spoon and Flutter as well. Doing this Google search reveals a lot of GitHub repos with an issue raised over the same thing, and all they have in common is the fact that it's a Gradle plugin. Fabric appears to be a cause as well, as mentioned by Mate*

From what I can tell, the issue comes from a/multiple Gradle plugin (s). It can also be triggered by your Gradle code, but this is most likely not applicable if your project is an app and not a Gradle plugin.

And as mentioned by Alex Cohn in a comment, deprecation is a warning. In this case, it means it's a feature that's going to be removed eventually. So for now, assuming it is a plugin (and not made by you), you can ignore it. By the time it's removed, most/all of the major plugins should be updated to fix it.

And, again, it is a warning; not an error. You can still run it, and ignore it if there's nothing you can do about the issue. Disabling e.g. the Fabric* plugin is overkill, as it still works.

I don't use Fabric myself, and Fabric isn't open-source, so I don't know if the developers fixed it or not

TL;DR: Gradle plugins are the cause. It's a warning (not an error), so removing the plugins that cause the issue is overkill. If you can't fix it, leave it alone as long as it is only deprecated at the moment (not removed)


If you use Firebase, there is a specific solution to it that's also mentioned in the migration guide (linked later in this post); exclude the guava module

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

The issue itself is fairly hard to detect. From what I can tell, there is no single issue that causes it in all of the plugins I checked (and linked in this answer). If you have coded something that causes the issue (and it's possible to fix it; adding a 3rd party gradle plugin isn't causing it), there are some things you can try to fix it.

From what I can tell as of the actual cause, it's solved by updating the Gradle file (though in the Spoon library, it was fixed by changing a line related to TestVariant) by following the topics in the Gradle plugin 3.0.0 migration guide.

The entire thing is covered by the developer docs, but here's some of the stuff I think is relevant based on the pull requests done on projects where it's been a problem:

Aside updating the Gradle version and plugin, you also need to add the google() repo under repositories.

compile is now implementation or api, but implementation is the recommended one.

provided is compileOnly and apk is runtimeOnly

androidTestCompile has become androidTestImplementation, and testCompile -> testImplementation

If you use flavors, you have to use flavor dimensions (covered by the docs).

For build types, you have to include fallbacks in case there is a library that doesn't have that build type. These are defined in the profile block under the android block.

If not done already, the gradle plugin has to be defined first. If you don't have any other classpath dependencies, it isn't a problem. But if you do, make sure the gradle plugin is defined first.

If you use testVariants, make sure you don't call testedVariant in the class. It appears to be the cause for the Spoon library.

These things are, from what I have been able to tell, some of the changes that were made to fix the issue.

Solution 2 - Android

I am using the Play services Gradle plugin com.google.gms:google-services with version 4.2.0.

In the source code we can see that: enter image description here

So for me, that was the reason of my warnings and cannot be removed until the plugin gets fixed. The issue is here

As mentioned by @Zoe, this may come from other Gradle Plugins also.

Solution 3 - Android

The issue is resolved with Google Services Plugin Version 4.3.0 (Resolved with this commit)

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

Found here

Solution 4 - Android

Updating to the latest version of the Fabric Gradle Plugin fixes this issue.

From the changelog:

  • Fixed “registerResGeneratingTask” deprecation warning.

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

Solution 5 - Android

In my case this was caused by mismatched version of the Android support libraries. I updated all modules to the latest version (28.0.0) and that solved it.

Solution 6 - Android

After installing Fabric properly this issue got solved for me

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

Solution 7 - Android

I had this error message and lot of others like

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

and all of my project started giving same error messages suddenly.

Android studio was giving warnings about my antivirus program. I tried configuring it but didn't work.

Finally I uninstalled QuickHeal antivirus from my system and all is well now

Solution 8 - Android

All the other answers are about problems with third-party components.

Here's how to update your project that uses registerResGeneratingTask directly:

Before:

variant.registerResGeneratingTask generateIcon, ICON_DIR

After:

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

Solution 9 - Android

Project Level Build.Gradle

Use following version of google services dependency.

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

Solved issue for me.

Solution 10 - Android

For me this warning disappeared when I turned off fabric gradle plugin, o please check if you use fabric or another plugin that i responsible for this warning.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionValentin BaryshevView Question on Stackoverflow
Solution 1 - AndroidZoe stands with UkraineView Answer on Stackoverflow
Solution 2 - Androiduser1998494View Answer on Stackoverflow
Solution 3 - AndroidSimplerView Answer on Stackoverflow
Solution 4 - Androidluis_cortesView Answer on Stackoverflow
Solution 5 - AndroidLee HounshellView Answer on Stackoverflow
Solution 6 - AndroidNithin RajaView Answer on Stackoverflow
Solution 7 - AndroidMakarandView Answer on Stackoverflow
Solution 8 - Android0xFView Answer on Stackoverflow
Solution 9 - AndroidAkram ChauhanView Answer on Stackoverflow
Solution 10 - AndroidMateView Answer on Stackoverflow