Gradle - Fehler Die Methodenimplementierung () für Argumente konnte nicht gefunden werden [com.android.support:appcompat-v7:26.0.0]

83

Ich versuche, ein vorhandenes Android-Projekt in Android Studio zu öffnen, und es kann die App ohne den Fehler nicht erstellen

Fehler Android Studio wirft weiter

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.

Mein Code in build.gradle Dies kann helfen, mein Problem zu verstehen. Meine Abhängigkeiten

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"

}

Bitte helfen Sie, das Problem zu lösen

cole
quelle
5
Verwenden Sie Android Studio 3.0?
Saurabh Thorat
Ich bin neu bei Android. Aber ja, ich habe auf 3.0 aktualisiert, da sich der vorherige Fehler darüber beschwert hat.
Cole
1
Nope android studio 2.3.3
cole
9
Versuchen Sie, implementationdurchcompile
Saurabh Thorat
Yup es funktioniert .. Danke
Cole

Antworten:

85

Ersetzen implementationdurch compile.

compilewurde vor kurzem veraltet und durch implementationoder ersetztapi

Saurabh Thorat
quelle
16
Der Titel lautet "Methodenimplementierung konnte nicht gefunden werden ()", daher hilft die Verwendung von "Implementierung" anstelle von "Kompilieren" nicht (es sei denn, die Fehlermeldung ist völlig falsch)
Mario Klebsch
Ich verwende bereits "Implementierung" für ein Efeu-Modul, das in unserem Artifactory-Repository vorhanden ist. Die Antwort hilft nicht
GaVaRaVa
Die Tatsache mit Entbehrung ist korrekt, führt jedoch NICHT zu der im Header angezeigten Fehlermeldung. Antwort von Sunil Kumar nachschlagen: Sie bearbeiten die falsche Datei. Wenn dies bestätigt wird, stimmen Sie diese Antwort bitte ab, da sie irreführend ist. TY
FrankKrumnow
39

Stellen Sie sicher, dass Ihre Gradle-Version 3.*.*oder höher ist, bevor Sie "Implementierung" verwenden.

Öffnen Sie die Gradle-Datei auf Projektebene unter Abhängigkeiten:

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

Öffnen Sie die Datei 'gradle-wrapper.properties' und legen Sie Folgendes fest distributionUrl:

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

oder neueste Version.

Synchronisieren Sie das Projekt. Ich hoffe das löst dein Problem.

krishnamurthy
quelle
23

Sie müssen mindestens Gradle 3.4 oder höher verwenden, um verwenden zu können implementation. Es wird nicht empfohlen, die veraltete Version weiterhin zu verwenden, compileda dies zu langsameren Erstellungszeiten führen kann. Weitere Informationen finden Sie im offiziellen Android-Entwicklerhandbuch:

Wenn Ihr Modul eine Implementierungsabhängigkeit konfiguriert, teilt es Gradle mit, dass das Modul die Abhängigkeit beim Kompilieren nicht an andere Module weitergeben möchte. Das heißt, die Abhängigkeit steht anderen Modulen nur zur Laufzeit zur Verfügung. Die Verwendung dieser Abhängigkeitskonfiguration anstelle von API oder Kompilieren kann zu erheblichen Verbesserungen der Erstellungszeit führen, da weniger Projekte erstellt werden müssen, die das Erstellungssystem neu kompilieren muss. Wenn beispielsweise eine Implementierungsabhängigkeit ihre API ändert, kompiliert Gradle nur diese Abhängigkeit und die Module, die direkt davon abhängen. Die meisten App- und Testmodule sollten diese Konfiguration verwenden.

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

Update: compile wird bis Ende 2018 entfernt, stellen Sie also sicher, dass Sie es nur implementationjetzt verwenden:

Warnung: Die Konfiguration 'Kompilieren' ist veraltet und wurde durch 'Implementierung' ersetzt. Es wird Ende 2018 entfernt

