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

158

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

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)
Валентин Барышев
источник
1
Можете ли вы показать свои учебные задания? у тебя есть apk-сплиты?
ижар
Пожалуйста, покажите свой Gradle
Jéwôm '13
Вы видели эту статью, описывающую точную проблему (известную проблему) и обходной путь? (Первый удар по Google.)
ashleedawg
@ashleedawg что мне делать? обновить андроид студию? или какие-то библиотеки?
Валентин Барышев
4
@ashleedawg Обходной путь, о котором вы упомянули, заключается в том, чтобы, если я не пойму его неправильно, остаться со старой версией плагина gradle. Это не способ справиться с износом в долгосрочной перспективе. В краткосрочной перспективе предупреждение можно <s> игнорировать </ s>, но немедленных действий не требуется.
Алекс Кон

Ответы:

46

Из того, что я могу сказать, плагины, добавленные как зависимости пути к классам, создадут проблемы. Т.е. у 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, вам также необходимо добавить google()репо в repositories.

compileсейчас implementationили api, но implementationрекомендуется.

providedесть compileOnlyи apkестьruntimeOnly

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

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

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

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

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

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

Zoe
источник
Но я не могу отладить строку кода, она показывает ошибку
Абхинав Гупта
СБОЙ: Сбой сборки за исключением. * Что пошло не так: выполнение задачи не выполнено ': app: compileDebugJavaWithJavac'. > Компиляция не удалась; см. вывод ошибки компилятора для деталей. * Попробуйте: Запустите с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --info или --debug, чтобы получить больше вывода журнала. Запустите с --scan, чтобы получить полное представление. * Получите дополнительную помощь по адресу help.gradle.org. СТРОИТЬ НЕ СДЕЛАНО в 4S 29 выполнимых задач: 2 выполнены, 27 обновлены
Абхинав Гупта
@AbhinavGupta это не трассировка стека. Это просто сообщение о том, что что-то пошло не так
Zoe
но я не могу решить это, и по этой причине я не могу установить apk в моем устройстве
Абхинав Гупта
@AbhinavGupta, поэтому задайте новый вопрос о переполнении стека
Zoe
17

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

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

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

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

Лучший

user1998494
источник
15

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

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

Нашел здесь

Simpler
источник
10

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

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

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

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

luis_cortes
источник
Что это точно, хотя? Стоит ли обновлять? Это вызывает какие-либо проблемы (до и после обновления)? Мы используем v2.6.8, и теперь у них есть v2.9.3, но я не вижу, как это посмотреть в журнале изменений. У них там разные версии (например, «1.4.2 24 мая 2018 года»)
разработчик Android
@androiddeveloper Вы путаете плагин Fabric Gradle и Crashlytics. Проверьте различные компоненты в левом меню.
Евгений
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 давала предупреждения о моей антивирусной программе. Я попытался настроить его, но не сработало.

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

Makarand
источник
0

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

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

Перед:

variant.registerResGeneratingTask generateIcon, ICON_DIR

После:

variant.mergeResourcesProvider.get().dependsOn generateIcon
variant.registerGeneratedResFolders files(ICON_DIR)
0xF
источник
0

Уровень проекта 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'
    }
}

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

Акрам Чаухан
источник
-2

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

Приятель
источник
Удалена ткань, но все равно появляется это предупреждение.
Валентин Барышев
Я не использую ткань, и у меня есть это сообщение!
thiagolr
3
Отключение плагина io.fabric уменьшило 8 из этих предупреждений до 4. Так что, похоже, существует более одного источника.
Марио
4
com.google.gms:google-services 4.0.1И 4.0.2оба вызывают это предупреждение.
Мартин Цайтлер,