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

问题描述 投票:124回答:6

使用新的Android工作室与新的3.0.0 Gradle插件。 当发生一些警告时:

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)
android android-studio gradle kotlin android-studio-3.0
6个回答
36
投票

据我所知,作为类路径依赖项添加的插件会产生问题。即Firebase有一个问题。 SpoonFlutter也是如此。做this Google search揭示了很多GitHub repos,同时引发了一个问题,他们共同的一点是它是Gradle插件的事实。织物似乎也是一个原因,如Mate所述*

据我所知,问题来自/多个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插件不会导致它),您可以尝试修复它。

从我所知道的实际原因来看,它通过更新Gradle文件(虽然在Spoon库中,通过更改与TestVariant相关的行来修复)通过遵循Gradle插件3.0.0迁移指南中的主题来解决。

整个事情都包括by the developer docs,但这里有一些我认为相关的东西是基于对项目进行的拉取请求,这是一个问题:

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

compile现在是implementationapi,但implementation是推荐的。

providedcompileOnlyapkruntimeOnly

androidTestCompile已成为androidTestImplementation,和testCompile - > testImplementation

如果使用flavor,则必须使用flavor维度(文档涵盖)。

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

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

如果你使用testVariants,请确保你没有在课堂上调用testedVariant。它似乎是Spoon库的原因。

从我能够说的,这些东西是为解决这个问题所做的一些改变。


16
投票

我正在使用Play服务Gradle插件com.google.gms:google-services与版本4.2.0

在源代码中我们可以看到:enter image description here

所以对我来说,这就是我警告的原因,在插件修复之前无法删除。问题是here

正如@Zoe所提到的,这也可能来自其他Gradle插件。

最好


9
投票

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

来自更改日志:

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

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


2
投票

在我的情况下,这是由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' }
}

0
投票

对我来说,当我关闭织物gradle插件时,这个警告消失了,请检查你是否使用了织物或其他负责此警告的插件。

© www.soinside.com 2019 - 2024. All rights reserved.