त्रुटि: निर्भरता के साथ संघर्ष 'com.google.code.findbugs: jsr305'


241

मैंने Google मैसेजिंग के साथ एंड्रॉइड ऐप और बैकएंड मॉड्यूल के साथ एंड्रॉइड स्टूडियो 2.2 पूर्वावलोकन 1 में एक नई परियोजना बनाई । यह एप्लिकेशन फ़ाइल है:

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'
    }
}

लागू करने के लिए ग्रेड केवल उन सभी निर्भरताओं के लिए आपके द्वारा बताए गए संस्करण संख्या को संकलित करने के लिए, कोई फर्क नहीं पड़ता कि कौन सी संस्करण संख्या निर्भरताएं बताई हैं।


57
इस स्निपेट की व्याख्या करना उपयोगी हो सकता है।
एंड्रयू गैलाश 2

18
@ और यह स्पष्ट रूप से ग्रैडल को बताता है कि कौन सा संस्करण संकलित किया जाएगा (कोई फर्क नहीं पड़ता कि कौन सी संस्करण निर्भरता राज्य है) ... v 2.0.1कार्यों को लागू करते समय , (जो भी हो, दोनों संस्करणों को समान होने के लिए मजबूर करने की आवश्यकता होती है)।
मार्टिन ज़ेइटलर 17

2
@MartinZeitler लेकिन यह वास्तव में नहीं बताता है कि यह समस्या कहाँ से आती है। मुझे आज यह समस्या टेस्टिमिनेशन 'जूनिट: जूनिट: 4.12' एंड्रॉइडटेस्ट इम्प्लीमेंटेशन 'कॉम.एंड्रॉएड.इंडिया.टेस्ट: रनर: 1.0.1' एंड्रॉइडटेस्टइम्प्लीमेंट 'कॉम.एंड्रॉएड.इस्टटैस्ट.स्प्रेसो: एस्प्रेसो-कोर: 3.0.1' के साथ मिलती है।
फ्रालबो

1
अनेक अनेक धन्यवाद। यह सचमुच साढ़े 3 साल बाद भी मददगार है। ;)
कार्तिक

1
@ कार्तिक हाहा जीजे, बहुत समय पहले की बात है! कोई चिंता नहीं, धन्यवाद, मुझे आशा है कि इससे मदद मिली! मैंने लंबे समय से एंड्रॉइड विकास को रोक दिया है, लेकिन मुझे यकीन है कि एक दिन मैं इसे फिर से
उठाऊंगा hall

170

यह एस्प्रेसो के कारण है। build.gradeइसे कम करने के लिए आप अपने ऐप्स में निम्न जोड़ सकते हैं ।

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

1
काम नहीं कर रहा। प्रश्न जो उत्तर कार्यों के रूप में सेट किया गया है।
वारपज़िट

2
@Warpzit - इसने मेरे लिए काम किया (जैसा कि स्वीकृत उत्तर दिया गया)।
टेड हॉप

@ टेडहॉप मैं वास्तव में कुछ और कर रहा था। मेरे पास youtube एपीआई के लिए ग्रेडाइल संकलन के साथ मुद्दा था इसलिए मैंने इसके बजाय लिबर जार का उपयोग किया।
वारपजीत

2
यह सबसे अधिक संभावना है कि उत्तर की तलाश सभी को है। ज्यादातर मामलों में एंड्रॉइड स्टूडियो में निर्भरता सूची में डिफ़ॉल्ट रूप से एस्प्रेसो शामिल है, और आपको इसे अन्य पुस्तकालयों के साथ उपयोग करने के लिए कुछ चीजों को बाहर करने की आवश्यकता है। @ संतोष ने जो कहा उसके अलावा, मैंने भीexclude group: 'com.android.support', module: 'support-annotations'
18

