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


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


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.


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


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


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


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


"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')

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.


2

Ersetzen Sie Ihre implementationdurch classpath. Das sollte funktionieren.


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.


Dies löste das Problem für mich.
Mateus Felipe
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.