简体   繁体   English

找不到满足版本约束的“com.google.code.findbugs:jsr305”版本

[英]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:当为 realse 生成签名的 APK 时,我收到此错误消息:

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这是我的应用程序: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.但是,如果我为调试而构建它工作正常,但是当我生成签名版本时,我收到此消息,我尝试使用谷歌搜索但似乎没有找到正确的答案。

I had a similar problem today and found this : https://github.com/trello/RxLifecycle/issues/154我今天遇到了类似的问题,发现了这个: 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 :通过在依赖项添加下的 (module:app) 中编辑 Gradle Scripts build.gradle 来解决我的问题:

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.我最初尝试了不同的版本号,但收到一个错误,告诉我要使用哪个版本,因此您可能需要尝试几次。

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.如果您正在使用 Room 组件,并为其编写测试。 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"

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决议 1

I ended-up checking for the Required by & Could not resolve [dependency] keyword to determine and choose which version I want to include , eg: androidx.test:monitor:1.1.0 & com.google.guava:listenablefuture:1.0 and then exclude for the rest by doing something like this:我最终检查了Required by & Could not resolve [dependency]关键字确定选择我想要包含的版本,例如: androidx.test:monitor:1.1.0 & com.google.guava:listenablefuture:1.0和然后通过执行以下操作排除其余部分:

    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 .我正在强制从org.robolectric:robolectric:4.3.1排除androidx.test:module并使用androidx.test:core & androix.test:runner所需的androidx.test:module:1.1.0

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 guavalistener也是一样的,我没有使用真相,所以我删除了它,但如果你确实需要它,你可以做同样的事情来排除/选择你想要包含的所需依赖项

Resolutions 2决议 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如果您使用 roboelectric,您可能想从 @finder2 java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class org.apache.maven.artifact.Artifact found in modules maven-ant-任务-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)上面的方法是一个修补程序,您也可能需要仔细选择要使用的传递依赖项,或者只是删除不需要的依赖项( truth是我的示例)

Below is the error build output after fixing the findbugs dependencies conflict, and with the above method, I'm able to fix it.以下是修复findbugs依赖项冲突后的错误构建输出,使用上述方法,我可以修复它。

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

Try.尝试。 Method 1: comment out or delete in the app: gradle lines related to the tests 'androidTestImplementation';方法一:在 app: gradle 相关测试'androidTestImplementation'中注释掉或删除行; Method 2: In the "open / edit run" window of Android Studio, the option "app" should be selected.方法二:在Android Studio的“打开/编辑运行”窗口中,选择“app”选项。 enter image description here在此处输入图片说明

Try this尝试这个

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

This is working for me thanks to StackOverflow由于 StackOverflow,这对我有用

past inside app.gradle file过去在app.gradle文件中

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM