web-dev-qa-db-fra.com

AVERTISSEMENT: L’API 'variant.getJavaCompile ()' est obsolète et a été remplacée par

Soudainement, lors de la synchronisation de Gradle, j'obtiens cette erreur:

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
Affected Modules: app

J'ai ce build.gradle pour le module d'application:

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'

    [...]
}

Je peux compiler correctement l'application, mais c'est un peu gênant et, à mon avis, quelque chose ne fonctionnera plus fin 2019. Avez-vous une idée de ce que c'est et de la façon de le résoudre?

66
Arnyminer Z

Ceci est juste un avertissement et il sera probablement corrigé avant 2019 avec les mises à jour de plugins, alors ne vous inquiétez pas. Je vous recommanderais d'utiliser des versions compatibles de vos plugins et gradle.

Vous pouvez vérifier votre version de plugin et votre version ici pour une meilleure expérience et de meilleures performances.

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

Essayez d’utiliser les versions stables pour obtenir un code lisse, sans avertissement ni erreur.

25
Harshil Shah

Dans mon cas, cela provient de gms services 4.3.0. J'ai donc dû le changer pour:

com.google.gms:google-services:4.2.0

J'ai trouvé ceci en exécutant:

gradlew sync -Pandroid.debug.obsoleteApi=true

dans le terminal. Allez voir -> fenêtres d’outils -> Terminal dans Android Studio.

56
Numan Karaaslan

J'ai également fait face au même problème. Et après avoir cherché pendant un moment, je me suis rendu compte que l'avertissement était survenu à cause de l'utilisation de la dernière version du plugin google-services (version 4.3.0). J'utilisais ce plugin pour les fonctionnalités de Firebase dans mon application. Je n'ai fait que rétrograder mon plug-in google-services dans le script de construction du fichier de niveau build.gradle (Projet) comme suit:

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

Je fais face à ce problème après la mise à jour vers la version 3.3.0

Si vous ne faites pas quels états d'erreur dans le fichier gradle, c'est un plugin qui n'a toujours pas été mis à jour vers la nouvelle API qui en est la cause. Pour déterminer le plugin utilisé, procédez comme suit (comme expliqué dans "Meilleures informations de débogage lors de l'utilisation d'une API obsolète" de 3.3.0 annonce ):

  • Ajoutez 'Android.debug.obsoleteApi = true' à votre fichier gradle.properties, qui enregistrera l'erreur avec plus de détails.
  • Réessayez et lisez les détails du journal. Il y aura une trace de plugin "problématique"
  • Lorsque vous vous identifiez, essayez de le désactiver et de voir si le problème a disparu, juste pour être sûr
  • allez à la page github du plugin et créez un problème qui contiendra un journal détaillé et une description claire, afin d'aider les développeurs à résoudre ce problème plus rapidement pour tout le monde
  • soyez patient pendant qu'ils le corrigent, ou vous le corrigez et créez le PR pour des devs

J'espère que ça aide les autres

20
Ewoks

Ce problème est résolu maintenant avec la mise à jour de Fabric Gradle version 1.28.0:

Mise à jour: 19 mars 2019

S'il vous plaît voir ce lien: https://docs.fabric.io/Android/changelog.html#march-15-2019

Veuillez mettre à jour la dépendance de votre chemin de classe au niveau du projet.

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

    dependencies {
        // ...other dependencies ...
        classpath 'io.fabric.tools:gradle:1.28.0'
    }
}
13
M.Noman

Changez la version de vos services Google à partir de votre build.gradle:

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

Ceci est un avertissement lancé par les outils de construction pour deux raisons.
1. Un des plugins s'appuie sur Task au lieu de TaskProvider, il n'y a rien que nous puissions faire.
2. Vous avez configuré l'utilisation de la tâche, où elle prend en charge 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

Recherchez les extraits comme ci-dessous et mettez-les à jour.

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

