Kesalahan: Konflik dengan ketergantungan 'com.google.code.findbugs: jsr305'


241

Saya membuat proyek baru di Android Studio 2.2 Pratinjau 1 dengan Aplikasi Android dan modul Backend dengan Google Messaging. Ini adalah file aplikasi:

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

Tapi itu memberi:

Kesalahan: Konflik dengan ketergantungan 'com.google.code.findbugs: jsr305'. Versi yang diselesaikan untuk aplikasi (1.3.9) dan aplikasi uji (2.0.1) berbeda. Lihat http://g.co/androidstudio/app-test-app-conflict untuk detailnya.

Saya baru mengenal Android dan tidak dapat menemukan kesalahan apa ini. Bagaimana saya memperbaikinya?

Jawaban:


642

Di aplikasi Anda, build.gradletambahkan yang berikut ini:

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

Menerapkan Gradle untuk hanya mengompilasi nomor versi yang Anda sebutkan untuk semua dependensi, tidak peduli nomor versi mana yang dependensi telah nyatakan.


57
Mungkin bermanfaat untuk menjelaskan cuplikan ini.
Andrew Gallasch

18
@Andy secara eksplisit memberi tahu Gradle versi mana yang harus dikompilasi (tidak peduli nomor versi mana yang menyatakan dependensi) ... saat menegakkan v juga 2.0.1bekerja (apa pun, kedua versi harus dipaksa untuk identik).
Martin Zeitler

2
@ MartinZeitler tetapi tidak benar-benar menjelaskan dari mana masalah ini berasal. Saya hari ini mendapatkan masalah ini dengan 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
Terima kasih banyak. Ini masih sangat membantu setelah 3 setengah tahun. ;)
Kartik

1
@Kartik haha ​​jeeze, sudah lama sekali! Jangan khawatir, terima kasih, saya harap ini membantu! Saya sudah lama menghentikan pengembangan Android tapi saya yakin suatu hari saya akan mengambilnya lagi 😊
gbhall

170

Ini karena espresso. Anda dapat menambahkan yang berikut ke aplikasi Anda build.gradeuntuk mengurangi ini.

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

1
Tidak bekerja Pertanyaan yang ditetapkan sebagai jawaban berfungsi.
Warpzit

2
@Warpzit - Ini bekerja untuk saya (seperti halnya jawaban yang diterima).
Ted Hopp

@TedHopp Saya akhirnya melakukan sesuatu yang lain. Saya punya masalah dengan kompilasi gradle untuk youtube api jadi saya akhirnya menggunakan lib jar sebagai gantinya.
Warpzit

2
Ini kemungkinan besar jawaban yang dicari semua orang. Dalam kebanyakan kasus, Android Studio menyertakan Espresso secara default di daftar dependensi, dan Anda perlu mengecualikan beberapa hal untuk menggunakannya di samping perpustakaan lain. Terlepas dari apa yang dikatakan @Santhosh, saya jugaexclude group: 'com.android.support', module: 'support-annotations'
milosmns

1
Yah saya baru saja menghapus androidTestCompile ('com.android.support.test.espresso: espresso-core: 2.2.2') {kecualikan grup: 'com.google.code.findbugs'} dan berhasil: D karena terutama masalah dengan perbaikan Anda adalah bahwa beberapa orang sudah memiliki * androidTestCompile ('com.android.support.test.espresso: espresso-core: 2.2.2', {kecualikan grup: 'com.android.support', modul: 'support-annotations' }) * sesuatu seperti ini di file gradle mereka, dan menambahkan kecualikan lainnya adalah melempar pengecualian, semua skrip gradail hujan es, masih menjadi upvote untuk Anda :)
ShayHaned

31

METODE 1: Saya menghapus androidTestCompile pada garis inti-espresso yang secara otomatis termasuk dalam proyek baru. Kemudian kompilasi Android Studio saya bersih.

AndroidTestCompile ada di "build.gradle (Module: app)":

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

Saya tidak tahu apakah penghapusan ini akan memiliki masalah di jalan, tetapi pasti berhasil untuk proyek saya saat ini.

METODE 2: Menambahkan pengecualian pada karya findbugs juga:

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

METODE 3: Memaksa kompilasi dengan versi tertentu:

(Berikut ini saya paksakan untuk dikompilasi dengan versi yang lebih tinggi.)

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

ada pembaruan versi: androidTestCompile 'com.google.code.findbugs: jsr305: 3.0.1'
Insoft

18

Dari Panduan Pengguna Plugin Gradle :

Saat tes instrumentasi dijalankan, APK utama dan APK uji berbagi classpath yang sama. Gradle build akan gagal jika APK utama dan APK uji menggunakan pustaka yang sama (misalnya Guava) tetapi dalam versi yang berbeda. Jika gradle tidak mengetahui hal itu, aplikasi Anda dapat berperilaku berbeda selama pengujian dan selama menjalankan normal (termasuk menabrak salah satu kasus).

