不推荐使用RegisterResGeneratingTask,请使用registerGeneratedFolders(FileCollection)


158

使用新的Android Studio和新的3.0.0 Gradle插件。
生成警告时:

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)

1
您可以显示gradle任务吗?你有APK拆分吗?
itzhar,2017年

请出示摇篮
Jéwôm”

您是否看过这篇文章,描述了确切的问题(一个已知的问题)和解决方法?(首次在Google上投放)。
ashleedawg

@ashleedawg我应该怎么办?更新Android Studio?或一些图书馆?
Valentin Baryshev

4
@ashleedawg您提到的解决方法是,除非我误解了,否则请保留旧版本的gradle插件。从长远来看,这不是处理弃用的方法。在短期内,可以<s>忽略</ s>记住警告,但无需立即采取措施。
亚历克斯·科恩

Answers:


46

据我所知,添加为类路径依赖项的插件会带来问题。即火力地堡遇到了问题。勺子扑动。进行此Google搜索会发现很多GitHub存储库,并且在同一件事上引发了一个问题,它们的共同点在于它是Gradle插件。面料似乎是一个原因,以及,如提到的伴侣 *

据我所知,问题来自一个/多个Gradle插件。它也可以由您的Gradle代码触发,但是如果您的项目是应用程序而不是Gradle插件,则很可能不适用。

正如Alex Cohn在评论中提到的那样,弃用是一种警告。在这种情况下,这意味着它将最终被删除。因此,现在,假设它是一个插件(而不是您自己制作),则可以忽略它。在删除时,大多数/所有主要插件都应进行更新以修复它。

再一次,这是一个警告;没有错误。您仍然可以运行它,如果对该问题无能为力,请忽略它。禁用例如Fabric *插件是多余的,因为它仍然有效。

我自己不使用Fabric,Fabric不是开源的,所以我不知道开发人员是否修复了它

TL; DR:原因是Gradle插件。这是一个警告(不是错误),因此删除导致该问题的插件是多余的。如果您无法修复它,请放下它,只要此刻不推荐使用(不删除)即可


如果您使用Firebase,则迁移指南中也会提到该解决方案的具体解决方案(本文稍后链接);排除番石榴模块

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

问题本身很难发现。据我所知,在我检查过的所有插件(并在此答案中链接过)中,都没有一个导致该问题的原因。如果您编写了导致该问题的代码(可以解决此问题;添加第三方gradle插件不会导致该问题),则可以尝试一些方法。

据我所知,TestVariant通过遵循Gradle插件3.0.0迁移指南中的主题,更新了Gradle文件(尽管在Spoon库中,通过更改与相关的行来解决)可以解决该问题。

整个内容都包含在开发人员文档中,但是根据存在问题的项目上的拉取请求,我认为这是一些相关的内容:

除了更新Gradle版本和插件外,您还需要google()在下添加repo repositories

compile现在是implementationapi,但implementation推荐使用。

providedcompileOnlyapkruntimeOnly

androidTestCompile已经成为androidTestImplementation,并且testCompile->testImplementation

如果使用调味料,则必须使用调味料尺寸(由文档覆盖)。

对于构建类型,如果有一个库没有该构建类型,则必须包括回退。这些在profile块下面的android块中定义。

如果尚未完成,则必须首先定义gradle插件。如果您没有任何其他类路径依赖关系,那不是问题。但是,如果这样做,请确保首先定义gradle插件。

如果您使用testVariants,请确保您没有testedVariant在课堂上打电话。这似乎是Spoon库的原因。

据我所知,这些都是为解决此问题而进行的一些更改。


但是我无法调试显示错误的代码行
Abhinav Gupta,

失败:生成失败,发生异常。*出了什么问题:任务':app:compileDebugJavaWithJavac'的执行失败。>编译失败;有关详细信息,请参见编译器错误输出。*尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行,以获取更多日志输出。与--scan一起运行以获取完整的见解。*在help.gradle.org上获得更多帮助 4秒内失败:29项可执行任务:2项已执行,27项最新
Abhinav Gupta,

@AbhinavGupta不是堆栈跟踪。这只是一条消息,告诉您出了点问题
Zoe

但是我无法解决这个问题,并且导致这个原因,我无法在我的设备中安装apk
Abhinav Gupta

@AbhinavGupta,所以问一个关于堆栈溢出的新问题
Zoe

17

我正在将Play服务Gradle插件com.google.gms:google-services与version一起使用4.2.0

在源代码中,我们可以看到: 在此处输入图片说明

因此,对我而言,这是我发出警告的原因,除非修复此插件,否则无法将其删除。问题在这里

如@Zoe所述,这可能也来自其他Gradle插件。

最好


15

该问题已通过Google服务插件4.3.0版解决(此提交已解决)

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

这里找到


10

更新到最新版本的Fabric Gradle插件可解决此问题。

从变更日志:

  • 修复了“ registerResGeneratingTask”弃用警告。

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


到底是什么?值得升级吗?是否会导致任何问题(更新前后)?我们使用v2.6.8,现在使用v2.9.3,但是我看不到如何在变更日志中查看它。他们在那里有不同的版本(例如“ 1.4.2 May 24,2018”)
android开发人员

@androiddeveloper您在混淆Fabric Gradle插件和Crashlytics。在左侧菜单中查看不同的组件。
Eugen Pechanec,

4

就我而言,这是由于Android支持库版本不匹配引起的。我将所有模块更新为最新版本(28.0.0),并解决了该问题。


1

正确安装Fabric后,这个问题为我解决了

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

我有此错误消息,还有很多其他类似的消息

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

我的所有项目突然开始发出相同的错误消息。

Android Studio发出有关我的防病毒程序的警告。我尝试配置它,但是没有用。

最后,我从系统上卸载了QuickHeal防病毒软件,现在一切正常


0

所有其他答案都是关于第三方组件的问题

以下是更新直接使用项目的方法registerResGeneratingTask

之前:

variant.registerResGeneratingTask generateIcon, ICON_DIR

后:

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

0

项目级别的构建等级

使用以下版本的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'
    }
}

为我解决了问题。


-2

对我来说,当我关闭Fabric Gradle插件时,该警告消失了,请检查您是否使用我负责此警告的Fabric或其他插件。


删除了面料,但是仍然出现此警告。
Valentin Baryshev

我没有使用面料,并且收到此消息!
thiagolr

3
禁用插件io.fabric将这些警告中的8个减少到4个。因此,似乎有多个来源。
Mario Huizinga

4
com.google.gms:google-services 4.0.14.0.2都会引起此警告通知。
Martin Zeitler '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.