ত্রুটি: নির্ভরতার সাথে সংঘাত 'com.google.code.findbugs: jsr305'


241

আমি গুগল মেসেজিংয়ের সাথে অ্যান্ড্রয়েড অ্যাপ এবং ব্যাকএন্ড মডিউল সহ অ্যান্ড্রয়েড স্টুডিও 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) এবং পরীক্ষার অ্যাপ্লিকেশন (২.০.১) এর সমাধান করা সংস্করণগুলি পৃথক। বিশদ জানতে http://g.co/androidstudio/app-test-app-conflict দেখুন ।

আমি অ্যান্ড্রয়েডে নতুন এবং এই ত্রুটিটি কী তা খুঁজে পেতে সক্ষম হই না। আমি কীভাবে এটি ঠিক করব?

উত্তর:


641

আপনার অ্যাপ্লিকেশন এর build.gradleমধ্যে নিম্নলিখিত যুক্ত করুন:

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

গ্রেডলকে সমস্ত নির্ভরতার জন্য আপনি যে সংস্করণ সংখ্যাটি উল্লেখ করেছেন কেবল তা সংকলন করতে সক্ষম করে, নির্ভরতাটি যে সংস্করণ নম্বরটি বলেছে তা নির্বিশেষে নয়।


57
এই স্নিপেটটি ব্যাখ্যা করার জন্য এটি দরকারী হতে পারে।
অ্যান্ড্রু গ্যাল্যাশ

18
@ এবং এটি স্পষ্টভাবে গ্রেডলকে বলেছে যে কোন সংস্করণটি সংকলিত করা হবে (কোনও ভার্সন নির্ভরতার রাজ্যের সংখ্যা নির্ধারণ করবে না) ... v 2.0.1কাজগুলি কার্যকর করার সময় (যাই হোক না কেন, উভয় সংস্করণকে অভিন্ন হতে বাধ্য করা প্রয়োজন)।
মার্টিন জিটলার

2
@ মার্টিনজিটলার কিন্তু সমস্যাটি কোথা থেকে এসেছে তা সত্যই ব্যাখ্যা করে না। আমি আজ এই সমস্যাটি পরীক্ষা-নিরীক্ষার 'জুনিট: জুনিট: 4.12' অ্যান্ড্রয়েড টেস্টআইম্পিমেশন 'com.android.support.test: রানার: 1.0.1' androidTestImplementation 'com.android.support.test.espresso: এসপ্রেসো-কোর: 3.0.1' দিয়ে পেয়েছি
fralbo

1
অসংখ্য ধন্যবাদ. এটি সাড়ে তিন বছর পরেও সত্যই সহায়ক। ;)
কার্তিক

1
@ কার্তিক হা হা জিজে, এটা অনেক দিন আগে! কোনও উদ্বেগ নেই, আপনাকে ধন্যবাদ, আমি আশা করি এটি সাহায্য করেছিল! আমি দীর্ঘদিন অ্যান্ড্রয়েড বিকাশ বন্ধ করে দিয়েছি তবে আমি নিশ্চিত যে একদিন আমি আবার এটি তুলে
নেব g

170

এটি এস্প্রেসোর কারণে। এটি build.gradeহ্রাস করতে আপনি আপনার অ্যাপ্লিকেশনগুলিতে নিম্নলিখিতগুলি যুক্ত করতে পারেন ।

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

1
কাজ করছে না. উত্তর হিসাবে সেট করা প্রশ্ন কাজ করে।
ওয়ারপজিট

2
@ ওয়ারপজিট - এটি আমার পক্ষে কাজ করেছে (যেমনটি গৃহীত উত্তরও হয়েছিল)।
টেড হপ

@ টেডহপ্প আমি আসলে অন্য কিছু করে শেষ করেছি। আমি ইউটিউব এপিআইয়ের জন্য গ্রেড সংকলন নিয়ে ইস্যু করেছি তাই আমি পরিবর্তে লিব জারটি ব্যবহার করে শেষ করেছি।
ওয়ার্পজিট

2
সম্ভবত এই উত্তরটি সবাই সন্ধান করছে। বেশিরভাগ ক্ষেত্রে অ্যান্ড্রয়েড স্টুডিওতে নির্ভরতা তালিকায় ডিফল্টরূপে এসপ্রেসো অন্তর্ভুক্ত থাকে এবং অন্যান্য লাইব্রেরির পাশাপাশি এটি ব্যবহার করতে আপনাকে বেশ কয়েকটি জিনিস বাদ দিতে হবে। @ সন্তোষ যা বলেছিল তা ছাড়া আমিওexclude group: 'com.android.support', module: 'support-annotations'

1
ঠিক আছে আমি স্রেফ অ্যান্ড্রয়েডটেষ্টকম্পাইল সরিয়েছি ('com.android.support.test.espresso: এস্প্রেসো-কোর: ২.২.২') group গ্রুপটি বাদ দিন: 'com.google.code.findbugs'} এবং এটি কাজ করেছে: ডি কারণ মূলত সমস্যাটি আপনার ফিক্সটি হ'ল কিছু লোকের ইতিমধ্যে * অ্যান্ড্রয়েড টেস্টকম্পাইল ('com.android.support.test.espresso: espresso-core: 2.2.2', group গোষ্ঠীটি বাদ দিন: 'com.android.support', মডিউল: 'সমর্থন-টীকা') }) * তাদের গ্রেড ফাইলটিতে এই জাতীয় কিছু যুক্ত করা এবং অন্য একটি বাদ দেওয়া যুক্তি একটি ব্যতিক্রম ছুঁড়ে দেওয়া , সমস্ত শিলাবৃষ্টির গ্রেড স্ক্রিপ্টিং, এটি এখনও আপনার জন্য একটি
উজ্জীবিত

