ПРЕДУПРЕЖДЕНИЕ: API 'variant.getJavaCompile()' устарел и был заменен на 'variant.getJavaCompileProvider()'

Внезапно при синхронизации Gradle я получаю эту ошибку:

ВНИМАНИЕ: API 'option.getJavaCompile()' устарел и был заменен на "variable.getJavaCompileProvider()".     Он будет удален в конце 2019 года.     Для получения дополнительной информации см. https://d.android.com/r/tools/task-configuration-avoidance    Затронутые модули: приложение

У меня есть этот build.gradle для модуля приложения:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'

apply plugin: 'io.fabric'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.2"
    defaultConfig {
        applicationId "..."
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "..."
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        versionNameSuffix = version_suffix

        [...]
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

            [...]
        }
        debug {
            [...]
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.61"
    implementation 'androidx.appcompat:appcompat:1.0.0-rc02'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation "com.android.support:preference-v7:28.0.0"
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
    implementation 'com.google.android.material:material:1.0.0-rc02'

    [...]
}

Я могу правильно скомпилировать приложение, но это немного напрягает, и, как я вижу, что-то перестанет работать в конце 2019 года. Есть идеи, что это такое и как это решить?

Ответы

Ответ 1

Эта проблема исправлена с обновлением Fabric Gradle версии 1.30.0:

Обновление: 19 марта 2019 г.

Пожалуйста, смотрите эту ссылку: https://docs.fabric.io/android/changelog.html#march-15-2019

Обновите свою зависимость от пути к классам на уровне проекта Gradle:

buildscript {
    // ... repositories, etc. ...

    dependencies {
        // ...other dependencies ...
        classpath 'io.fabric.tools:gradle:1.30.0'
    }
}

Ответ 2

Я сталкиваюсь с этой проблемой после обновления до 3.3.0

Если вы не делаете, какие состояния ошибки в файле Gradle, это какой-то плагин, который все еще не обновился до более нового API, который вызывает это. Чтобы выяснить, какой плагин это, сделайте следующее (как объяснено в "Лучшей отладочной информации при использовании устаревшего API" объявления 3.3.0):

  • Добавьте 'android.debug.obsoleteApi = true' в файл gradle.properties, в котором будет регистрироваться ошибка с более подробной информацией.
  • Попробуйте еще раз и прочитайте подробности журнала. Там будет след "проблемного" плагина
  • Когда вы идентифицируете, попробуйте отключить его и посмотреть, если проблема исчезла, просто чтобы быть уверенным
  • перейдите на страницу плагина github и создайте проблему, которая будет содержать подробный журнал и четкое описание, чтобы вы помогли разработчикам исправить это для всех быстрее
  • будьте терпеливы, пока они это исправляют, или вы исправляете это и создаете PR для разработчиков

Надеюсь, что это помогает другим

Ответ 3

В моем случае это было вызвано из gms services 4.3.0. Поэтому я должен был изменить его на:

com.google.gms:google-services:4.2.0

Я нашел это, запустив:

gradlew sync -Pandroid.debug.obsoleteApi=true

в терминале. Перейти к просмотру → окна инструментов → Терминал в Android Studio.

Ответ 4

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

Вы можете проверить версию своего плагина и версию градиента здесь для лучшего опыта и производительности.

https://developer.android.com/studio/releases/gradle-plugin

Попробуйте использовать стабильные версии для плавного и предупреждающего/безошибочного кода.

Ответ 5

Я также столкнулся с той же проблемой. И после некоторого поиска я понял, что предупреждение возникает из-за использования последней версии плагина google-services (версия 4.3.0). Кстати, я использовал этот плагин для функциональности Firebase в моем приложении. Все, что я сделал, это понизил мой плагин google-services в buildscript в файле уровня build.gradle(Project) следующим образом:

buildscript{
    dependencies {
       // From =>
       classpath 'com.google.gms:google-services:4.3.0'
       // To =>
       classpath 'com.google.gms:google-services:4.2.0'
    }
}

Ответ 6

Измените версию Служб Google на свой build.gradle:

dependencies {
  classpath 'com.google.gms:google-services:4.2.0'
}

Ответ 7

Это предупреждение выдается инструментами сборки по двум причинам.
1. Один из плагинов полагается на Task вместо TaskProvider, мы ничего не можем сделать.
2. Вы настроили использование задачи, где она поддерживает TaskProvider.

WARNING: API 'variant.getGenerateBuildConfig()' is obsolete and has been replaced with 'variant.getGenerateBuildConfigProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance

WARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance

WARNING: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance

Следите за фрагментами, как показано ниже & обновление.

android {
    <library|application>Variants.all { variant ->
        /* Disable Generating Build config */
        // variant.generateBuildConfig.enabled = true // <- Deprecated
        variant.generateBuildConfigProvider.configure {
            it.enabled = true // Replacement
        }
    }
}

Аналогично, найдите варианты использования 'variant.getJavaCompile()' или 'variant.javaCompile', 'variant.getMergeResources()' или 'variant.mergeResources'. Замените, как указано выше.

Более подробная информация на Избегание конфигурации задач

Ответ 8

Вернитесь из classpath 'com.android.tools.build:gradle:3.3.0-alpha13' в classpath 'com.android.tools.build:gradle:3.2.0'

это сработало для меня

Ответ 9

если я удалю эту строку из application gradle:

apply plugin: 'io.fabric'

ошибка больше не будет появляться

Ссылка на ссылку github

Ответ 10

Обновите плагин Fabric до последней версии в файле Gradle уровня проекта (не на уровне приложения). В моем случае эта линия решила проблему

classpath 'io.fabric.tools:gradle:1.25.4'

