Gradle - Errore: impossibile trovare l'implementazione del metodo () per gli argomenti [com.android.support:appcompat-v7:26.0.0]


92

Sto cercando di aprire un progetto Android esistente in Android Studio e non è possibile creare l'app senza l'errore

L'errore Android Studio continua a lanciare

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.

Il mio codice in build.gradle Che può aiutare a capire il mio problema Le mie dipendenze

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"

}

Aiutaci a risolvere il problema


5
Utilizzi Android Studio 3.0?
Saurabh Thorat

Sono nuovo su Android. Ma sì, ho aggiornato alla 3.0 perché l'errore precedente si lamentava.
cole

2
No android studio 2.3.3
cole

9
Prova a sostituire implementationconcompile
Saurabh Thorat il

Sì, funziona .. Grazie
cole

Risposte:


86

Sostituisci implementationcon compile.

compileè stato recentemente deprecato e sostituito da implementationoapi


20
Il titolo dice "Impossibile trovare l'implementazione del metodo ()" quindi l'utilizzo di "implementazione" invece di "compilare" non aiuterà (a meno che il messaggio di errore non sia completamente sbagliato)
Mario Klebsch

Sto già utilizzando "implementazione" per un modulo ivy che è presente nel nostro repository Artifactory. La risposta non aiuta
GaVaRaVa

1
Il fatto con deprivazione è corretto ma NON porta al messaggio di errore visualizzato nell'intestazione. Cerca la risposta di Sunil Kumar: stai modificando il file sbagliato. In caso di conferma, si prega di sottovalutare questa risposta poiché è fuorviante. TY
FrankKrumnow

45

Assicurati che la tua versione Gradle sia 3.*.*o superiore prima di utilizzare "implementazione".

Apri il file Gradle a livello di progetto sotto le dipendenze:

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

Apri il file "gradle-wrapper.properties" e imposta distributionUrl:

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

o l'ultima versione.

Sincronizza il progetto. Spero che questo risolva il tuo problema.


27

Assicurati di aggiungere queste dipendenze in android / app / build.gradle, non in android / build.gradle


3
Confermato. Questa è la risposta corretta. Il messaggio di errore descritto sopra viene visualizzato quando si aggiungono dipendenze al file build.gradle sbagliato.
FrankKrumnow

@FrankKrumnow Non posso confermare perché potrebbero esserci anche altri motivi.
Sreekanth Karumanaghat

3
Questo era il mio problema, quindi vale la pena controllare che stai aggiungendo al file giusto!
Josh Undefined

Essere d'accordo. Questa dovrebbe essere la risposta corretta. Grazie molto!
Mitrakov Artem

Questo era anche il mio problema, dopo aver passato 2 giorni a cercare di risolverlo. Le dipendenze vivevano in android / build.gradle nelle versioni precedenti di Cordova, quindi questo è stato molto confuso per me.
SigmaSteve

25

È necessario utilizzare almeno Gradle 3.4 o successivo per poterlo utilizzare implementation. Non è consigliabile continuare a utilizzare il deprecato compilepoiché ciò può comportare tempi di compilazione più lenti. Per maggiori dettagli consultare la guida ufficiale per sviluppatori Android:

Quando il tuo modulo configura una dipendenza di implementazione, sta facendo sapere a Gradle che il modulo non vuole perdere la dipendenza da altri moduli in fase di compilazione. Cioè, la dipendenza è disponibile per altri moduli solo in fase di esecuzione. L'utilizzo di questa configurazione delle dipendenze invece di API o compilazione può comportare miglioramenti significativi del tempo di compilazione perché riduce la quantità di progetti che il sistema di compilazione deve ricompilare. Ad esempio, se una dipendenza di implementazione cambia la sua API, Gradle ricompila solo quella dipendenza ei moduli che dipendono direttamente da essa. La maggior parte delle app e dei moduli di test dovrebbero utilizzare questa configurazione.

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

Aggiornamento: compile verrà rimosso entro la fine del 2018, quindi assicurati di utilizzare solo implementationora:

Attenzione: la configurazione "compile" è obsoleta ed è stata sostituita con "implementazione". Sarà rimosso alla fine del 2018


2
Sono già su Gradle 4.4, ma all'improvviso ho ancora questo problema.
Cicli infiniti

1
E qual è la tua versione del plugin gradle ? @InfiniteLoops
donfuxx

la versione dei plugin è 171.4249.39. tools.build: la versione Gradle è 3.0.1
Infinite Loops

In Android Studio, se crei un nuovo progetto da zero: il suo file gradle usa implementationo compile? @InfiniteLoops
donfuxx

1
Per me, la differenza era di millisecondi. Perché scherzare con qualcosa quando non è rotto?
user1608385

9

cambia applica plug-in: 'java' per applicare plug-in: 'java-library'

java-library-plugin


Sebbene la risposta accettata sembri essere la più popolare, non è l'unica risposta corretta. Nel mio caso, è stata l'assenza del "plugin apply: 'java-library" che ha prodotto la stessa identica eccezione (oggetto diverso, ovviamente). Quindi, grazie a @ xiqing-lau per aver aggiunto questa possibile soluzione.
pfurbacher

5

Così ridicolo, ma voglio comunque condividere la mia esperienza nel caso in cui qualcuno cada nella situazione come me.

Per favore controlla se hai cambiato: compileSdkVersion-> implementationSdkVersionper errore


"Per errore" significa che NON dovremmo cambiarlo da compileSdk .. a implementationSdk .. giusto? Che dovrebbe rimanere compileSdkVersion? --- Chiunque legga questo commento la risposta è - sì, stackoverflow.com/a/49755251/4132182
ZenVentzi

Questa non è una soluzione! la modifica della compilazione per l'implementazione si applica solo alle dipendenze .
Jorgesys

2

Il tuo codice

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

Sostituiscilo con

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

2

Come accennato qui, https://stackoverflow.com/a/50941562/2186220 , utilizza il plug-in gradle versione 3 o successiva durante l'utilizzo di "implementazione".

Inoltre, usa il google()repository in buildscript.

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

Queste modifiche dovrebbero risolvere il problema.


2

Sostituisci il tuo implementationcon classpath. Dovrebbe funzionare.


Ciao Nander, non credo che la mia risposta sia simile a quella accettata. Inoltre, non ho lavorato per me, motivo per cui ho pubblicato ciò che ha funzionato e potrebbe aiutare anche altri sviluppatori.
Edward Mpanza

Ciao Edward, scusa, ho letto male. La tua risposta è davvero diversa.
Nander Speerstra

1

Sono passato implementationa build.gradle a livello di modulo da build.gradle a livello di root. Risolve il problema.


0

Se l'implementazione non è definita, stai scrivendo su un file sbagliato. Su Unity 2019+ il file corretto èmain template grandle e non alcuni degli altri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.