Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot find a version of 'com.google.code.findbugs:jsr305' that satisfies the version constraints

When generated signed APK for realse i get this error message:

Cannot find a version of 'com.google.code.findbugs:jsr305' that satisfies the version constraints: 
   Dependency path 'XX:app:unspecified' --> 'androidx.test.espresso:espresso-core:3.1.2-alpha01' --> 'com.google.code.findbugs:jsr305:2.0.1'
   Constraint path 'XX:app:unspecified' --> 'com.google.code.findbugs:jsr305' strictly '1.3.9' because of the following reason: debugRuntimeClasspath uses version 1.3.9

This is my app:gradle

android {
compileSdkVersion 28
defaultConfig {
    applicationId "com.XX.XX"
    minSdkVersion 25
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}


 }

 dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.guava:guava:22.0-android'

testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.2-alpha01'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.2-alpha01'
}

However if i build for debug it works fine, but when i generate signed release I get this message, ive tried to google but didnt seem to find the right answer.

like image 421
Fugue Avatar asked Feb 04 '19 16:02

Fugue


4 Answers

This is working for me thanks to StackOverflow

past inside app.gradle file

 android 
 {
    configurations.all 
    {
      resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
    }
 }
like image 172
Ankit Singh Avatar answered Nov 03 '22 06:11

Ankit Singh


I had a similar problem today and found this : https://github.com/trello/RxLifecycle/issues/154

Manged to fix my problem by editing the Gradle Scripts build.gradle in the (module:app) under dependancies adding :

androidTestImplementation 'com.google.code.findbugs:jsr305:1.3.9'

I originally tried a different version number but got an error that told me what version to use, so you may need to have a couple of tries.

like image 41
SW1 Avatar answered Nov 03 '22 06:11

SW1


I am not sure of exact cause of this problem. However, after trying several options, it automatically started working

If you are using Room component, and writing tests for it. You need to add the following dependencies.

// optional - Guava support for Room, including Optional and ListenableFuture
implementation "androidx.room:room-guava:2.1.0"

// Test helpers
testImplementation "androidx.room:room-testing:2.1.0"
like image 1
Farruh Habibullaev Avatar answered Nov 03 '22 07:11

Farruh Habibullaev


For those wondering how to solve the dependencies conflict issues.

My dependencies:

// Conflicted transitive dependency for androidx.test:monitor
- org.robolectric:robolectric -> androidx.test:monitor:1.2.0 (forced to use 1.1.0)
- androidx.test:core -> androidx.test:monitor:1.1.0
- androidx.test:runner -> androidx.test:monitor:1.1.0

// Conflicted transitive dependency for com.google.guava:listenablefuture
- androidx.test.ext:truth -> androidx.test:monitor:9999.0 (forced to use 1.0)
- androidx.work:work-runtime -> androidx.test:monitor:1.0

Resolutions 1

I ended-up checking for the Required by & Could not resolve [dependency] keyword to determine and choose which version I want to include, e.g: androidx.test:monitor:1.1.0 & com.google.guava:listenablefuture:1.0 and then exclude for the rest by doing something like this:

    androidTestImplementation(org.robolectric:robolectric:4.3.1) {
        exclude(group = "androidx.test", module = "monitor")
        exclude(group = "com.google.guava", module = "listenablefuture")
    }

I'm forcing the exclude androidx.test:module from org.robolectric:robolectric:4.3.1 and to use the androidx.test:module:1.1.0 that required by both androidx.test:core & androix.test:runner.

Also the same for guavalistener I'm not using truth, so I remove it, but if you do need it, you can do the same to exclude/choose the required dependency that you want to include

Resolutions 2

If you using roboelectric, you might wanna to exclude a few dependencies as well like here from @finder2 java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class org.apache.maven.artifact.Artifact found in modules maven-ant-tasks-2.1.3.jar

The above method was a hotfix, also you might want to choose carefully which transitive dependency that you want to use or just remove the dependency that you don't needed (truth is for my example)

Below is the error build output after fixing the findbugs dependencies conflict, and with the above method, I'm able to fix it.

