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

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

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)

person Valentin Baryshev    schedule 27.10.2017    source источник
comment
вы можете показать свои задачи Gradle? у тебя apk разбивается?   -  person itzhar    schedule 05.11.2017
comment
пожалуйста, покажи свой Gradle   -  person Jéwôm'    schedule 13.11.2017
comment
Вы видели эту статью, в которой описывается точная проблема (известная проблема) и способ решения? (Первое обращение в Google.)   -  person ashleedawg    schedule 18.11.2017
comment
@ashleedawg что мне делать? обновить андроид студию? или какие-то библиотеки?   -  person Valentin Baryshev    schedule 19.11.2017
comment
@ashleedawg, обходной путь, о котором вы упомянули, - если я не понимаю его неправильно, оставаться со старой версией плагина gradle. Это не способ справиться с устареванием в долгосрочной перспективе. В краткосрочной перспективе предупреждение можно ‹s› проигнорировать ‹/s› запомнить, но никаких немедленных действий не требуется.   -  person Alex Cohn    schedule 28.11.2017


Ответы (10)


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

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

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

И снова это предупреждение; не ошибка. Вы все равно можете запустить его и игнорировать, если вы ничего не можете поделать с проблемой. Отключение, например, плагин Fabric * - это перебор, поскольку он все еще работает.

Я сам не использую Fabric, и Fabric не является открытым исходным кодом, поэтому я не знаю, исправили ли разработчики это или нет

TL; DR: причиной являются плагины Gradle. Это предупреждение (а не ошибка), поэтому удаление подключаемых модулей, вызывающих проблему, является излишним. Если вы не можете исправить это, оставьте его в покое, поскольку он только устарел (не удален)


Если вы используете Firebase, для этого есть специальное решение, которое также упоминается в руководстве по миграции (ссылка на который приведена позже в этом сообщении); исключить модуль guava

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

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

Насколько я могу судить о фактической причине, она решается обновлением файла Gradle (хотя в библиотеке Spoon это было исправлено путем изменения строки, связанной с TestVariant), следуя темам в руководстве по миграции Gradle plugin 3.0.0.

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

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

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

provided равно compileOnly, а apk равно runtimeOnly

androidTestCompile стал androidTestImplementation, а testCompile -> testImplementation

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

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

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

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

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

person Zoe    schedule 17.01.2018
comment
Но я не могу отладить строку кода, в которой отображается ошибка - person Abhinav Gupta; 29.03.2018
comment
ОШИБКА: сбой при сборке за исключением. * Что пошло не так: не удалось выполнить задачу ': app: compileDebugJavaWithJavac'. ›Сбой компиляции; подробности см. в выводе ошибок компилятора. * Попробуйте: запустить с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --info или --debug, чтобы получить больше результатов журнала. Запустите с --scan, чтобы получить полную информацию. * Получите дополнительную помощь на странице help.gradle.org BUILD FAILED за 4 секунды 29 действенных задач: 2 выполнены, 27 обновлены. на сегодняшний день - person Abhinav Gupta; 29.03.2018
comment
@AbhinavGupta, это не трассировка стека. Это просто сообщение о том, что что-то пошло не так - person Zoe; 29.03.2018
comment
но я не могу решить эту проблему, и из-за этого я не могу установить apk на свое устройство - person Abhinav Gupta; 29.03.2018
comment
@AbhinavGupta, так что задайте новый вопрос о переполнении стека - person Zoe; 29.03.2018
comment
Похоже, это в очереди на исправление в ближайшее время ... github. com / fossasia / open-event-orga-app / pull / 1591 - person Simpler; 23.04.2019

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

В исходном коде мы видим, что:  введите описание изображения здесь

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

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

Лучший

person user1998494    schedule 11.12.2018

Проблема решена с помощью подключаемого модуля служб Google версии 4.3.0 (решена с помощью этой фиксации )

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

Найдено здесь

person Simpler    schedule 06.07.2019

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

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

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

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

person luis_cortes    schedule 30.03.2018
comment
Что это именно? Стоит ли обновляться? Вызывает ли это какие-либо проблемы (до и после обновления)? Мы используем v2.6.8, а теперь у них v2.9.3, но я не вижу, как это посмотреть в журнале изменений. У них там разные версии (например, 1.4.2 от 24 мая 2018 г.) - person android developer; 12.06.2018
comment
@androiddeveloper. Вы путаете подключаемый модуль Fabric Gradle и Crashlytics. Проверьте различные компоненты в левом меню. - person Eugen Pechanec; 05.05.2019

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

person Lee Hounshell    schedule 27.11.2018

После правильной установки 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' }
}
person Nithin Raja    schedule 22.04.2019

У меня было это сообщение об ошибке и многие другие, например

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

и весь мой проект внезапно начал выдавать одни и те же сообщения об ошибках.

Студия Android предупреждала о моей антивирусной программе. Я пытался настроить его, но не получилось.

Наконец, Я удалил антивирус QuickHeal из своей системы, и теперь все в порядке

person Makarand    schedule 12.12.2019

Все остальные ответы касаются проблем с сторонними компонентами.

Вот как обновить ваш проект, который напрямую использует registerResGeneratingTask:

До:

variant.registerResGeneratingTask generateIcon, ICON_DIR

После:

variant.mergeResourcesProvider.get().dependsOn generateIcon
variant.registerGeneratedResFolders files(ICON_DIR)
person 0xF    schedule 02.04.2020

Уровень проекта Build.Gradle

Используйте следующую версию зависимости сервисов Google.

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

Решенный вопрос для меня.

person Akram Chauhan    schedule 16.06.2020

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

person Mate    schedule 14.11.2017
comment
Удалена ткань, но все равно появляется это предупреждение. - person Valentin Baryshev; 14.11.2017
comment
Я не использую ткань, и у меня есть это сообщение! - person thiagolr; 21.11.2017
comment
Отключение плагина io.fabric уменьшило количество предупреждений с 8 до 4. Так что, похоже, существует более одного источника. - person Mario Huizinga; 07.12.2017
comment
com.google.gms:google-services 4.0.1 & 4.0.2 оба вызывают это предупреждение. - person Martin Zeitler; 28.07.2018