RegisterResGeneratingTask застарілий, використовуйте registerGeneratedFolders (FileCollection)


158

Використання нової андроїд-студії з новим 3.0.0 Gradle pluging.
Під час будівництва траплялося якесь попередження:

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)

1
чи можете ви показати свої задачі з граду? у вас APK розпадається?
itzhar

покажіть, будь ласка, свій Gradle
Jéwôm '13

Ви бачили цю статтю, яка описує точну проблему (відома проблема) та вирішення проблеми? (Перший хіт в Google.)
ashleedawg

@ashleedawg, що мені робити? оновити андроїд-студію? чи деякі бібліотеки?
Валентин Баришев

4
@ashleedawg вирішення, яке ви згадуєте, полягає в тому, щоб, якщо я неправильно його зрозумів, залишитися зі старшою версією плагіну gradle. Це не спосіб впоратися з депресією в довгостроковій перспективі. Зрештою, попередження можна <s> ігнорувати </s> запам'ятати, але не потрібно негайних дій.
Алекс Кон

Відповіді:


46

З того, що я можу сказати, плагіни, додані як залежність класу, будуть створювати проблеми. Тобто Firebase мала проблему з цим. Ложка і тремтіння також. Здійснення цього пошуку в 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 3.0.0.

Вся справа охоплюється документами розробника , але ось деякі речі, які я думаю, є релевантними на основі запитів на виклики, зроблених для проектів, де це була проблема:

Окрім оновлення версії Gradle та плагіна, вам також потрібно додати google()репо в розділі repositories.

compileв даний час implementationабо api, але implementationє рекомендованим.

providedє compileOnlyі apkєruntimeOnly

androidTestCompileстав androidTestImplementation, і testCompile->testImplementation

Якщо ви використовуєте ароматизатори, ви повинні використовувати розміри смаку (охоплені документами).

Для типів збірки потрібно включити резервні копії, якщо є бібліотека, яка не має такого типу збірки. Вони визначені в profileблоці під androidблоком.

Якщо цього ще не зроблено, спочатку слід визначити плагін gradle. Якщо у вас немає інших залежностей від класового шляху, це не проблема. Але якщо ви це зробите, переконайтеся, що спочатку визначено плагін gradle.

Якщо ви користуєтесь testVariants, переконайтеся, що ви не дзвонили testedVariantна уроці. Схоже, це причина в бібліотеці "Ложка".

Ці речі - це, з чого я зміг розповісти, деякі зміни, які були внесені для вирішення проблеми.


Але я не в змозі налагодити рядок коду, він показує помилку
Абхінав Гупта

Збій: збій не вдався за винятком. * Що пішло не так: Не вдалося виконати завдання ": app: compileDebugJavaWithJavac". > Компіляція не вдалася; див. інформацію про помилку компілятора. * Спробуйте: запустіть з --stacktrace опцією, щоб отримати слід стека. Запустіть параметр --info або --debug, щоб отримати більше журналу. Запустіть з --scan, щоб отримати повну інформацію. * Отримати додаткову допомогу на help.gradle.org БУДІВ НЕВЕРШЕНО в 4-х 29 Діяльних завданнях: 2 виконано, 27 оновлено
Абхінав Гупта

@AbhinavGupta - це не стек-трек. Ось лише повідомлення про те, що щось пішло не так
Зої,

але я не в змозі вирішити це і причину цього, я не в змозі встановити apk на своєму пристрої
Абхінав Гупта

@AbhinavGupta тому задайте нове запитання щодо переповнення стека
Zoe

17

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

У вихідному коді ми бачимо, що: введіть тут опис зображення

Тож для мене це було причиною моїх попереджень і його неможливо вийняти, поки плагін не виправиться. Питання тут

Як згадував @Zoe, це також може надходити з інших плагінів Gradle.

Найкраще



10

Оновлення до останньої версії плагіна Fabric Gradle виправляє цю проблему.

З журналу змін:

  • Виправлено попередження про депрекацію "registerResGeneratingTask".

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


Що це все-таки? Чи варто оновити? Чи викликає це проблеми (до та після оновлення)? Ми використовуємо v2.6.8 і тепер у них є v2.9.3, але я не бачу, як на це дивитися в журналі змін. У них є різні версії (наприклад, "1.4.2 24 травня 2018 року")
андроїд розробник

@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 зі своєї системи, і зараз все добре


0

Усі інші відповіді стосуються проблем із сторонніми компонентами .

Ось як оновити свій проект , який використовує registerResGeneratingTaskбезпосередньо:

Перед:

variant.registerResGeneratingTask generateIcon, ICON_DIR

Після:

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

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

Для мене це попередження зникло, коли я вимкнув плагін тканини gradle, o, будь ласка, перевірте, чи використовуєте ви тканину чи інший плагін, який я відповідав за це попередження.


Вилучено тканину, але все ж з’являється це попередження.
Валентин Баришев

Я не використовую тканину, і у мене є це повідомлення!
тіагольр

3
Якщо вимкнути плагін io.fabric, зменшилось 8 цих попереджень до 4. Отже, схоже, існує більше одного джерела.
Маріо Хуізінга

4
com.google.gms:google-services 4.0.1& 4.0.2обидва викликають це попередження.
Мартін Цайтлер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.