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

时间:2017-10-27 23:34:25

标签: android android-studio gradle kotlin android-studio-3.0

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

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)

10 个答案:

答案 0 :(得分:32)

据我所知,作为类路径依赖项添加的插件会产生问题。即Firebase有问题。 SpoonFlutter也是this Google search。做Mate会发现很多GitHub存储库都存在同一个问题,并且它们的共同之处在于它是一个Gradle插件。织物似乎也是一个原因,如Alex Cohn *

所述

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

正如by the developer docs在评论中提到的那样,弃用是一个警告。在这种情况下,这意味着它将是最终将被删除的功能。所以现在,假设它是一个插件(而不是由你制作),你可以忽略它。当它被删除时,大多数/所有主要插件都应该更新以修复它。

而且,这是一个警告; 不是错误。您仍然可以运行它,如果您无法解决该问题,请忽略它。禁用,例如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迁移指南。

整个事情都涵盖了http://server/_all_dbs,但是我认为这些内容与我在项目中提出的拉取请求有关是一致的:

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

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

providedcompileOnlyapkruntimeOnly

androidTestCompile已成为androidTestImplementationtestCompile - > testImplementation

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

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

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

如果您使用testVariants,请确保不要在课堂上致电testedVariant。它似乎是Spoon库的原因。

根据我的能力,这些事情是为解决这个问题所做的一些改变。

答案 1 :(得分:14)

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

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

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

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

最佳

答案 2 :(得分:9)

更新到最新版本的Fabric Gradle Plugin解决了这个问题。

来自更改日志:

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

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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

此问题已通过Google服务插件版本4.3.0(已由this commit解决)解决了

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

找到了here

答案 5 :(得分: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' }
}

答案 6 :(得分:1)

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

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

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

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

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

所有其他答案均与第三方组件的问题有关。

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

之前:

variant.registerResGeneratingTask generateIcon, ICON_DIR

之后:

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

答案 9 :(得分:0)

项目级Build.Gradle

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

为我解决了问题。