오류 : 종속성 'com.google.code.findbugs : jsr305'와 충돌


241

Android 앱이 있는 Android Studio 2.2 Preview 1 및 Google 메시징이있는 백엔드 모듈 에서 새 프로젝트를 만들었습니다 . 이것은 앱 파일입니다.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    defaultConfig {
        applicationId "com.xxx.xxx"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha1'
    compile 'com.google.android.gms:play-services-gcm:9.0.0'
    testCompile 'junit:junit:4.12'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support:support-annotations:23.4.0'
    compile project(path: ':backend', configuration: 'android-endpoints')
}

그러나 그것은주고있다 :

오류 : 종속성 'com.google.code.findbugs : jsr305'와 충돌합니다. 앱 (1.3.9) 및 테스트 앱 (2.0.1)의 해결 된 버전이 다릅니다. 자세한 내용은 http://g.co/androidstudio/app-test-app-conflict 를 참조하십시오.

Android를 처음 사용하고 있으며이 오류가 무엇인지 찾을 수 없습니다. 어떻게 고치나요?

답변:


642

앱에서 build.gradle다음을 추가하십시오.

android {
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
    }
}

Gradle은 종속성이 지정한 버전 번호에 관계없이 모든 종속성에 대해 지정한 버전 번호 만 컴파일하도록합니다.


57
이 스 니펫을 설명하는 것이 유용 할 수 있습니다.
앤드류 갈라 쉬

18
@Andy는 Gradle에게 어떤 버전을 컴파일 해야하는지 (어떤 버전 번호가 종속성 상태인지에 관계없이) 명시 적으로 v를 적용하면서도 2.0.1작동합니다 (두 버전 모두 동일해야 함).
Martin Zeitler

2
@ MartinZeitler 그러나이 문제가 어디에서 왔는지 실제로 설명하지는 않습니다. 오늘 testImplementation 'junit : junit : 4.12'androidTestImplementation 'com.android.support.test : runner : 1.0.1'androidTestImplementation 'com.android.support.test.espresso : espresso-core : 3.0.1'에서이 문제가 발생합니다.
fralbo

1
정말 감사합니다. 이것은 3 년 반 후에도 여전히 도움이됩니다. ;)
Kartik

1
@Kartik haha ​​jeeze, 오래 전이었습니다! 걱정하지 마세요. 감사합니다. 도움이 되셨기를 바랍니다. 나는 오랫동안 안드로이드 개발을 중단했지만 언젠가 다시 그것을 선택할 것이라고 확신한다 😊
gbhall

170

에스프레소 때문입니다. build.grade이를 완화하기 위해 앱 에 다음을 추가 할 수 있습니다 .

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
  exclude group: 'com.google.code.findbugs'
}

1
작동하지 않는. 답변으로 설정된 질문이 작동합니다.
Warpzit

2
@Warpzit-이것은 나를 위해 일했습니다 (허용 된 답변처럼).
Ted Hopp

@TedHopp 나는 실제로 다른 일을했습니다. YouTube API 용 gradle compile에 문제가있어서 lib jar를 대신 사용했습니다.
Warpzit

2
이것은 아마도 모든 사람이 찾고있는 대답 일 것입니다. 대부분의 경우 Android Studio는 기본적으로 종속성 목록에 Espresso를 포함하므로 다른 라이브러리와 함께 사용하려면 몇 가지를 제외해야합니다. @Santhosh가 말한 것 외에도 나도exclude group: 'com.android.support', module: 'support-annotations'
milosmns

1
잘 방금 androidTestCompile ( 'com.android.support.test.espresso : espresso-core : 2.2.2')를 제거했습니다. {제외 그룹 : 'com.google.code.findbugs'} 그리고 주로 다음과 같은 문제로 인해 D가 작동했습니다. 일부 사람들은 이미 androidTestCompile ( 'com.android.support.test.espresso : espresso-core : 2.2.2', {제외 그룹 : 'com.android.support', 모듈 : 'support-annotations' }) * gradle 파일에 이와 같은 내용이 있고 다른 exclude를 추가 하면 예외가 발생합니다. 모든 hail gradle 스크립팅은 여전히 ​​당신을 위해
찬성

31

방법 1 : 새 프로젝트에 자동으로 포함 된 espresso-core 라인에서 androidTestCompile을 삭제했습니다. 그런 다음 내 Android Studio가 깨끗하게 컴파일됩니다.

androidTestCompile은 "build.gradle (모듈 : app)"에 있습니다.

dependencies {
    ...
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    ...
}

이 삭제로 인해 문제가 발생하는지 여부는 알 수 없지만 현재 프로젝트에서 작동합니다.

방법 2 : findbugs에 제외를 추가해도 작동합니다.

dependencies {
    ...
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
        exclude group: 'com.google.code.findbugs'
    })
    ...
}

방법 3 : 특정 버전으로 강제 컴파일 :

(다음에서는 강제로 상위 버전으로 컴파일합니다.)

dependencies {
    ...
    androidTestCompile 'com.google.code.findbugs:jsr305:3.0.0'
    ...
}

androidTestCompile '3.0.1 com.google.code.findbugs : : : JSR305'는 버전 업데이트가
Insoft

18

에서 Gradle을 플러그인 사용자 안내서 :

계측 테스트가 실행될 때 기본 APK와 테스트 APK 모두 동일한 클래스 경로를 공유합니다. 기본 APK와 테스트 APK가 동일한 라이브러리 (예 : 구아바)를 사용하지만 버전이 다른 경우 Gradle 빌드가 실패합니다. gradle이이를 발견하지 못하면 테스트 및 정상 실행 (앱 중 하나의 충돌 포함) 중에 앱이 다르게 작동 할 수 있습니다.