31

পদ্ধতি 1: আমি এস্প্রেসো-কোর লাইনে অ্যান্ড্রয়েড টেস্টকম্পাইলটি মুছলাম যা স্বয়ংক্রিয়ভাবে একটি নতুন প্রকল্পে অন্তর্ভুক্ত হয়েছিল। তারপরে আমার অ্যান্ড্রয়েড স্টুডিওগুলি পরিষ্কার করে সংকলন করে।

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

একটি সংস্করণ আপডেট রয়েছে: অ্যান্ড্রয়েডটেষ্টকম্পাইল 'com.google.code.findbugs: jsr305: 3.0.1'
ইনসফট

18

থেকে Gradle প্লাগইন ইউজার গাইড :

যখন উপকরণ পরীক্ষা চালানো হয়, তখন মূল এপিএল এবং পরীক্ষার APK উভয়ই একই শ্রেণিপথ ভাগ করে দেয়। গ্রেড বিল্ড ব্যর্থ হবে যদি মূল APK এবং পরীক্ষার APK একই লাইব্রেরি ব্যবহার করে (যেমন পেয়ারা) তবে বিভিন্ন সংস্করণে। গ্রেড যদি তা ধরে না ফেলে তবে আপনার অ্যাপ্লিকেশন পরীক্ষার সময় এবং সাধারণ রান চলাকালীন (কোনও একটি ক্ষেত্রে ক্র্যাশ সহ) অন্যরকম আচরণ করতে পারে।

বিল্ডটিকে সফল করতে, কেবল উভয় APK এ একই সংস্করণ ব্যবহার করেছে তা নিশ্চিত করুন। যদি ত্রুটিটি একটি পরোক্ষ নির্ভরতা (কোনও লাইব্রেরি যা আপনি আপনার বিল্ডস্র্যাডলে উল্লেখ করেন নি) সম্পর্কে হয় তবে কনফিগারেশনে নতুন সংস্করণের জন্য নির্ভরতা যুক্ত করুন

উভয় APK এর জন্য নতুন সংস্করণ ব্যবহার করতে আপনার বিল্ড.gradle নির্ভরতাতে এই লাইনটি যুক্ত করুন :

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 {...}

2nd

অ্যান্ড্রয়েড স্টুডিও
রান ./gradlew -q app:dependenciesকমান্ডে টার্মিনাল খুলুন ।

3 য়

Clean Projectতালিকার অ্যান্ড্রয়েড স্টুডিওর মেনু বার থেকে ক্লিক করুন Build
এটি প্রকল্পটি পুনর্নির্মাণ করবে এবং তারপরে remove 1 ম পদক্ষেপে কোড দেবে।

হতে পারে আপনার কেবল দ্বিতীয় পদক্ষেপটি কার্যকর করা উচিত। ত্রুটি দেখা দিলে আমি রোলব্যাক করতে পারি না। একটি চেষ্টা আছে.


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 নির্ভরতা use অ্যাপ্লিকেশন-গ্রেডেল ফাইলটিতে নিম্নলিখিতগুলির মধ্যে একটি যোগ করুন:

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. @ সন্তোষের (এবং অন্যান্য ব্যক্তিদের কয়েকজন) এর একটি উত্তর রয়েছে যারা এসপ্রেসোর জন্য একই নির্ভরতা বর্জন করার পরামর্শ দেয়, যা একইভাবে কাজ করা উচিত, তবে যদি প্রকল্পটিতে একই লাইব্রেরির উপর নির্ভরশীল অন্য কিছু নির্ভরতা থাকে (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 একই ত্রুটি পাচ্ছেন, সহজভাবে আপডেট করে এটি সমাধান করতে পারেন সংস্করণ এর compileSdkVersion এবং 27 থেকে 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

নেটিভ-ফায়ারবেস প্রতিক্রিয়া জানানোর জন্য , 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}

আমি প্রথমবার {বল = সত্য} পতাকাটি দেখেছি। আমি চেষ্টা করেছিলাম এবং এটি সরাসরি আমার জন্য কাজ করেছে। আমার প্রকল্পের জন্য আমার v1.0.2 এ androidx.appcompat রাখা দরকার কারণ আমি যে লাইব্রেরি যুক্ত করেছি তার নির্ভরতা v1.1.0 এ সেট করা আছে।
মাইকঅস্কারএকো

0

আমি এয়ারবিএনবি ডিপলিংক প্রেরণটি ব্যবহার করার চেষ্টা করছিলাম এবং এই ত্রুটিটি পেয়েছি। আমাকে এ্যানোটেশনপ্রসেসর থেকে ফাইন্ডব্যাগ গ্রুপটিও বাদ দিতে হয়েছিল।

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

নাজাতীয় প্রতিক্রিয়া

আপনি যদি দেশীয় সমাধানের প্রতিক্রিয়া খুঁজছেন, তবে আপনার স্নিপেটটি আপনার প্রভাবিত নোড_মডিউলগুলি গ্রেড বিল্ড ফাইলে লিখুন, যেমন আমার ক্ষেত্রে ফায়ারবেস।

android {
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.0'
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.