Подтвердить что ты не робот

RegisterResGeneratingTask устарел, используйте registerGeneratedFolders (FileCollection)

Использование новой студии Android с новым подключением Gradle 3.0.0.
При строительстве появилось какое-то предупреждение:

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)
4b9b3361

Ответ 1

Из того, что я могу сказать, плагины, добавленные как зависимости classpath, будут вызывать проблемы. Т.е. у Firebase была проблема с этим. Ложка и флаттер. Выполнение этого поиска в Google выявляет множество репозиториев GitHub с проблемой, поднятой из-за одной и той же вещи, и все, что у них общего, - это то, что это плагин Gradle. Ткань, кажется, также является причиной, как упомянуто Мате *

Из того, что я могу сказать, проблема возникает из/несколько плагинов Gradle. Это также может быть вызвано вашим кодом Gradle, но это, скорее всего, не применимо, если ваш проект является приложением, а не плагином Gradle.

И, как упомянул в своем комментарии Алекс Кон, осуждение является предупреждением. В данном случае это означает, что эта функция будет удалена в конце концов. Так что пока, предполагая, что это плагин (а не сделан вами), вы можете игнорировать его. К тому времени, когда он удален, большинство/все основные плагины должны быть обновлены, чтобы исправить это.

И, опять же, это предупреждение; не ошибка. Вы все еще можете запустить его и игнорировать, если ничего не можете поделать с этой проблемой. Например, отключение плагина 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.

Все это покрыто документами для разработчиков, но здесь некоторые вещи, которые я считаю актуальными, основаны на запросах на извлечение, выполненных в проектах, где это было проблемой:

Помимо обновления версии и плагина Gradle, вам также необходимо добавить repositories google() в repositories.

compile теперь является implementation или api, но implementation является рекомендуемой.

provided compileOnly и apk является runtimeOnly

androidTestCompile стал androidTestImplementation, а testCompiletestImplementation

Если вы используете ароматизаторы, вы должны использовать размеры ароматизаторов (указанные в документации).

Для типов сборки вы должны включить запасные варианты на случай, если есть библиотека, у которой нет этого типа сборки. Они определены в блоке profile под блоком android.

Если это еще не сделано, плагин Gradle должен быть определен первым. Если у вас нет других зависимостей пути к классам, это не проблема. Но если вы это сделаете, убедитесь, что плагин gradle определен первым.

Если вы используете testVariants, убедитесь, что вы не вызываете testedVariant в классе. Кажется, это причина для библиотеки Spoon.

Эти вещи, насколько я могу судить, являются некоторыми изменениями, которые были сделаны для устранения проблемы.

Ответ 2

Я использую плагин Play сервисов Gradle com.google.gms:google-services с версией 4.2.0.

В исходном коде мы видим, что: enter image description here

Так что для меня это было причиной моих предупреждений и не может быть удалено, пока плагин не будет исправлен. Вопрос здесь

Как уже упоминалось @Zoe, это может происходить и от других плагинов Gradle.

Лучший

Ответ 3

Обновление до последней версии подключаемого модуля Fabric Gradle устраняет эту проблему.

Из журнала изменений:

  • Исправлено предупреждение об устаревании "registerResGeneratingTask".

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

Ответ 4

В моем случае это было вызвано несовпадением версий библиотек поддержки Android. Я обновил все модули до последней версии (28.0.0), и это решило эту проблему.

Ответ 5

После правильной установки 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

Для меня это предупреждение исчезло, когда я отключил плагин для ткани gradle, o проверьте, используете ли вы ткань или другой плагин, ответственный за это предупреждение.

Ответ 7

Проблема решена с помощью плагина Google Services версии 4.3.0 (решена с помощью этого коммита)

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

Нашел здесь