[android-studio] 오류 : 종속성 ‘com.google.code.findbugs : jsr305’와 충돌

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를 처음 사용하고 있으며이 오류가 무엇인지 찾을 수 없습니다. 어떻게 고치나요?



답변

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

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

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


답변

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

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


답변

방법 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'
    ...
}


답변

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

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

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

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

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

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


답변

이것이 발생하는 이유는 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 단계 만 실행하면됩니다. 오류가 발생하면 롤백 할 수 없습니다. 시도해보십시오.


답변

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

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

})


답변

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

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