1
वैसे मैंने अभी अभी androidTestCompile ('com.android.support.test.espresso: एस्प्रेसो-कोर: 2.2.2') को हटा दिया है : {समूह को हटा दें: 'com.google.code.findbugs'} और इसने काम किया: क्योंकि मुख्य रूप से समस्या थी आपका फिक्स यह है कि कुछ लोगों के पास पहले से ही * androidTestCompile ('com.android.support.test.espresso: एस्प्रेसो-कोर: 2.2.2', {समूह को बाहर करें: 'com.android.support', मॉड्यूल: समर्थन-एनोटेशन ' }) * उनके ग्रेड फ़ाइल में ऐसा कुछ है, और एक और अपवर्जित जोड़कर एक अपवाद फेंक रहा है, सभी ओले ग्रेड स्क्रिप्टिंग, फिर भी आपके लिए एक
अपवित्र

31

विधि 1: मैंने एस्प्रेसो-कोर लाइन पर androidTestCompile को हटा दिया जो स्वचालित रूप से एक नई परियोजना में शामिल थी। फिर मेरा एंड्रॉइड स्टूडियो साफ-सुथरा संकलन करता है।

AndroidTestCompile "build.gradle (मॉड्यूल: ऐप)" में है:

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

मुझे नहीं पता कि इस विलोपन से सड़क के नीचे कोई समस्या होगी या नहीं, लेकिन यह निश्चित रूप से अब मेरी वर्तमान परियोजना के लिए काम करती है।

विधि 2: खोजबिन पर एक बहिष्करण जोड़ना भी काम करता है:

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 'com.google.code.findbugs: jsr305: 3.0.1'
इंसॉफ्ट

18

से Gradle प्लगइन उपयोगकर्ता गाइड :

जब इंस्ट्रूमेंटेशन टेस्ट चलाए जाते हैं, तो मुख्य एपीके और टेस्ट एपीके दोनों एक ही क्लासपाथ साझा करते हैं। ग्रैड बिल्ड विफल हो जाएगा यदि मुख्य एपीके और टेस्ट एपीके एक ही पुस्तकालय (जैसे अमरूद) का उपयोग करते हैं लेकिन विभिन्न संस्करणों में। अगर ग्रेडेल ने ऐसा नहीं पकड़ा, तो आपका ऐप परीक्षण के दौरान और सामान्य रन के दौरान (मामलों में से एक में दुर्घटनाग्रस्त होने सहित) अलग तरह से व्यवहार कर सकता है।

बिल्ड को सफल बनाने के लिए, बस यह सुनिश्चित करें कि दोनों APK एक ही संस्करण का उपयोग करें। यदि त्रुटि अप्रत्यक्ष निर्भरता के बारे में है (एक पुस्तकालय जिसका आपने अपने बिल्ड.ग्रेडल में उल्लेख नहीं किया था), बस कॉन्फ़िगरेशन के लिए नए संस्करण के लिए एक निर्भरता जोड़ें

इस लाइन को अपने build.gradle निर्भरता में जोड़ें दोनों APK के लिए नए संस्करण का उपयोग करें:

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

भविष्य के संदर्भ के लिए, आप अपने ग्रेडल कंसोल की जांच कर सकते हैं और यह किसी भी ढाल निर्माण त्रुटियों के साथ मदद करने के लिए त्रुटि के बगल में एक उपयोगी लिंक प्रदान करेगा।


8

ऐसा होने का कारण यह है कि भिन्न निर्भरता भिन्न संस्करण के समान ही उपयोग करती है।
तो, इस समस्या को हल करने के लिए 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में Android स्टूडियो के मेनू बार से क्लिक करें 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

समस्या, जैसा कि आपके लॉग में कहा गया है, 2 निर्भरताएं हैं जो 3 जी निर्भरता के विभिन्न संस्करणों का उपयोग करने की कोशिश कर रही हैं। एप्लिकेशन-ग्रेड फ़ाइल में निम्न में से एक जोड़ें:

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 पर निर्भर हैं। मैंने व्यक्तिगत रूप से पाया कि एस्प्रेसो कॉन्ट्रिब और एस्प्रेसो इंटेंट्स भी com.google.code.findbugs: jsr305 का उपयोग करते हैं।

मुझे उम्मीद है कि यह विचार किसी को यह महसूस करने में मदद करेगा कि वास्तव में यहां क्या हो रहा है और चीजें कैसे काम करती हैं (न कि केवल कुछ कोड पेस्ट करें) :)।


3

इसे खोजने के लिए निर्भरता में जोड़ें, खोजबीन पुस्तकालय के नवीनतम संस्करण का उपयोग करने के लिए मजबूर करने के लिए:

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

2

मेरे लिए ग्रेड फ़ाइल में एस्प्रेसो निर्भरता हटाएं।

एप्लिकेशन की श्रेणी फ़ाइल में उन पंक्तियों को हटाएं:

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

3
यदि आप अभी एस्प्रेसो निर्भरता को हटाते हैं तो आप अपने ऐप का परीक्षण नहीं कर सकते हैं, इसलिए यह समाधान स्पष्ट रूप से काम नहीं कर रहा है।
हेनरिक

1

जो लोग एंड्रॉइड 3.0.1 में एक ही त्रुटि प्राप्त कर रहे हैं, वे केवल 27 तक compileSdkVersion और targetSdkVersion के संस्करणों को अपडेट कर सकते हैं और निर्भरता में com.android.support:appcompat-v7:27.1.1 को भी लागू कर सकते हैं ।


1

प्रोजेक्ट ': ऐप' में आप अपने ऐप / बिल्ड.gradle फ़ाइल में निम्न जोड़ सकते हैं:

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

1

के लिए प्रतिक्रिया देशी-firebase , को यह जोड़ने 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}

यह पहली बार है जब मैंने {बल = सत्य} ध्वज देखा है। मैंने इसे आजमाया और इसने मेरे लिए तुरंत काम किया। मुझे अपनी परियोजना के लिए androidx.appcompat को v1.0.2 पर रखने की आवश्यकता थी क्योंकि एक पुस्तकालय मैंने जोड़ा है कि निर्भरता v1.1.0 पर सेट है।
22

0

मैं airbnb deeplink प्रेषण का उपयोग करने की कोशिश कर रहा था और यह त्रुटि मिली। मुझे एनोटेशनप्रोसेसर से फाइंडबग्स ग्रुप को भी बाहर करना पड़ा।

//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

NATIVE पढ़ें

यदि आप मूल समाधान के लिए प्रतिक्रिया की तलाश कर रहे हैं, तो इस स्निपेट को अपने प्रभावित नोड_मॉडल ग्रेडेल बिल्ड फ़ाइल में लिखें, जैसे मेरे मामले में फायरबेस।

android {
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.0'
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.