donfuxx
quelle
2
Ich bin bereits auf Gradle 4.4 und habe dieses Problem immer noch plötzlich.
unendlichen Schleifen
1
Und was ist deine Version des Gradle- Plugins ? @InfiniteLoops
Donfuxx
Die Plugins-Version ist 171.4249.39. tools.build:Gradle Version ist 3.0.1
unendliche Schleifen
Wenn Sie in Android Studio ein neues Projekt von Grund auf neu erstellen: Verwendet die Gradle-Datei implementationoder compile? @InfiniteLoops
donfuxx
1
Für mich betrug der Unterschied Millisekunden. Warum mit etwas herumspielen, wenn es nicht kaputt ist?
user1608385
14

Stellen Sie sicher, dass Sie diese Abhängigkeiten in android / app / build.gradle und nicht in android / build.gradle hinzufügen

Sunil Kumar
quelle
2
Bestätigt. Dies ist die richtige Antwort. Die oben beschriebene Fehlermeldung wird angezeigt, wenn Abhängigkeiten zur falschen Datei build.gradle hinzugefügt werden.
FrankKrumnow
@FrankKrumnow Kann nicht bestätigt werden, da es auch andere Gründe geben kann.
Sreekanth Karumanaghat
1
Dies war mein Problem, daher lohnt es sich zu überprüfen, ob Sie der richtigen Datei hinzufügen!
Josh Undefined
9

Ändern Sie das Plugin anwenden: 'java', um das Plugin anzuwenden: 'java-library'

Java-Bibliothek-Plugin

xiqing lau
quelle
Obwohl die akzeptierte Antwort die beliebteste zu sein scheint, ist sie nicht die einzig richtige Antwort. In meinem Fall war es das Fehlen des "Apply Plugin: 'Java-Library", das zu genau der gleichen Ausnahme führte (natürlich ein anderes Objekt). Vielen Dank an @ xiqing-lau für das Hinzufügen dieser möglichen Lösung.
Pfurbacher
5

So lächerlich, aber ich möchte trotzdem meine Erfahrungen teilen, falls jemand wie ich in die Situation gerät.

Bitte überprüfen Sie, ob Sie geändert haben: compileSdkVersion-> implementationSdkVersionversehentlich

Nguyen Tan Dat
quelle
"Aus Versehen" bedeutet, dass wir es NICHT von compileSdk .. in ImplementationSdk .. ändern sollen, oder? Dass es die compileSdkVersion bleiben soll? --- Jeder, der diesen Kommentar liest, lautet: - Ja, stackoverflow.com/a/49755251/4132182
ZenVentzi
Dies ist keine Lösung! Das Ändern der Kompilierung in die Implementierung gilt nur für Abhängigkeiten .
Jorgesys
2

Dein Code

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

Ersetzen Sie es durch

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

Wie hier erwähnt, verwenden Sie unter https://stackoverflow.com/a/50941562/2186220 das Gradle-Plugin Version 3 oder höher, während Sie die 'Implementierung' verwenden.

Verwenden Sie auch das google()Repository in buildscript.

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

Diese Änderungen sollten das Problem lösen.

Bot
quelle
2

Ersetzen Sie Ihre implementationdurch classpath. Das sollte funktionieren.

Edward Mpanza
quelle
Hallo Nander, ich glaube nicht, dass meine Antwort der akzeptierten ähnlich ist. Außerdem habe ich nicht für mich gearbeitet, weshalb ich gepostet habe, was funktioniert hat und auch anderen Entwicklern helfen könnte.
Edward Mpanza
Hallo Edward, sorry, ich habe falsch verstanden. Ihre Antwort ist in der Tat anders.
Nander Speerstra
1

Ich implementationbin von build.gradle auf Stammebene zu build.gradle auf Modulebene gewechselt. Es löst das Problem.

user8783065
quelle
Dies löste das Problem für mich.
Mateus Felipe