找不到满足版本限制的 'com.google.code.findbugs:jsr305' 版本
Cannot find a version of 'com.google.code.findbugs:jsr305' that satisfies the version constraints
当真正生成签名 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 但似乎没有找到正确的答案。
我今天遇到了类似的问题,发现了这个:
https://github.com/trello/RxLifecycle/issues/154
通过编辑 Gradle 脚本 build.gradle 在依赖项下的 (module:app) 添加来解决我的问题:
androidTestImplementation 'com.google.code.findbugs:jsr305:1.3.9'
我最初尝试了不同的版本号,但出现了一个错误,告诉我要使用哪个版本,因此您可能需要尝试几次。
我不确定这个问题的确切原因。然而,在尝试了几个选项后,它自动开始工作
如果您正在使用 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"
试试。
方法一:
在应用程序中注释掉或删除:gradle 与测试相关的行 'androidTestImplementation';
方法二:
在 Android Studio 的 "open / edit run" window 中,应选择 "app" 选项。
enter image description here
对于那些想知道如何解决依赖冲突问题的人。
我的依赖项:
// 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
然后 exclude 其余的通过做这样的事情:
androidTestImplementation(org.robolectric:robolectric:4.3.1) {
exclude(group = "androidx.test", module = "monitor")
exclude(group = "com.google.guava", module = "listenablefuture")
}
我强制从 org.robolectric:robolectric:4.3.1
中排除 androidx.test:module
并使用 androidx.test:core
和 androix.test:runner
都需要的 androidx.test:module:1.1.0
。
guavalistener
也是一样,我没有使用 truth,所以我删除了它,但是如果你确实需要它,你可以对 exclude/choose 和 做同样的事情您要包含的 必需依赖项
决议 2
如果你使用 roboelectric,你可能想要排除一些依赖关系,就像这里来自 @finder2
以上方法是一个修补程序,您可能还需要仔细选择要使用的传递依赖项或删除不需要的依赖项(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'
试试这个
android
{
configurations.all
{
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
感谢 Whosebug,这对我有用
过去里面 app.gradle 文件
android
{
configurations.all
{
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
当真正生成签名 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 但似乎没有找到正确的答案。
我今天遇到了类似的问题,发现了这个: https://github.com/trello/RxLifecycle/issues/154
通过编辑 Gradle 脚本 build.gradle 在依赖项下的 (module:app) 添加来解决我的问题:
androidTestImplementation 'com.google.code.findbugs:jsr305:1.3.9'
我最初尝试了不同的版本号,但出现了一个错误,告诉我要使用哪个版本,因此您可能需要尝试几次。
我不确定这个问题的确切原因。然而,在尝试了几个选项后,它自动开始工作
如果您正在使用 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"
试试。 方法一: 在应用程序中注释掉或删除:gradle 与测试相关的行 'androidTestImplementation'; 方法二: 在 Android Studio 的 "open / edit run" window 中,应选择 "app" 选项。 enter image description here
对于那些想知道如何解决依赖冲突问题的人。
我的依赖项:
// 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
然后 exclude 其余的通过做这样的事情:
androidTestImplementation(org.robolectric:robolectric:4.3.1) {
exclude(group = "androidx.test", module = "monitor")
exclude(group = "com.google.guava", module = "listenablefuture")
}
我强制从 org.robolectric:robolectric:4.3.1
中排除 androidx.test:module
并使用 androidx.test:core
和 androix.test:runner
都需要的 androidx.test:module:1.1.0
。
guavalistener
也是一样,我没有使用 truth,所以我删除了它,但是如果你确实需要它,你可以对 exclude/choose 和 做同样的事情您要包含的 必需依赖项
决议 2
如果你使用 roboelectric,你可能想要排除一些依赖关系,就像这里来自 @finder2
以上方法是一个修补程序,您可能还需要仔细选择要使用的传递依赖项或删除不需要的依赖项(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'
试试这个
android
{
configurations.all
{
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
感谢 Whosebug,这对我有用
过去里面 app.gradle 文件
android
{
configurations.all
{
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}