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

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"

}

문제 해결을 도와주세요



답변

교체 implementation와 함께 compile.

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


답변

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

또는 최신 버전.

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


답변

당신은 적어도 사용할 필요가 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 년 말에 제거됩니다.


답변

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


답변

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

자바 라이브러리 플러그인


답변

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

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


답변

귀하의 코드

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

교체

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