找不到满足版本限制的'com.google.code.findbugs:jsr305'版本

时间:2019-02-04 16:38:21

标签: java android gradle build apk

生成签名的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进行搜索,但似乎找不到正确的答案。

6 个答案:

答案 0 :(得分:1)

我不确定此问题的确切原因。但是,尝试了几种方法后,它会自动开始工作

如果您正在使用Room组件,并为此编写测试。您需要添加以下依赖项。

>>> l = "left aligned"
>>> print(f"{l.ljust(30)}")
left aligned                  

>>> r = "right aligned"
>>> print(f"{r.rjust(30)}")
                 right aligned

>>> print(f"{c.center(30)}")
        center aligned        

答案 1 :(得分:1)

对于那些想知道如何解决依赖性冲突问题的人。

我的依赖项:

// 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 byCould not resolve [dependency] 关键字,以 确定 < em>选择 我要 包含 的版本,例如:androidx.test:monitor:1.1.0com.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:module中排除org.robolectric:robolectric:4.3.1,并使用androidx.test:module:1.1.0androidx.test:core都需要的androix.test:runner

对于guavalistener也是一样,我没有使用真相,因此我将其删除,但是如果您确实需要它,则可以执行相同的操作以排除/选择 所需的依赖项< / em> 您要包含的

解决方案2

如果您使用roboelectric,您可能想从@ finder2 java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class org.apache.maven.artifact.Artifact found in modules maven-ant-tasks-2.1.3.jar

中排除一些依赖项

上述方法是一个修复程序,您可能还需要仔细选择要使用的传递依赖项,或者只是删除不需要的依赖项(以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'

答案 2 :(得分:0)

我今天有一个类似的问题,发现了这个问题: https://github.com/trello/RxLifecycle/issues/154

通过在依赖项下编辑(module:app)中的Gradle脚本build.gradle来解决我的问题,

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

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

答案 3 :(得分:0)

尝试。 方法1: 在应用中注释掉或删除:与测试“ androidTestImplementation”相关的gradle行; 方法2: 在Android Studio的“打开/编辑运行”窗口中,应选择选项“应用”。 enter image description here

答案 4 :(得分:0)

尝试

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

答案 5 :(得分:0)

这对我有用,这要感谢StackOverflow

粘贴 app.gradle 文件

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