Toujours recevoir un avertissement: la configuration «compiler» est obsolète et a été remplacée par «implémentation»

332

J'ai remplacé chaque occurrence de compileby implementationdans mon projet build.gradle, mais je reçois toujours cet avertissement:

entrez la description de l'image ici

J'ai essayé de rechercher «compiler» dans l'ensemble du projet, mais aucune correspondance n'a été trouvée. Alors, quelle pourrait être la cause?

Rob
la source
Utilisez-vous toujours une bibliothèque locale qui utilise «compiler»?
Devsil
@Devsil peut-être ... mais comment savoir lequel? J'ai essayé une recherche dans Path dans tout le projet mais je n'ai trouvé aucune occurrence de compile..
Rob
2
Si vous utilisez une bibliothèque locale, vous verrez son fichier gradle.build situé dans la visionneuse de projet sur le côté droit de votre fenêtre Android Studio. Dans ce fichier build.gradle, il peut contenir une "compilation" par opposition à l'implémentation. Si un fichier build.gradle que vous voyez là-bas ne le contient pas. Il peut s'agir d'une bibliothèque que vous utilisez qui n'est pas locale, ce qui ne vous permet pas de modifier cela. Cet avertissement peut donc être ignoré pour l'instant.
Devsil
1
Gradle devrait donner le numéro de ligne où le problème se produit
Yetti99
essayez-le: stackoverflow.com/questions/48623244/… et pour Failed to resolve: android.arch.persistence.room:runtime:1.1.1 Open File Show in Project Structure dialogessayer de changer de version pour1.0.0
Saeid

Réponses:

496

J'ai mis com.google.gms:google-servicesà jour de 3.1.1à 3.2.0et l'avertissement a cessé d'apparaître.

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files

    classpath 'com.google.gms:google-services:3.2.0'
    }
}
Jkrevis
la source
1
La configuration «compiler» est obsolète et a été remplacée par «implémentation». Il sera supprimé à la fin de 2018 Pour être clair, je n'utilise aucune dépendance de service google {classpath 'com.android.tools.build:gradle:3.1.0'}
Amit_android
J'obtiens "Impossible de trouver com.google.gms: google-services: 3.2.0." quand j'essaye. Mise à jour: le changer a déclenché manuellement un avertissement de peluches lorsque je l'ai changé en 3.1.1, puis Alt + Entrée pour appliquer le correctif l'a changé automatiquement en com.google.gms: google-services: 3.2.0 sans erreur de synchronisation. Je ne sais pas quelle était la différence, mais c'est frustrant.
jwehrle
D'accord, je crois que je comprends la différence. J'ai changé le chemin de classe du projet et du module build.gradle gms en version 3.2.0. C'est le changement de module qui a causé le problème. Modifiez uniquement la version du chemin de classe Project build.gradle gms.
jwehrle
Il me manquait aussi repo jcenter ()! Le projet était très ancien et n'avait pas ce repo inclus!
Yani2000
Voulez-vous dire que je devrais simplement ajouter cette ligne manuellement au fichier?
hellogoodnight
125

J'ai un même avertissement causé à com.google.gms: google-services.

La solution consiste à mettre à niveau classpath com.google.gms: google-services vers classpath 'com.google.gms: google-services: 3.2.0' dans le fichier de build.gradle Projet:

entrez la description de l'image ici

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.2.0'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Dans Android Studio, les dépendances verion 3.1 complie word sont remplacées par l'implémentation

dépendances avec avertissement dans android studio 3.1

dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            compile 'com.android.support:appcompat-v7:27.1.0'
            compile 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }

dépendances OK dans android studio 3.1

    dependencies {
            implementation fileTree(dir: 'libs', include: ['*.jar'])
            implementation 'com.android.support:appcompat-v7:27.1.0'
            implementation 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    }

Gradel génère par Android Studio 3.1 pour un nouveau projet.

Gradel génère par Android Studio 3.1 pour un nouveau projet.

Visitez https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html

Pour plus de détails https://docs.gradle.org/current/userguide/declaring_dependencies.html

Didier
la source
Notez que "testCompile" devient "testImplementation".
AJW
la plupart des réponses, et la plus populaire également, se concentrent toutes sur com.google.gms: google-services mais il s'agit de mettre à jour l'ancien style de nommage dans les deux fichiers de
notes
32