Agar pembangunan berhasil, pastikan kedua APK menggunakan versi yang sama. Jika kesalahannya adalah tentang dependensi tidak langsung (perpustakaan yang tidak Anda sebutkan di build.gradle), tambahkan saja dependensi untuk versi yang lebih baru ke konfigurasi

Tambahkan baris ini ke dependensi build.gradle Anda untuk menggunakan versi yang lebih baru untuk kedua APK:

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

Untuk referensi di masa mendatang, Anda dapat memeriksa Konsol Gradle Anda dan itu akan memberikan tautan bermanfaat di sebelah kesalahan untuk membantu dengan kesalahan pembangunan gradle.


8

Alasan mengapa hal ini terjadi adalah karena dependensi menggunakan lib versi diff yang sama.
Jadi, ada 3 langkah atau (1 langkah) untuk menyelesaikan masalah ini.

1

Menambahkan

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

ke build.gradlefile Anda diandroid {...}

Ke-2

Buka terminal di perintah android studio
run ./gradlew -q app:dependencies.

Ke-3

Klik Clean Projectdari menu bar studio android dalam Builddaftar.
Ini akan membangun kembali proyek, dan kemudian removekode pada langkah 1.

Mungkin Anda hanya perlu menjalankan langkah ke-2. Saya tidak bisa mengembalikan ketika kesalahan terjadi. Selamat mencoba.


7

Ketika saya menambahkan module: 'jsr305'sebagai pernyataan pengecualian tambahan, semuanya bekerja dengan baik untuk saya.

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

})


6

Masalahnya, sebagaimana dinyatakan dalam log Anda, adalah 2 dependensi mencoba menggunakan versi dependensi ke-3 yang berbeda. Tambahkan salah satu dari berikut ini ke file app-gradle:

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

4
  1. Jawaban yang diterima adalah salah satu cara untuk memperbaiki masalah, karena itu hanya akan menerapkan beberapa strategi untuk ketergantungan yang bermasalah (com.google.code.findbugs: jsr305) dan itu akan menyelesaikan masalah di sekitar proyek, menggunakan beberapa versi dari ketergantungan ini. Pada dasarnya ini akan menyelaraskan versi perpustakaan ini di dalam keseluruhan proyek.

  2. Ada jawaban dari @Santhosh (dan beberapa orang lain) yang menyarankan untuk mengecualikan ketergantungan yang sama untuk espresso, yang seharusnya bekerja dengan cara yang sama, tetapi jika proyek memiliki beberapa dependensi lain yang bergantung pada perpustakaan yang sama (com.google .code.findbugs: jsr305), sekali lagi kita akan memiliki masalah yang sama. Jadi untuk menggunakan pendekatan ini, Anda harus mengecualikan grup yang sama dari semua dependensi proyek, yang bergantung pada com.google.code.findbugs: jsr305. Saya pribadi menemukan bahwa Espresso Contrib dan Intents Espresso juga menggunakan com.google.code.findbugs: jsr305.

Saya harap pemikiran ini akan membantu seseorang untuk menyadari apa sebenarnya yang terjadi di sini dan bagaimana segala sesuatunya bekerja (bukan hanya menyalin tempel beberapa kode) :).


3

Tambahkan ini ke dependensi untuk memaksakan menggunakan perpustakaan findbugs versi terbaru:

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

2

menghapus ketergantungan espresso dalam file gradle berfungsi untuk saya.

hapus baris-baris itu di file gradle aplikasi:

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

3
Jika Anda hanya menghapus ketergantungan espresso, Anda tidak dapat menguji aplikasi lagi sehingga solusi ini jelas tidak berfungsi.
Heinrich

1

Mereka yang mendapatkan kesalahan yang sama di Android 3.0.1, dapat menyelesaikannya hanya dengan memperbarui versi dari compileSdkVersion dan targetSdkVersion untuk 27 dan juga Melaksanakan com.android.support:appcompat-v7:27.1.1' di dependensi .


1

Dalam proyek ': aplikasi' Anda dapat menambahkan yang berikut ke file app / build.gradle Anda:

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

1

Untuk reaksi-asli-firebase , menambahkan ini ke app/build.gradlebagian dependensi membuatnya berfungsi untuk saya:

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}

Ini adalah pertama kalinya saya melihat bendera {force = true}. Saya mencobanya dan langsung bekerja untuk saya. Saya perlu menjaga androidx.appcompat di v1.0.2 untuk proyek saya karena perpustakaan yang saya tambahkan memiliki ketergantungan yang diatur ke v1.1.0.
MikeOscarEcho

0

Saya mencoba menggunakan pengiriman deeplink airbnb dan mendapatkan kesalahan ini. saya juga harus mengeluarkan grup findbugs dari annotationProcessor.

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

REAKSI ALAMI

Jika Anda mencari reaksi solusi asli, maka tulis snippet ini dalam file build gradasi node_modules Anda, mis. Firebase dalam kasus saya.

android {
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.0'
    }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.