124 votes

Gradle - Erreur Impossible de trouver la méthode implementation() pour les arguments [com.Android.support:appcompat-v7:26.0.0].

J'essaye d'ouvrir un projet Android existant dans Android studio et gradle ne peut pas construire l'application sans erreur.

Erreur qu'Android studio continue d'envoyer

Error:(74, 1) A problem occurred evaluating project ':app'.
> Could not find method implementation() for arguments 
[com.android.support:appcompat-v7:26.0.0] on object of type 
org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

Mon code dans build.gradle Ce qui peut aider à comprendre mon problème Mes dépendances

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')

// google & support
implementation "com.android.support:appcompat-v7:$supportVersion"
implementation "com.android.support:cardview-v7:$supportVersion"
implementation "com.android.support:recyclerview-v7:$supportVersion"
implementation "com.android.support:design:$supportVersion"
implementation "com.android.support:palette-v7:$supportVersion"
implementation "com.android.support:customtabs:$supportVersion"
implementation "com.android.support:support-v4:$supportVersion"
implementation 'com.google.android.exoplayer:exoplayer:r2.0.4'

// utils
implementation 'com.github.bumptech.glide:glide:4.0.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
implementation 'com.koushikdutta.ion:ion:2.1.7'
implementation 'com.github.Commit451:bypasses:1.0.4'
implementation 'com.jakewharton:butterknife:8.8.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.0'
implementation 'com.drewnoakes:metadata-extractor:2.9.1'
implementation "com.orhanobut:hawk:2.0.1"

}

Veuillez aider à résoudre ce problème

6 votes

Utilisez-vous Android Studio 3.0 ?

1 votes

Je suis nouveau sur Android. Mais oui, j'ai mis à jour en 3.0 car l'erreur précédente s'en plaignait.

3 votes

Nope Android studio 2.3.3

94voto

Saurabh Thorat Points 3436

Remplacer compile con implementation .

compile a été récemment déprécié et remplacé par implementation o api

64 votes

Le titre dit "Impossible de trouver la méthode implementation()", donc utiliser "implementation" au lieu de "compile" n'aidera pas (à moins que le message d'erreur soit complètement faux).

10 votes

J'utilise déjà "implementation" pour un module ivy qui est présent dans notre dépôt Artifactory. La réponse ne m'aide pas

4 votes

Le fait avec déprécation est correct mais ne conduit PAS au message d'erreur affiché dans l'en-tête. Consultez la réponse de Sunil Kumar : vous éditez le mauvais fichier. Si cela est confirmé, veuillez rétrograder cette réponse car elle est trompeuse. TY

59voto

krishna murthy Points 461

Assurez-vous que votre version de Gradle est 3.*.* ou plus avant d'utiliser "mise en œuvre".

Ouvrez le fichier Gradle au niveau du projet sous les dépendances :

dependencies{
    classpath 'com.android.tools.build:gradle:3.1.2'
}

Ouvrez le fichier 'gradle-wrapper.properties' et définissez les paramètres suivants distributionUrl :

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

ou la dernière version.

Synchronisez le projet. J'espère que cela résout votre problème.

0 votes

J'utilise une version inférieure à 3.*.* et l'utilisation de 'classpath' entraîne toujours la même erreur. J'ai utilisé 'compile' à la place. Merci pour cette réponse concernant la version.

27voto

donfuxx Points 4778

Vous devez utiliser au moins Gradle 3.4 ou plus récent pour pouvoir utiliser implementation . Il n'est pas recommandé de continuer à utiliser la méthode dépréciée compile car cela peut entraîner des délais de construction plus longs. Pour plus de détails, consultez le guide officiel du développeur Android :

Lorsque votre module configure une dépendance d'implémentation, il fait savoir à Gradle que le module ne veut pas divulguer la dépendance aux autres modules au moment de la compilation. En d'autres termes, la dépendance n'est disponible pour les autres modules qu'au moment de l'exécution. L'utilisation de cette configuration de dépendance à la place de api ou compile peut améliorer considérablement le temps de construction, car elle réduit le nombre de projets que le système de construction doit recompiler. Par exemple, si une dépendance d'implémentation modifie son API, Gradle ne recompile que cette dépendance et les modules qui en dépendent directement. La plupart des modules d'application et de test devraient utiliser cette configuration.

https://developer.Android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations

Mise à jour : compile sera supprimé d'ici la fin de l'année 2018, alors assurez-vous d'utiliser seulement implementation maintenant :

Avertissement : La configuration 'compile' est obsolète et a été remplacée par "implémentation". Elle sera supprimée à la fin de l'année 2018

2 votes

Je suis déjà sur Gradle 4.4, mais j'ai toujours ce problème soudainement.

1 votes

Et quelle est votre version de gradle plugin ? @InfiniteLoops

0 votes

La version des plugins est 171.4249.39. tools.build:la version de Gradle est 3.0.1

14voto

xiqing lau Points 46

Changer appliquer plugin : java pour appliquer le plugin : java-library'.

java-library-plugin

1 votes

Bien que la réponse acceptée semble être la plus populaire, elle n'est pas la seule réponse correcte. Dans mon cas, c'était l'absence de l'option "apply plugin : 'java-library' qui a entraîné exactement la même exception (objet différent, bien sûr). Donc, merci à @xiqing-lau d'avoir ajouté cette solution possible.

1 votes

Voici ce qui m'a aidé avec Gradle 7.2

3voto

Saurabh kumar Points 11

Votre code

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

Remplacez-le par

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')

0 votes

Merci ! C'est la seule suggestion qui a réellement fonctionné pour moi. J'utilisais compiler et le projet se compilait effectivement, mais les classes du RAA n'étaient pas disponibles au moment de l'exécution dans l'application. Cette forme d'implémentation a résolu les deux problèmes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X