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

uttx8gqw  于 2021-07-12  发布在  Java
关注(0)|答案(6)|浏览(484)

为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

这是我的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'
}

然而,如果我为调试而构建,它工作得很好,但是当我生成签名版本时,我收到了一条消息,我试图用google搜索,但似乎没有找到正确的答案。

qgzx9mmu

qgzx9mmu1#

我今天也遇到了类似的问题,我发现:https://github.com/trello/rxlifecycle/issues/154
设法通过在中编辑gradle scripts build.gradle来解决我的问题(module:app)在从属项下添加:

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

我最初尝试了不同的版本号,但出现了一个错误,告诉我要使用哪个版本,因此您可能需要尝试几次。

0s0u357o

0s0u357o2#

我不确定这个问题的确切原因。但是,在尝试了几个选项之后,它自动开始工作
如果您正在使用room组件,并为其编写测试。您需要添加以下依赖项。

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

ibrsph3r3#

对于那些想知道如何解决依赖冲突的问题。
我的依赖项:

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

决议1
我最后检查了一下 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")
    }

我要强行排除 androidx.test:moduleorg.robolectric:robolectric:4.3.1 使用 androidx.test:module:1.1.0 两者都需要的 androidx.test:core & androix.test:runner .
同样适用于 guavalistener 我没有使用truth,所以我删除了它,但是如果您确实需要它,您也可以这样做来排除/选择您想要包含的所需依赖项
决议2
如果您使用roboelectric,您可能希望从@finder2java.lang.runtimeexception:java.lang.runtimeexception:maven-ant-tasks-2.1.3.jar模块中发现的重复类org.apache.maven.artifact.artifact中排除一些依赖项
上面的方法是一个修补程序,您可能需要仔细选择要使用的可传递依赖项,或者只是删除不需要的依赖项( truth 以我为例)
下面是修复错误后的错误生成输出 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'
vddsk6oq

vddsk6oq4#

尝试。方法1:在app中注解掉或删除:与测试“androidtestimplementation”相关的gradle行;方法二:在android studio的“open/edit run”窗口中,选择“app”选项。在此处输入图像描述

ilmyapht

ilmyapht5#

试试这个

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

xpszyzbs6#

多亏了stackoverflow,这对我有用
通过内部app.gradle文件

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

相关问题