Hata: 'com.google.code.findbugs: jsr305' bağımlılığı ile çatışma


241

Android App ile Android Studio 2.2 Önizleme 1'de ve Google Messaging ile Backend modülünde yeni bir proje oluşturdum . Bu uygulama dosyası:

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

Ama veriyor:

Hata: 'com.google.code.findbugs: jsr305' bağımlılığı ile çatışma. Uygulama (1.3.9) ve test uygulaması (2.0.1) için çözümlenmiş sürümler farklıdır. Ayrıntılar için http://g.co/androidstudio/app-test-app-conflict adresine bakın.

Android'de yeniyim ve bu hatanın ne olduğunu bulamıyorum. Nasıl düzeltebilirim?

Yanıtlar:


642

Uygulamanızda build.gradleaşağıdakileri ekleyin:

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

Bağımlılıkları hangi sürüm numarasında belirtmiş olursa olsun, tüm bağımlılıklar için yalnızca belirttiğiniz sürüm numarasını derlemek için Gradle'ı zorlar.


57
Bu pasajı açıklamak faydalı olabilir.
Andrew Gallasch

18
@ Ve açıkça Gradle'a hangi sürümün derleneceğini söyler (bağımlılıkların hangi sürüm numarası olursa olsun) ... v'yi 2.0.1de uygularken (her iki sürümün de aynı olmaya zorlanması gerekir).
Martin Zeitler

2
@MartinZeitler ama bu sorunun nereden geldiğini gerçekten açıklamıyor. Bugün bu sorunu testImplementation 'junit: junit: 4.12' androidTestImplementation 'com.android.support.test: runner: 1.0.1' androidTestImplementation 'com.android.support.test.espresso: espresso çekirdeği: 3.0.1' ile alıyorum
fralbo

1
Bir ton teşekkürler. Bu hala 3 buçuk yıl sonra gerçekten yararlıdır. ;)
Kartik

1
@Kartik haha ​​jeeze, uzun zaman önceydi! Endişeye gerek yok, teşekkür ederim, umarım yardımcı olmuştur! Uzun zamandır Android geliştirmeyi durdurdum ama eminim bir gün tekrar alacağım 😊
gbhall

170

Bunun nedeni espresso. Bunu build.gradeazaltmak için uygulamalarınıza aşağıdakileri ekleyebilirsiniz .

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

1
Çalışmıyor. Cevap olarak ayarlanan soru işe yarar.
Warpzit

2
@Warpzit - Bu benim için çalıştı (kabul edilen cevap gibi).
Ted Hopp

@TedHopp Aslında başka bir şey yaptım. Onun yerine lib jar kullanarak sona erdi youtube api için gradle derleme ile ilgili sorun vardı.
Warpzit

2
Bu büyük olasılıkla herkesin aradığı cevaptır. Çoğu durumda Android Studio, bağımlılık listesinde varsayılan olarak Espresso'yu içerir ve diğer kitaplıklar boyunca kullanmak için birkaç şeyi hariç tutmanız gerekir. @Santhosh'ın söylediklerinden ayrı olarak, ben deexclude group: 'com.android.support', module: 'support-annotations'
milosmns

1
Peki ben sadece androidTestCompile ('com.android.support.test.espresso: espresso-core: 2.2.2') {grup hariç: 'com.google.code.findbugs'} ' ı kaldırdım ve işe yaradı: D öncelikle sorun düzeltmeniz, bazı kişilerin zaten * androidTestCompile ('com.android.support.test.espresso: espresso çekirdeği: 2.2.2', {hariç tut grubu: 'com.android.support', modül: 'destek ek açıklamaları' }) * gradle dosyalarında böyle bir şey ve başka bir hariç tutma eklemek , bir istisna atıyor, tüm dolu grarip komut dosyaları, sizin için hala bir oylama :)
ShayHaned

31

YÖNTEM 1: Yeni bir projeye otomatik olarak dahil edilen espresso çekirdeğinde androidTestCompile'ı sildim. Sonra Android Studio'm temiz derleniyor.

AndroidTestCompile "build.gradle (Modül: app)" içindedir:

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

Bu silme işleminin yolda herhangi bir sorun olup olmayacağını bilmiyorum, ancak şu anki projem için kesinlikle işe yarıyor.

YÖNTEM 2: Findbugs'a hariç tutma eklemek de işe yarar:

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

YÖNTEM 3: Belirli bir sürümle derlemeyi zorlama:

(Aşağıda daha yüksek sürümle derlemeye zorlarım.)

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

bir sürüm güncellemesi var: androidTestCompile 'com.google.code.findbugs: jsr305: 3.0.1'
Insoft

18

Gönderen Gradle Eklenti Kullanıcı Kılavuzu :

Enstrümantasyon testleri yürütüldüğünde, hem ana APK hem de test APK'si aynı sınıf yolunu paylaşır. Ana APK ve test APK'si aynı kütüphaneyi (örn. Guava) kullanıyor ancak farklı sürümlerde kullanıyorsa, sürüm oluşturma başarısız olur. Gradle bunu yakalayamazsa, uygulamanız testler sırasında ve normal çalışma sırasında (durumlardan birinde kilitlenme dahil) farklı davranabilir.