De même, trouvez les utilisations de 'variant.getJavaCompile()' ou 'variant.javaCompile', 'variant.getMergeResources()' ou 'variant.mergeResources'. Remplacez comme ci-dessus.

Plus d'informations sur Eviter la configuration de tâches

5
VenomVendor

Retournez du chemin de classe 'com.Android.tools.build:gradle:3.3.0-alpha13' au chemin de classe 'com.Android.tools.build:gradle:3.2.0'

cela a fonctionné pour moi

Migrez votre projet vers androidX.

les dépendances sont mises à niveau vers androidX. donc si vous voulez utiliser le contenu androidX migrez votre projet vers androidX.

Avec Android Studio 3.2 et versions ultérieures, vous pouvez migrer rapidement un projet existant pour utiliser AndroidX en sélectionnant Refactor> Migrer vers AndroidX dans la barre de menus.

La réduction des dépendances peut résoudre votre problème cette fois-ci - mais n'est pas recommandée

2
Adarsh Vijayan P

Dans mon cas, je devais commenter le plugin com.google.firebase.firebase-crash:

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

C'est un bug depuis Android Studio 3.3.0

2
Anggrayudi H

Mise à jour du grade à classement: 3.3.0  

La tâche d'assemblage par défaut ne s'applique qu'aux variantes normales. Ajoutez également des variantes de test.

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

aussi comment appliquer tissu

//apply plugin: 'io.fabric'
2
Krste Moskov

Mise à niveau le Kotlin ( Plugin et stdLib ) version en 1.3.1 a résolu cet avertissement dans mon cas. Mettez à jour la version de Kotlin dans l'ensemble du projet en remplaçant la version existante de Kotlin par: 

ext.kotlin_version = '1.3.1'
1
erluxman

si je supprime cette matière première du grade d’application:

apply plugin: 'io.fabric'

erreur n'apparaîtra pas Lien de référence github

1
Java coder

Cela a résolu mon problème. Tout ce que je devais faire était de rétrograder mon plug-in google-services dans un buildscript dans le fichier de niveau build.gradle (Projet) comme suit

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'
    }
}
1
ali sampson

Lorsque le plug-in détecte que vous utilisez une API qui n'est plus prise en charge, il peut désormais fournir des informations plus détaillées pour vous aider à déterminer où cette API est utilisée. Pour afficher les informations supplémentaires, vous devez inclure les éléments suivants dans le fichier gradle.properties de votre projet:

Android.debug.obsoleteApi=true
1
user8534182

Mettez à jour le plug-in de la matrice vers le dernier fichier de niveau de projet (pas au niveau de l'application). Dans mon cas, cette ligne a résolu le problème

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

à

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

1) Ajoutez Android.debug.obsoleteApi=true à votre gradle.properties. Il vous montrera quels modules sont affectés par votre journal d'avertissement.

2) Mettez à jour ces fonctions obsolètes.

  • variant.javaCompile à variant.javaCompileProvider

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

1
Morgan Koh

Voici une solution temporaire, si vous utilisez room, passez à la version 1.1.0 ou supérieure.

implementation "Android.Arch.persistence.room:runtime:1.1.0"

cela supprime cet avertissement pour moi.

0
Sergio KS

C'est une question populaire. Si vous n'utilisez pas ces méthodes, la solution met à jour les bibliothèques. Veuillez mettre à jour votre version kotlin, et toutes vos dépendances telles que fabric, protobuf etc. Si vous êtes sûr d'avoir tout mis à jour, essayez de demander au auteur de la bibliothèque.

0
monyag

gardez vous Project (pas app) Build.gradle dependncies le code de version de chemin de classe est nouveau

 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
}
0
Ven Ren

Dans mon cas 

build.gradle(Project)

était 

ext.kotlin_version = '1.2.71'

mis à jour pour

ext.kotlin_version = '1.3.0'

semble problème est parti pour l'instant

0
Sam

Rétrograder la version de Gradle a fonctionné pour moi: 

classpath 'com.Android.tools.build:gradle:3.2.0'
0
Naimish Verma