Gradle-오류 인수에 대한 method implementation ()을 찾을 수 없음 [com.android.support:appcompat-v7:26.0.0]


87

Android 스튜디오에서 기존 Android 프로젝트를 열려고하는데 gradle이 오류없이 앱을 빌드 할 수 없습니다.

Android Studio가 계속 던지는 오류

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.

내 문제를 이해하는 데 도움이 될 수있는 build.gradle의 내 코드 내 종속성

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"

}

문제 해결을 도와주세요


5
Android Studio 3.0을 사용하고 있습니까?
Saurabh Thorat

나는 안드로이드를 처음 사용합니다. 그러나 예, 이전 오류가 그것에 대해 불평했기 때문에 3.0으로 업데이트했습니다.
cole

1
아니 스튜디오 2.3.3 안드로이드

9
교체 시도 implementationcompile
Saurabh Thorat을

네, 작동합니다 .. 감사합니다

답변:


87

교체 implementation와 함께 compile.

compile최근에 더 이상 사용되지 않고 다음으로 대체되었습니다.implementation 또는api


17
제목은 'Could not find method implementation ()'이므로 'compile'대신 'implementation'을 사용하면 도움이되지 않습니다 (오류 메시지가 완전히 잘못되지 않는 한)
Mario Klebsch

저는 이미 Artifactory 저장소에있는 ivy 모듈에 대해 "구현"을 사용하고 있습니다. 대답은 도움이되지 않습니다
GaVaRaVa

헌신적 인 사실은 정확하지만 헤더에 오류 메시지가 표시되지는 않습니다. Sunil Kumar 답변을 찾으십시오. 잘못된 파일을 편집하고 있습니다. 확인되면 오해의 소지가 있으므로이 답변에 반대 투표하십시오. TY
FrankKrumnow

42

Gradle 버전이 3.*.*"구현"을 사용하기 전에 이상 .

종속성에서 프로젝트 수준 Gradle 파일을 엽니 다.

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

'gradle-wrapper.properties'파일을 열고 다음을 설정합니다 distributionUrl.

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

또는 최신 버전.

프로젝트를 동기화하십시오. 나는 이것이 당신의 문제를 해결하기를 바랍니다.


25

당신은 적어도 사용할 필요가 Gradle을 3.4 사용할 수 있도록 이상을 implementation. compile빌드 시간이 느려질 수 있으므로 더 이상 사용되지 않는을 계속 사용하지 않는 것이 좋습니다 . 자세한 내용은 공식 Android 개발자 가이드를 참조하세요.

모듈이 구현 종속성을 구성 할 때 Gradle은 모듈이 컴파일 타임에 다른 모듈에 종속성을 유출하고 싶지 않다는 것을 알립니다. 즉, 종속성은 런타임에만 다른 모듈에서 사용할 수 있습니다. API 또는 컴파일 대신이 종속성 구성을 사용하면 빌드 시스템이 재 컴파일해야하는 프로젝트의 양이 줄어들 기 때문에 빌드 시간이 크게 향상 될 수 있습니다. 예를 들어 구현 종속성이 API를 변경하면 Gradle은 해당 종속성과 이에 직접 의존하는 모듈 만 다시 컴파일합니다. 대부분의 앱 및 테스트 모듈은이 구성을 사용해야합니다.

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

업데이트 : compile 2018 년 말에 제거 될 예정이므로 implementation지금 만 사용하십시오 .

경고 : '컴파일'구성은 더 이상 사용되지 않으며 '구현'으로 대체되었습니다. 2018 년 말에 제거됩니다.


2
나는 이미 Gradle 4.4를 사용 중이며 여전히 갑자기이 문제가 발생합니다.
Infinite Loops

1
그리고 gradle 플러그인 의 버전은 무엇 입니까? @InfiniteLoops
donfuxx

플러그인 버전은 171.4249.39입니다. tools.build:Gradle 버전은 3.0.1이다
무한 루프

Android Studio에서 처음부터 새 프로젝트를 만드는 경우 : Gradle 파일에서 implementation또는 compile? @InfiniteLoops
donfuxx

1
저에게 차이는 밀리 초였습니다. 깨지지 않았는데 왜 뭔가를 엉망으로 만드나요?
user1608385

20

android / build.gradle이 아닌 android / app / build.gradle에 이러한 종속성을 추가하고 있는지 확인하십시오.


2
확인했습니다. 이것은 정답입니다. 위에서 설명한 오류 메시지는 잘못된 build.gradle 파일에 종속성을 추가 할 때 표시됩니다.
FrankKrumnow

@FrankKrumnow 다른 이유도있을 수 있기 때문에 확인할 수 없습니다.
Sreekanth Karumanaghat

2
이것은 내 문제이므로 올바른 파일에 추가하고 있는지 확인하는 것이 좋습니다!
Josh Undefined

동의하다. 이것은 정답이어야합니다. 감사합니다!
Mitrakov Artem

이틀을 고치려고 노력한 후 이것은 또한 내 문제였습니다. 이전 버전의 Cordova에서 android / build.gradle에 사용되는 종속성은 저에게 매우 혼란 스러웠습니다.
SigmaSteve

9

플러그인 적용 변경 : 'java'플러그인 적용 : 'java-library'

자바 라이브러리 플러그인


받아 들여진 답변이 가장 인기있는 것처럼 보이지만 정답 만있는 것은 아닙니다. 제 경우에는 "apply plugin : 'java-library"가 없어서 똑같은 예외가 발생했습니다 (물론 다른 객체). 이 가능한 솔루션을 추가해 주신 @ xiqing-lau에게 감사드립니다.
pfurbacher

5

너무 우스꽝 스럽지만 누군가 나 같은 상황에 빠질 경우를 대비하여 내 경험을 공유하고 싶습니다.

변경했는지 확인하십시오 : compileSdkVersion-> implementationSdkVersion실수로


"실수로"는 우리가 그것을 compileSdk ..에서 implementationSdk ..로 변경 해서는 안된다는 것을 의미합니다 . 맞습니까? compileSdkVersion을 유지해야합니까? --- 누구나 대답은이 코멘트를 읽고 - 네, stackoverflow.com/a/49755251/4132182
ZenVentzi

이것은 해결책이 아닙니다! 컴파일을 구현으로 변경하는 것은 종속성에만 적용됩니다 .
Jorgesys

2

귀하의 코드

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

교체

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

2

여기에서 언급했듯이 https://stackoverflow.com/a/50941562/2186220 , '구현'을 사용하는 동안 gradle 플러그인 버전 3 이상을 사용합니다.

또한, 사용 google()에 저장소를 buildscript.

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

이러한 변경으로 문제가 해결 될 것입니다.


2

당신의 교체 implementation와 함께 classpath. 작동합니다.


안녕 Nander, 내 대답이 받아 들여진 대답과 비슷하지 않다고 생각합니다. 게다가 나는 나를 위해 일하지 않았기 때문에 효과가있는 것을 게시했고 다른 개발자들도 도울 수 있었다.
Edward Mpanza

안녕 에드워드, 죄송합니다. 당신의 대답은 참으로 다릅니다.
Nander Speerstra

1

implementation루트 수준 build.gradle에서 모듈 수준 build.gradle 로 이동 했습니다. 문제를 해결합니다.


0

구현이 정의되지 않은 경우 잘못된 파일에 작성하는 것입니다. Unity 2019+에서 올바른 파일은 main template grandle다른 파일이 아닙니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.