빌드가 성공하려면 두 APK가 동일한 버전을 사용해야합니다. 오류가 간접 종속성 (build.gradle에서 언급하지 않은 라이브러리)에 관한 것이라면 최신 버전에 대한 종속성을 구성에 추가하십시오.

이 라인을 build.gradle 종속성에 추가 하여 두 APK 모두에 최신 버전을 사용 하십시오 .

compile('com.google.code.findbugs:jsr305:2.0.1')

나중에 참조 할 수 있도록 Gradle 콘솔을 확인할 수 있으며 오류 옆에 유용한 링크를 제공하여 모든 gradle 빌드 오류에 도움이됩니다.


8

이것이 발생하는 이유는 diff 종속성이 동일한 lib의 diff 버전을 사용하기 때문입니다.
따라서이 문제를 해결하려면 3 단계 또는 1 단계가 있습니다.

1 일

더하다

configurations.all {
    resolutionStrategy.force 'com.google.code.findbugs:jsr305:2.0.1'
}

당신에 build.gradle있는 파일android {...}

2 위

안드로이드 스튜디오
실행 ./gradlew -q app:dependencies명령 에서 터미널을 엽니 다 .

3 위

목록 Clean Project에서 안드로이드 스튜디오의 메뉴 바에서 클릭하십시오 Build.
프로젝트를 다시 빌드 한 다음 remove1 단계에서 코딩합니다.

어쩌면 2 단계 만 실행하면됩니다. 오류가 발생하면 롤백 할 수 없습니다. 시도해보십시오.


7

내가 추가 할 때 module: 'jsr305'문을 제외 추가로, 모두 나를 위해 잘 운동했다.

 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
exclude module: 'jsr305'

})


6

로그에 명시된 바와 같이 문제는 두 가지 종속성이 다른 버전의 세 번째 종속성을 사용하려고한다는 것입니다. app-gradle 파일에 다음 중 하나를 추가하십시오.

androidTestCompile 'com.google.code.findbugs:jsr305:2.0.1'
androidTestCompile 'com.google.code.findbugs:jsr305:1.3.9'

4
  1. 허용되는 답변은 문제를 해결하는 한 가지 방법입니다. 문제가되는 종속성 (com.google.code.findbugs : jsr305)에 대한 전략을 적용하기 때문에이 종속성의 일부 버전을 사용하여 프로젝트 관련 문제를 해결합니다. 기본적으로이 라이브러리의 버전을 전체 프로젝트에 맞 춥니 다.

  2. @Santhosh (및 다른 두 사람)의 답변은 동일한 방식으로 작동해야하지만 동일한 라이브러리 (com.google. .code.findbugs : jsr305)도 마찬가지입니다. 따라서이 방법을 사용하려면 com.google.code.findbugs : jsr305에 의존하는 모든 프로젝트 종속성에서 동일한 그룹을 제외해야합니다. Espresso Contrib 및 Espresso Intents도 com.google.code.findbugs : jsr305를 사용한다는 것을 개인적으로 발견했습니다.

이 생각이 누군가가 여기에서 정확히 무슨 일이 일어나고 있고 어떻게 작동하는지 이해하는 데 도움이되기를 바랍니다.


3

최신 버전의 findbugs 라이브러리를 사용하도록하려면 종속성에 이것을 추가하십시오.

compile 'com.google.code.findbugs:jsr305:2.0.1'

2

gradle 파일에서 에스프레소 종속성을 삭제하면 효과가 있습니다.

앱 gradle 파일에서 해당 줄을 삭제하십시오.

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})

3
에스프레소 의존성을 삭제하면 더 이상 앱을 테스트 할 수 없으므로이 솔루션은 분명히 작동하지 않습니다.
Heinrich

1

안드로이드 3.0.1에서 같은 오류가있는 사람들은 단순히 업데이트하여 해결할 수 있습니다 버전compileSdkVersion27 targetSdkVersion을을 도에 'com.android.support:appcompat-v7:27.1.1을 구현 종속 .


1

프로젝트 ': app'에서 app / build.gradle 파일에 다음을 추가 할 수 있습니다.

android {
 configurations.all {
    resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
 }
 }

1

대한 반응 - 기본 - 중포 기지 ,이 추가 app/build.gradle종속성이 섹션은 나를 위해 작동했다 :

implementation('com.squareup.okhttp3:okhttp:3.12.1') { force = true }
implementation('com.squareup.okio:okio:1.15.0') { force = true }
implementation('com.google.code.findbugs:jsr305:3.0.2') { force = true}

이것이 {force = true} 플래그를 처음 본 것입니다. 나는 그것을 시도했고 그것은 나를 위해 즉시 일했다. 추가 한 라이브러리에 해당 종속성이 v1.1.0으로 설정되어 있으므로 androidx.appcompat를 프로젝트의 v1.0.2로 유지해야했습니다.
MikeOscarEcho

0

airbnb 딥 링크 디스패치를 ​​사용하려고 했는데이 오류가 발생했습니다. 또한 annotationProcessor에서 findbugs 그룹을 제외시켜야했습니다.

//airBnb
    compile ('com.airbnb:deeplinkdispatch:3.1.1'){
        exclude group:'com.google.code.findbugs'
    }
    annotationProcessor ('com.airbnb:deeplinkdispatch-processor:3.1.1'){
        exclude group:'com.google.code.findbugs'
    }

0

고유 한 반응

반응 네이티브 솔루션을 찾고 있다면 영향을받는 node_modules gradle 빌드 파일 (예 : firebase) 에이 스 니펫을 작성하십시오.

android {
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.0'
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.