Gradle - Erro, não foi possível encontrar a implementação do método () para os argumentos [com.android.support:appcompat-v7:26.0.0]


87

Estou tentando abrir um projeto android existente no android studio e gradle não consegue construir o aplicativo sem o erro

Erro, o Android Studio continua lançando

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.

Meu código em build.gradle que pode ajudar a entender meu problema Minhas dependências

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"

}

Por favor, ajude a resolver o problema


5
Você está usando o Android Studio 3.0?
Saurabh Thorat de

Sou novo no Android. Mas sim, eu atualizei para 3.0 porque o erro anterior estava reclamando disso.
cole de

1
Nope android studio 2.3.3
cole

9
Tente substituir implementationporcompile
Saurabh Thorat de

Sim, funciona .. Obrigado
cole de

Respostas:


87

Substitua implementationpor compile.

compilefoi recentemente suspenso e substituído por implementationouapi


17
O título diz 'Não foi possível encontrar a implementação do método ()', portanto, usar 'implementação' em vez de 'compilar' não ajudará (a menos que a mensagem de erro esteja completamente errada)
Mario Klebsch

Já estou usando "implementação" para um módulo ivy que está presente em nosso repositório Artifactory. A resposta não ajuda
GaVaRaVa

O fato com a depreciação está correto, mas NÃO leva à mensagem de erro exibida no cabeçalho. Procure a resposta de Sunil Kumar: você está editando o arquivo errado. Se confirmado, vote negativo para esta resposta, pois é enganosa. TY
FrankKrumnow

42

Certifique-se de que sua versão do Gradle é 3.*.*ou superior antes de usar "implementação".

Abra o arquivo Gradle do nível do projeto nas dependências:

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

Abra o arquivo 'gradle-wrapper.properties' e defina distributionUrl:

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

ou a versão mais recente.

Sincronize o projeto. Espero que isso resolva o seu problema.


25

Você precisa usar pelo menos Gradle 3.4 ou mais recente para poder usar implementation. Não é recomendado continuar usando o obsoleto, compilepois isso pode resultar em tempos de construção mais lentos. Para obter mais detalhes, consulte o guia oficial do desenvolvedor Android:

Quando seu módulo configura uma dependência de implementação, ele informa ao Gradle que o módulo não deseja vazar a dependência para outros módulos em tempo de compilação. Ou seja, a dependência está disponível para outros módulos apenas em tempo de execução. Usar esta configuração de dependência em vez de api ou compilar pode resultar em melhorias significativas no tempo de construção porque reduz a quantidade de projetos que o sistema de construção precisa recompilar. Por exemplo, se uma dependência de implementação altera sua API, o Gradle recompila apenas essa dependência e os módulos que dependem diretamente dela. A maioria dos módulos de aplicativo e teste deve usar essa configuração.

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

Atualização: compile será removido até o final de 2018, então certifique-se de usar apenas implementationagora:

Aviso: A configuração 'compilar' está obsoleta e foi substituída por 'implementação'. Ele será removido no final de 2018


2
Já estou no Gradle 4.4, ainda tendo esse problema de repente.
Infinite Loops de

1
E qual é a sua versão do plugin gradle ? @InfiniteLoops
donfuxx

a versão dos plug-ins é 171.4249.39. tools.build:Gradle version is 3.0.1
Infinite Loops

No Android Studio, se você criar um novo projeto do zero: O arquivo gradle usa implementationou compile? @InfiniteLoops
donfuxx

1
Para mim, a diferença foi de milissegundos. Por que bagunçar algo quando não está quebrado?
user1608385

20

Certifique-se de adicionar essas dependências em android / app / build.gradle, não em android / build.gradle


2
Confirmado. Essa é a resposta correta. A mensagem de erro descrita acima é exibida ao adicionar dependências ao arquivo build.gradle errado.
FrankKrumnow

@FrankKrumnow Não é possível confirmar porque podem haver outros motivos.
Sreekanth Karumanaghat

2
Esse era o meu problema, então vale a pena verificar se você está adicionando ao arquivo certo!
Josh Undefined

Aceita. Esta deve ser a resposta correta. Muito Obrigado!
Mitrakov Artem

Esse também era o meu problema, depois de passar 2 dias tentando consertá-lo. As dependências costumavam residir em android / build.gradle nas versões anteriores do Cordova, então isso era muito confuso para mim.
SigmaSteve

9

altere o plugin de aplicação: 'java' para aplicar o plugin: 'biblioteca-java'

java-library-plugin


Embora a resposta aceita pareça ser a mais popular, não é a única resposta correta. No meu caso, foi a ausência do "plugin de aplicação: 'java-library" que resultou exatamente na mesma exceção (objeto diferente, é claro). Portanto, obrigado a @ xiqing-lau por adicionar esta possível solução.
pfurbacher

5

Tão ridículo, mas ainda quero compartilhar minha experiência caso alguém caia na mesma situação como eu.

Verifique se você mudou: compileSdkVersion-> implementationSdkVersionpor engano


"Por engano" significa que NÃO devemos alterá-lo de compileSdk .. para deploymentSdk .. certo? Que deveria permanecer o compileSdkVersion? --- Para quem está lendo este comentário, a resposta é - Sim, stackoverflow.com/a/49755251/4132182
ZenVentzi 09/09/19

Isso não é uma solução! alterar compilar para implementação só se aplica a dependências .
Jorgesys

2

Seu código

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

Substitua por

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

2

Conforme mencionado aqui, https://stackoverflow.com/a/50941562/2186220 , use o plug-in Gradle versão 3 ou superior ao usar 'implementação'.

Além disso, use o google()repositório em buildscript.

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

Essas mudanças devem resolver o problema.


2

Substitua seu implementationpor classpath. Isso deve funcionar.


Olá Nander, não creio que minha resposta seja semelhante à aceita. Além disso, não trabalhei para mim, por isso postei o que funcionou e pude ajudar outros desenvolvedores também.
Edward Mpanza

Oi Edward, desculpe, eu li errado. Sua resposta é realmente diferente.
Nander Speerstra

1

Mudei implementationpara build.gradle de nível de módulo de build.gradle de nível de raiz. Isso resolve o problema.


0

Se a implementação não for definida, você está escrevendo em um arquivo errado. No Unity 2019+, o arquivo correto é, main template grandlee não alguns dos outros.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.