* What went wrong:
Could not determine the dependencies of task ':app:preDevDebugAndroidTestBuild'.
> Could not resolve all task dependencies for configuration ':app:devDebugAndroidTestRuntimeClasspath'.
   > Could not resolve androidx.test:monitor:{strictly 1.1.0}.
     Required by:
         project :app
      > Cannot find a version of 'androidx.test:monitor' that satisfies the version constraints: 
           Dependency path 'android-etalase-app:app:unspecified' --> 'org.robolectric:robolectric:4.3.1' --> 'androidx.test:monitor:1.2.0'
           Constraint path 'android-etalase-app:app:unspecified' --> 'androidx.test:monitor:{strictly 1.1.0}' because of the following reason: devDebugRuntimeClasspath uses version 1.1.0
           Dependency path 'android-etalase-app:app:unspecified' --> 'androidx.test:core:1.0.0' --> 'androidx.test:monitor:1.1.0'
           Dependency path 'android-etalase-app:app:unspecified' --> 'androidx.test:runner:1.1.0' --> 'androidx.test:monitor:1.1.0'
           Dependency path 'android-etalase-app:app:unspecified' --> 'org.robolectric:robolectric:4.3.1' --> 'org.robolectric:shadows-framework:4.3.1' --> 'androidx.test:monitor:1.2.0'

   > Could not resolve androidx.test:monitor:1.2.0.
     Required by:
         project :app > org.robolectric:robolectric:4.3.1
         project :app > org.robolectric:robolectric:4.3.1 > org.robolectric:shadows-framework:4.3.1
      > Cannot find a version of 'androidx.test:monitor' that satisfies the version constraints: 
           Dependency path 'android-etalase-app:app:unspecified' --> 'org.robolectric:robolectric:4.3.1' --> 'androidx.test:monitor:1.2.0'
           Constraint path 'android-etalase-app:app:unspecified' --> 'androidx.test:monitor:{strictly 1.1.0}' because of the following reason: devDebugRuntimeClasspath uses version 1.1.0
           Dependency path 'android-etalase-app:app:unspecified' --> 'androidx.test:core:1.0.0' --> 'androidx.test:monitor:1.1.0'
           Dependency path 'android-etalase-app:app:unspecified' --> 'androidx.test:runner:1.1.0' --> 'androidx.test:monitor:1.1.0'
           Dependency path 'android-etalase-app:app:unspecified' --> 'org.robolectric:robolectric:4.3.1' --> 'org.robolectric:shadows-framework:4.3.1' --> 'androidx.test:monitor:1.2.0'

   > Could not resolve androidx.test:monitor:1.1.0.
     Required by:
         project :app > androidx.test:core:1.0.0
         project :app > androidx.test:runner:1.1.0
      > Cannot find a version of 'androidx.test:monitor' that satisfies the version constraints: 
           Dependency path 'android-etalase-app:app:unspecified' --> 'org.robolectric:robolectric:4.3.1' --> 'androidx.test:monitor:1.2.0'
           Constraint path 'android-etalase-app:app:unspecified' --> 'androidx.test:monitor:{strictly 1.1.0}' because of the following reason: devDebugRuntimeClasspath uses version 1.1.0
           Dependency path 'android-etalase-app:app:unspecified' --> 'androidx.test:core:1.0.0' --> 'androidx.test:monitor:1.1.0'
           Dependency path 'android-etalase-app:app:unspecified' --> 'androidx.test:runner:1.1.0' --> 'androidx.test:monitor:1.1.0'
           Dependency path 'android-etalase-app:app:unspecified' --> 'org.robolectric:robolectric:4.3.1' --> 'org.robolectric:shadows-framework:4.3.1' --> 'androidx.test:monitor:1.2.0'

   > Could not resolve com.google.guava:listenablefuture:1.0.
     Required by:
         project :app > androidx.work:work-runtime:2.2.0
      > Cannot find a version of 'com.google.guava:listenablefuture' that satisfies the version constraints: 
           Dependency path 'android-etalase-app:app:unspecified' --> 'androidx.work:work-runtime:2.2.0' --> 'com.google.guava:listenablefuture:1.0'
           Constraint path 'android-etalase-app:app:unspecified' --> 'com.google.guava:listenablefuture:{strictly 1.0}' because of the following reason: devDebugRuntimeClasspath uses version 1.0
           Dependency path 'android-etalase-app:app:unspecified' --> 'androidx.test.ext:truth:1.0.0' --> 'com.google.guava:guava:27.0.1-jre' --> 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'

   > Could not resolve com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava.
     Required by:
         project :app > androidx.test.ext:truth:1.0.0 > com.google.guava:guava:27.0.1-jre
      > Cannot find a version of 'com.google.guava:listenablefuture' that satisfies the version constraints: 
           Dependency path 'android-etalase-app:app:unspecified' --> 'androidx.work:work-runtime:2.2.0' --> 'com.google.guava:listenablefuture:1.0'
           Constraint path 'android-etalase-app:app:unspecified' --> 'com.google.guava:listenablefuture:{strictly 1.0}' because of the following reason: devDebugRuntimeClasspath uses version 1.0
           Dependency path 'android-etalase-app:app:unspecified' --> 'androidx.test.ext:truth:1.0.0' --> 'com.google.guava:guava:27.0.1-jre' --> 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
like image 1
mochadwi Avatar answered Nov 03 '22 07:11

mochadwi