Derlemenin başarılı olması için her iki APK'nın da aynı sürümü kullandığından emin olun. Hata dolaylı bir bağımlılıkla ilgili ise (build.gradle dosyasında belirtmediğiniz bir kütüphane), yapılandırmaya daha yeni sürüm için bir bağımlılık eklemeniz yeterlidir

Her iki APK için daha yeni bir sürüm kullanmak için bu satırı build.gradle bağımlılıklarınıza ekleyin :

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

İleride başvurmak için Gradle Console'unuzu kontrol edebilirsiniz ; bu, gradle derleme hatalarına yardımcı olmak için hatanın yanında yararlı bir bağlantı sağlar.


8

Bunun olmasının nedeni diff bağımlılığının diff versiyonunun aynı lib'ini kullanmasıdır.
Yani, bu sorunu çözmek için 3 adım veya (1 adım) vardır.

1 inci

Ekle

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

sizin için build.gradledosyaandroid {...}

2

Android stüdyosu
çalıştırma ./gradlew -q app:dependencieskomutunda terminali açın .

3 üncü

Listedeki Clean Projectandroid stüdyosunun menü çubuğundan tıklayın Build.
Projeyi yeniden inşa edecek ve sonra remove 1. adımda kodlayacaktır.

Belki sadece 2. adımı uygulamanız gerekir. Hata oluştuğunda geri alamıyorum. Bir dene.


7

module: 'jsr305'Ek bir dışlama ifadesi olarak eklediğimde , hepsi benim için iyi çalıştı.

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

})


6

Günlüklerinizde belirtildiği gibi sorun, 3'üncü bağımlılığın farklı sürümlerini kullanmaya çalışan 2 bağımlılıktır. Uygulama derecelendirme dosyasına aşağıdakilerden birini ekleyin:

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

4
  1. Kabul edilen cevap, sorunu çözmenin bir yoludur, çünkü sorunlu bağımlılık için bazı stratejiler uygulayacaktır (com.google.code.findbugs: jsr305) ve bu bağımlılığın bazı sürümünü kullanarak proje etrafındaki sorunu çözecektir. Temel olarak bu kütüphanenin versiyonlarını tüm proje içinde hizalayacaktır.

  2. @Santhosh'dan (ve diğer birkaç kişiden) aynı şekilde çalışması gereken espresso bağımlılığını hariç tutmayı öneren bir yanıt var, ancak projenin aynı kütüphaneye bağımlı başka bağımlılıkları varsa (com.google .code.findbugs: jsr305), yine aynı sorunu yaşayacağız. Dolayısıyla, bu yaklaşımı kullanmak için aynı grubu com.google.code.findbugs: jsr305'e bağımlı olan tüm proje bağımlılıklarından hariç tutmanız gerekir. Şahsen Espresso Katkı ve Espresso Amaçlarının com.google.code.findbugs: jsr305 kullandığını gördüm.

Umarım bu düşünceler birisinin burada tam olarak ne olduğunu ve işlerin nasıl çalıştığını fark etmesine yardımcı olacağını umuyoruz (sadece bazı kodları yapıştırmayın) :).


3

Bunu findbugs kütüphanesinin en son sürümünü kullanmaya zorlamak için bağımlılıklara ekleyin:

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

2

gradle dosya espresso bağımlılıkları silmek benim için çalışıyor.

uygulama derecelendirme dosyasında şu satırları silin:

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

3
Sadece espresso bağımlılığını silerseniz uygulamanızı artık test edemezsiniz, bu nedenle bu çözüm açıkça çalışmaz.
Heinrich

1

Android 3.0.1'de aynı hatayı alan kullanıcılar , compileSdkVersion ve targetSdkVersion sürümlerini 27'ye güncelleyerek ve ayrıca bağımlılıklarda com.android.support:appcompat-v7:27.1.1 ' sürümünü uygulayarak çözebilirler .


1

': App' projesinde app / build.gradle dosyanıza aşağıdakileri ekleyebilirsiniz:

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

1

İçin tepki-yerli-Firebase , bu ekleme app/build.gradlebağımlılıkları bölümünde Bende işe yaptı:

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} bayrağını ilk kez gördüm. Denedim ve hemen benim için çalıştı. Projem için androidx.appcompat v1.0.2'de tutmam gerekiyordu çünkü eklediğim bir kütüphanenin bağımlılığı v1.1.0 olarak ayarlanmıştı.
MikeOscarEcho

0

Ben airbnb deeplink sevk kullanmaya çalışıyordu ve bu hatayı aldım. Ayrıca findbugs grubu annotationProcessor dışlamak zorunda kaldı.

//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'I TEPKİ ET

Yerel çözüm reaksiyonu arıyorsanız, bu snippet'i etkilenen node_modules gradle build dosyanıza yazın, örneğin benim durumumda firebase.

android {
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.0'
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.