в

classpath 'io.fabric.tools:gradle:1.29.0'

Ответ 11

1) Добавьте android.debug.obsoleteApi=true к вашему gradle.properties. Он покажет вам, на какие модули влияет ваш журнал предупреждений.

2) Обновите эти устаревшие функции.

  • variant.javaCompile - variant.javaCompileProvider

  • variant.javaCompile.destinationDir в variant.javaCompileProvider.get().destinationDir

Ответ 12

Обновление версии Kotlin (Plugin и stdLib) до 1.3.1 устранило это предупреждение в моем случае. Обновите версию Kotlin во всем проекте, заменив существующую версию Kotlin на:

ext.kotlin_version = '1.3.1'

Ответ 13

Обновление gradle в gradle: 3.3.0

Задание по умолчанию "сборка" применяется только к обычным вариантам. Добавьте также тестовые варианты.

android.testVariants.all { variant ->
    tasks.getByName('assemble').dependsOn variant.getAssembleProvider()
}

также комментарий применить ткань

//apply plugin: 'io.fabric'

Ответ 14

В моем случае мне пришлось закомментировать плагин com.google.firebase.firebase-crash:

apply plugin: 'com.android.application'
// apply plugin: 'com.google.firebase.firebase-crash' <== this plugin causes the error

Это ошибка с Android Studio 3.3.0

Ответ 15

Когда плагин обнаруживает, что вы используете API, который больше не поддерживается, он теперь может предоставить более подробную информацию, чтобы помочь вам определить, где этот API используется. Чтобы увидеть дополнительную информацию, вам нужно включить в файл проекта gradle.properties следующее:

android.debug.obsoleteApi=true

Ответ 16

Понижение версии Gradle работало для меня:

classpath 'com.android.tools.build:gradle:3.2.0'

Ответ 17

В моем случае

build.gradle(Project)

было

ext.kotlin_version = '1.2.71'

обновлено до

ext.kotlin_version = '1.3.0'

выглядит проблема ушла на данный момент

Ответ 18

Migrate your project to androidX.

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

В Android Studio 3.2 и более поздних версиях вы можете быстро перенести существующий проект для использования AndroidX, выбрав "Рефакторинг"> "Перенос в AndroidX" в строке меню.

Понижение зависимостей может исправить вашу проблему на этот раз, но не рекомендуется

Ответ 19

Это решило мою проблему. Все, что мне нужно было сделать, - это понизить мой плагин google-services в buildscript в файле уровня build.gradle(Project) следующим образом

buildscript{
     dependencies {
        // From =>
        classpath 'com.google.gms:google-services:4.3.0'
        // To =>
        classpath 'com.google.gms:google-services:4.2.0'
        // Add dependency
        classpath 'io.fabric.tools:gradle:1.28.1'
    }
}

Ответ 20

Здесь временный обходной путь, если вы используете комнату, просто обновитесь до 1.1.0 или выше

implementation "android.arch.persistence.room:runtime:1.1.0"

это удаляет это предупреждение для меня.

Ответ 21

Проблема связана с библиотекой, связанной с Fabric io, специально для этого apply plugin: 'io.fabric'. Я уже связался с ними через их страницу в Твиттере и надеюсь на исправление.

Ответ 22

С инструментами gradle 3.3.0 и gradle 4.10.1 я столкнулся с ошибкой компиляции:

API 'variant.getGenerateBuildConfig()' is obsolete and has been replaced with 'variant.getGenerateBuildConfigProvider()'. 
It will be removed at the end of 2019

с:

ext.kotlin_version = '1.3.11'
ext.fabric_crashlytics_version = '2.9.8'
ext.fabric_tools_version = '1.+'

отключение ткани помогло:

//apply plugin: 'io.fabric'

Есть ли способ временно отключить предупреждение API 'variant.getGenerateBuildConfig()?

Ответ 23

Это исправит ошибку: На панели задач нажмите Tools-> Kotlin-> Настроить Kotlin в Project.

Ответ 24

держать вас в проекте (не в приложении) Build.gradle зависимости от класса путь к версии новый

 dependencies {
    classpath 'com.android.tools.build:gradle:3.5.0-beta01'
    classpath 'com.novoda:bintray-release:0.8.1'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

Ответ 25

Это популярный вопрос. Если вы не используете эти методы, решением будет обновление библиотек. Пожалуйста, обновите вашу версию kotlin и все ваши зависимости, такие как fabric, protobuf и т.д. Если вы уверены, что обновили все, попробуйте обратиться к автору библиотеки.

Ответ 26

Обновление protobuf-gradle-plugin до версии 0.8.10 решило мою проблему. Замените свой существующий protobuf на

classpath 'gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.10'

Ответ 27

Это в основном из-за библиотек, которые устарели. Чтобы проверить наличие новых обновлений вручную, перейдите на

Анализ> "Запустить проверку по имени"

run inspection by name android result

Этого должно быть достаточно. Другой вариант - запустить обновление зависимостей gradle, используя

./gradlew dependencyUpdates

который создаст такой отчет:

:dependencyUpdates

------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------

The following dependencies are using the latest milestone version:
 - com.github.ben-manes:gradle-versions-plugin:0.15.0

The following dependencies have later milestone versions:
 - com.google.auto.value:auto-value [1.4 -> 1.4.1]
 - com.google.errorprone:error_prone_core [2.0.19 -> 2.0.21]
 - com.google.guava:guava [21.0 -> 23.0-rc1]
 - net.ltgt.gradle:gradle-apt-plugin [0.9 -> 0.10]
 - net.ltgt.gradle:gradle-errorprone-plugin [0.0.10 -> 0.0.11]

...