J'ai mis à jour com.google.gms: google-services de 3.2.0 à 3.2.1 et l'avertissement a cessé d'apparaître.

 buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath 'com.google.gms:google-services:3.2.1'

    }
}
Prateek218
la source
vous avez juste besoin de changer la version comme j'ai "Com.google.gms: google-services: 3.2.0", vous devez simplement remplacer 3.2.0 par 3.2.1.
Prateek218
Merci, j'avais mis à jour la mauvaise classe, c'est pourquoi j'ai eu l'erreur.
Jhorra
2
J'ai la version qui classpath 'com.google.gms:google-services:4.1.0'n'est pas la plus mise à jour mais oui, elle est supérieure à 3.2.0. Pas encore de résolution!
sud007
@ sud007 pouvez-vous expliquer un peu quel problème rencontrez-vous ou publier votre build.gradle (niveau projet)
Prateek218
22

L'utilisation de la dernière version actuelle des services google gms l'a résolu pour moi.

Au niveau du projet build.gradle:

buildscript {
    ...
    dependencies {
        classpath 'com.google.gms:google-services:3.2.1'
        ...  
    }
}
Hovanes Mosoyan
la source
18

Ouvrez votre fichier build.gradle situé ici:

entrez la description de l'image ici

C'est l'ancienne façon d'écrire les bibliothèques de dépendances (pour gradle version 2 et ci-dessous):

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile files('libs/volley.jar')
    compile 'com.android.support:support-v4:21.+'
}

C'est la nouvelle façon (à droite) d'importer les dépendances pour gradle version 3:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    implementation files('libs/volley.jar')
    implementation 'com.android.support:support-v4:21.+'
}
Gène
la source
1
Merci mon ami! Cela semble être la réponse la plus à jour ici en janvier 2019
NaturalBornCamper
Cette réponse est utile à ceux qui sont confrontés à ce problème pour la première fois. Bien que OP ait une question différente, qui dit que même après ces modifications, un message d'erreur s'affiche.
sud007
13

Réponse de google: https://issuetracker.google.com/issues/74048134

Il y aurait des dépendances qui utilisent toujours la compilation, vérifiez soigneusement les dépendances de vos applications et les dépendances transitives.

quangkid
la source
1
J'ai supprimé TOUTES les dépendances dans TOUS build.gradles pour mon projet et j'obtiens toujours l'erreur
behelit
3
EDIT: Cela a été causé par le royaume, en utilisant une ancienne version
behelit
7

https://issuetracker.google.com/issues/72479188 indique que les plugins peuvent parfois introduire des dépendances de "compilation" et c'est ce qui déclenche l'avertissement. Il est probablement plus facile de résoudre ce problème et d'attendre qu'il soit corrigé pour signaler les plugins à l'origine du problème.

Eric
la source
6

Pas besoin de supprimer la ligne. Comme Jkrevis l'a écrit, mettez à jour com.google.gms: google-services vers 3.2.0 et cela arrête les avertissements.

À M
la source
1
Avez-vous remplacé chaque occurrence de «compiler» par «implémentation» dans le build.gradle de votre projet (Module: App) et mis à jour com.google.gms: google-services dans build.gradle (Project) vers 3.2.0?
Tom
6

Je rencontre ce problème sans utiliser com.google.gms:google-services. La solution résolvant ce genre de problème comme ci-dessous:

  1. vérifier les build.gradlefichiers de tous les projets et modules. Ou tout simplement le mot clé de recherche globale «compiler» pour trouver la cause de cet avertissement.
  2. si la méthode ci-dessus ne peut pas résoudre cet avertissement, utilisez la commande CLI, ./gradlew assembleDebug -d > gradle.log
    imprimez les informations de débogage détaillées dans un fichier nommé gradle.logou tout autre, car les informations sont trop importantes. Ensuite, recherchez le mot "AVERTISSEMENT" pour trouver la position dans laquelle gradle.logvous pouvez généralement trouver la dépendance ou le plug-in à l'origine de l'avertissement.
zhangliang
la source
2
Je pense que c'est la solution générale. Le problème peut être dû à l'une ou à plusieurs de vos dépendances
Rasmusob
5

Dans mon cas, cela est dû à la bibliothèque Realm, après l'avoir mise à jour vers la dernière version (5.1.0 jusqu'à présent) de Realm, le problème est résolu!

Voici le script gradle de travail:

buildscript {
repositories {
    jcenter()
    google()
}

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath "io.realm:realm-gradle-plugin:5.1.0"
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath 'com.google.gms:google-services:3.2.1'
  }
}
ken
la source
3

La mise à jour de la version du service google n'a pas fonctionné pour moi.

  • Assurez-vous d'abord que toutes vos dépendances compilesont remplacées par implementation.
  • Mettez à jour toutes les dépendances de votre projet. Parce que si l'une de vos dépendances a, compilevotre projet affichera cette erreur. Mettez donc à jour toutes les versions des dépendances.
Khemraj
la source
2

