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
교체 시도 implementation로compile
— 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.