Gradle - Erreur Impossible de trouver l'implémentation de la méthode () pour les arguments [com.android.support:appcompat-v7:26.0.0]


87

J'essaie d'ouvrir un projet Android existant dans le studio Android et il ne peut pas créer l'application sans l'erreur

Error Android Studio continue de lancer

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 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 le problème


5
Utilisez-vous Android Studio 3.0?
Saurabh Thorat

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

1
Nope Android Studio 2.3.3
cole

9
Essayez de remplacer implementationparcompile
Saurabh Thorat

Yup ça marche .. Merci
cole

Réponses:


87

Remplacez implementationpar compile.

compilea été récemment obsolète et remplacé par implementationouapi


17
Le titre dit `` Impossible de trouver l'implémentation de la méthode () '', donc utiliser `` implémentation '' au lieu de `` compiler '' n'aidera pas (sauf si le message d'erreur est complètement faux)
Mario Klebsch

J'utilise déjà "implémentation" pour un module ivy qui est présent dans notre référentiel Artifactory. La réponse n'aide pas
GaVaRaVa

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

42

Assurez-vous que votre version Gradle est 3.*.*ou supérieure avant d'utiliser «implémentation».

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 distributionUrl:

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

ou dernière version.

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


25

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 version obsolète compilecar cela peut ralentir les temps de construction. Pour plus de détails, consultez le guide officiel du développeur Android:

Lorsque votre module configure une dépendance d'implémentation, il informe Gradle que le module ne veut pas divulguer la dépendance à d'autres modules au moment de la compilation. Autrement dit, la dépendance n'est disponible pour les autres modules qu'au moment de l'exécution. L'utilisation de cette configuration de dépendances au lieu de l'API ou de la compilation peut entraîner des améliorations significatives du temps de construction, car elle réduit le nombre de projets dont le système de construction a besoin pour recompiler. Par exemple, si une dépendance d'implémentation modifie son API, Gradle recompile uniquement cette dépendance et les modules qui en dépendent directement. La plupart des modules d'application et de test doivent utiliser cette configuration.

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

Mise à jour: compile sera supprimée d'ici la fin de 2018, alors assurez-vous de n'utiliser que implementationmaintenant:

Attention: la configuration 'compile' est obsolète et a été remplacée par 'implementation'. Il sera supprimé à la fin de 2018


2
Je suis déjà sur Gradle 4.4, j'ai toujours ce problème soudainement.
Infinite Loops du

1
Et quelle est votre version du plugin gradle ? @InfiniteLoops
donfuxx

la version des plugins est 171.4249.39. tools.build: La version de base est 3.0.1
Infinite Loops

Dans Android Studio, si vous créez un nouveau projet à partir de zéro: son fichier gradle utilise implementation- compilet-il ou ? @InfiniteLoops
donfuxx

1
Pour moi, la différence était de quelques millisecondes. Pourquoi jouer avec quelque chose qui n'est pas cassé?
user1608385

20

Assurez-vous d'ajouter ces dépendances dans android / app / build.gradle, et non dans android / build.gradle


2
Confirmé. C'est la bonne réponse. Le message d'erreur décrit ci-dessus s'affiche lors de l'ajout de dépendances au mauvais fichier build.gradle.
FrankKrumnow

@FrankKrumnow Impossible de confirmer car, il pourrait y avoir d'autres raisons également.
Sreekanth Karumanaghat le

2
C'était mon problème, il vaut donc la peine de vérifier que vous ajoutez au bon fichier!
Josh Undefined

Se mettre d'accord. Celui-ci devrait être la bonne réponse. Merci beaucoup!
Mitrakov Artem le

C'était aussi mon problème, après avoir passé 2 jours à essayer de le résoudre. Les dépendances vivaient dans android / build.gradle dans les versions précédentes de Cordova, donc c'était très déroutant pour moi.
SigmaSteve

9

changer appliquer le plugin: 'java' pour appliquer le plugin: 'java-library'

plugin-bibliothèque-java


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

5

Tellement ridicule, mais je veux toujours partager mon expérience au cas où quelqu'un tomberait dans la situation comme moi.

Veuillez vérifier si vous avez changé: compileSdkVersion-> implementationSdkVersionpar erreur


"Par erreur" signifiant que nous ne sommes PAS censés le changer de compileSdk .. à implementationSdk .. n'est-ce pas? Qu'il est censé rester la version compileSdkVersion? --- Quiconque lit ce commentaire, la réponse est - Oui, stackoverflow.com/a/49755251/4132182
ZenVentzi

Ce n'est pas une solution! le passage de la compilation à l'implémentation ne s'applique qu'aux dépendances .
Jorgesys

2

Votre code

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

Remplacez-le par

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

2

Comme mentionné ici, https://stackoverflow.com/a/50941562/2186220 , utilisez le plugin gradle version 3 ou supérieure tout en utilisant 'implementation'.

Utilisez également le google()référentiel dans buildscript.

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

Ces changements devraient résoudre le problème.


2

Remplacez votre implementationpar classpath. Cela devrait fonctionner.


Salut Nander, je ne pense pas que ma réponse soit similaire à celle acceptée. De plus, je n'ai pas travaillé pour moi, c'est pourquoi j'ai publié ce qui fonctionnait et pourrais aussi aider d'autres développeurs.
Edward Mpanza

Salut Edward, désolé, j'ai mal lu. Votre réponse est en effet différente.
Nander Speerstra

1

Je suis passé implementationà build.gradle au niveau du module à partir de build.gradle au niveau racine. Cela résout le problème.


0

Si l'implémentation n'est pas définie, vous écrivez sur un mauvais fichier. Sur Unity 2019+, le fichier correct est main template grandleet non certains des autres.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.