allez dans votre fichier build.gradle au niveau du projet, vous trouverez les lignes suivantes en surbrillance

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.4'  //place your cursor over here 
    //and hit alt+enter and it will show you the appropriate version to select


    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files

    classpath 'com.google.gms:google-services:4.0.2' //the same as previously
}
RABI Hamza
la source
2

Dans mon cas, c'était une ancienne dépendance qui utilisait la compilation pour les dépendances transitives: com.jakewharton.hugo

Après l'avoir retiré de mon gradle, il a compilé.

PerrierCitror
la source
1

La solution de contournement pour résoudre ce problème était pour moi que j'utilisais une ancienne version de Gradle, qui peut être trouvée ici :

J'ai utilisé la version gradle-3.0-rc-1-src, mais d'autres peuvent également fonctionner, même si elle ne devrait probablement pas être plus récente que la version 3.0.

Extrayez d'abord le fichier zip où vous le souhaitez.

Ensuite, allez dans Fichier -> Paramètres -> Build, Execution, Deployment -> Gradle et changez le paramètre pour Utiliser la distribution locale des gradles. Après cela, assurez-vous que le champ Gradle Home pointe vers le répertoire .gradle dans le répertoire que vous venez de décompresser.

Reconstruisez le projet et tout devrait bien se passer.

tpn
la source
0

J'ai essayé de changer les services google gms pour les derniers com.google.gms:google-services:3.2.1dans Android Studio 3.0.1 mais l'avertissement persiste toujours.

Comme recommandé par le compilateur, j'ai changé toutes les compiledépendances en implementationet testCompilepour testImplementationaimer ça ..

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:mediarouter-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.google.firebase:firebase-ads:12.0.1'
implementation 'com.google.firebase:firebase-crash:12.0.1'
implementation 'com.google.firebase:firebase-core:12.0.1'
implementation 'com.google.firebase:firebase-messaging:12.0.1'
implementation 'com.google.firebase:firebase-perf:12.0.1'
implementation 'com.google.firebase:firebase-appindexing:12.0.1'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

Et enfin l'avertissement est supprimé!

Haileapp
la source
0

Vous pouvez faire ces deux options:

  1. Ajoutez classpath 'com.google.gms: google-services: 3.2.0' dans votre projet: dépendances build.gradle et
  2. Remplacez votre module: build.gradle en dépendance de complile avec l'implémentation et vous n'obtiendrez aucun message d'avertissement.
Jasbin Karki
la source
0

Ajoutez simplement à partir build.gradledebuild script

classpath 'com.google.gms:google-services:3.2.0'

et toutes les dépendances se "compile"remplacent par "implementation".

qui a fonctionné de moi.

Omae wa mou shindairu
la source
Notez que si vous utilisez, classpathvous devez l'utiliser dans un buildscriptbloc; de plus, on ne peut pas utiliser à l' implementationintérieur d'un buildscriptbloc.
ChumiestBucket
0

La version actuelle est 4.2.0 :

buildscript {

repositories {
    google()
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.4.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath 'com.google.gms:google-services:4.2.0'
}

}

Frank Eno
la source
0

Pour moi, changer la compilation en implémentation l'a corrigé

Avant

compile 'androidx.recyclerview:recyclerview:1.0.0'
compile 'androidx.cardview:cardview:1.0.0'
//Retrofit Dependencies
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

Après

implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
//Retrofit Dependencies
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
Jagadesha NH
la source
-2

J'espère que vous êtes affecté par build.gradle (app) Si c'est le cas, suivez cette étape

Remplacez la compilation par androidTestImplementation dans build.gradle

androidTestImplementation 'com.android.support:appcompat-v7:27.1.1'
androidTestImplementation 'com.android.support:design:27.1.1'

si simple ! j'espère que cela résoudra

Thiyagu
la source
-3

Dans mon cas, le problème était le plugin gradle des services Google avec la ligne suivante dans le fichier gradle:

appliquer le plugin: "com.google.gms.google-services"

La suppression de ce problème a résolu le problème.

Ujjwal Singh
la source
-7

allez à vous build.gradle (niveau application)

application du module build.gradle

et remplacer le mot "compiler" par "implémentation"

cela fonctionnera à 100%

Ayoub
la source
6
Cette réponse n'est pas utile. Le PO a déjà déclaré que cela avait été fait, donc cela ne peut pas aider.
NightOwl888
1
j'ai eu le même problème, je n'ai pas pu générer mon application apk bcoz de cela, cette réponse a résolu mon problème
Ayoub
Ce n'est pas la même situation, OP a déjà déclaré qu'il avait fait ça (je suis aussi dans le même bateau), c'est à cause de dépendances
ElliotM
OP a déclaré: "J'ai remplacé chaque occurrence de compilation par implémentation".
mapo