我的具有Android测试的Android应用中的依赖项冲突错误

保尔

我正在使用AndroidStudio和Gradle在源代码“ androidTest”中构建带有测试的Android应用。我添加了一个新的依赖项,现在在AndroidStudio或通过“ ./gradlew connectedCheck”运行Android测试时遇到以下问题。解决此问题的首选方法是什么?

'警告:与依赖项冲突'org.somelibrary:library-core'。应用和测试应用的解析版本有所不同。

从Android Gradle插件1.1.1开始,错误显示如下:“警告:与依赖项'com.google.code.findbugs:jsr305'的冲突。应用(1.3.9)和测试应用(2.0.1)的已解决版本不同。”

保尔

在为您的应用构建并运行Android测试时,Android Gradle插件会生成两个APK(应用和测试APK)。在gradle运行期间,将比较应用程序和测试版本的依赖关系。当版本号相同时,两者中都存在的依赖项将从测试版本中删除。当使用相同的依赖项,但版本号不同时,您将需要手动解决依赖项冲突,并且会出现此错误。

要解决冲突,首先需要弄清楚两个冲突的版本。如果您尚未使用Android Gradle插件v1.1.1 +,则如果升级到该版本,错误消息将为您提供冲突的版本号。选择您需要的那个。

*在冲突编号之间进行选择时,请务必记住,除非您已覆盖默认的gradle依赖关系解析策略(failOnVersionConflict,否则应用程序内部将发生冲突,并且测试版本(单独)将通过选择较大版本来解决。

现在,您需要决定如何解决冲突。如果您需要强制使用库的较低版本(1.2),则需要强制将应用程序和测试版本的依赖关系都解析为库的特定版本,如下所示:

// Needed to resolve app vs test dependencies, specifically, transitive dependencies of
// libraryq and libraryz. Forcing the use of the smaller version after regression testing.
configurations.all {
    resolutionStrategy.force 'org.somelibrary:library-core:1.2'
}

如果您需要使用2.1版本的依赖关系,则也可以使用上面的代码段,但是无论传递依赖更新是否需要,都永远不会开始使用库的较新版本。另外,您也可以向应用程序或测试版本添加新的常规依赖项(无论使用哪种1.2版本的依赖项)。这将迫使应用程序或测试构建依赖于(先前提到的)gradle依赖关系解析策略,因此对该构建使用库的2.1版本。

// Force the use of 2.1 because the app requires that version in libraryq transitively.
androidTestCompile 'org.somelibrary:library-core:2.1'

要么

// Force the use of 2.1 because the Android Tests require that version in libraryz.
compile 'org.somelibrary:library-core:2.1'

在此解决方案中,该错误可能会再次出现,例如说版本3.3,此错误开始仅在测试或应用程序构建之一中使用,但这通常是可以的,因为在构建时会通知您另一个不兼容问题,并且可以采取措施。

更新:此问题的一些新解决方案现在也列出了从声明的依赖项中排除特定的传递性依赖项。这是一个有效的解决方案,但会使开发人员承担更多责任。就像上面的强制依赖解决方案建议将版本硬编码到构建中一样,exclude-transitive-dependency解决方案专门覆盖了库的规定要求。有时,库开发人员会在其他各种库中遇到bug或解决bug,因此,在实施这些解决方案时,您可能会面临不得不隐藏非常难理解的bug的风险。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有依赖项的Android冲突appcompat

来自分类Dev

在Android中创建具有依赖项的库

来自分类Dev

在Android中创建具有依赖项的库

来自分类Dev

打包具有依赖项的Android AAR

来自分类Dev

Android Studio-在单个项目中具有共同依赖项的多个android应用

来自分类Dev

Android中的gradle依赖项错误

来自分类Dev

Android Gradle应用程序:connectedCheck从依赖项运行测试

来自分类Dev

当依赖项中的项具有相同名称时,如何处理冲突?

来自分类Dev

Android Studio中的build.gradle文件错误无法应用主要和依赖项

来自分类Dev

Android MVVM。传递具有Context作为依赖项的对象

来自分类Dev

当依赖项中的项目具有相同名称时,如何处理冲突?

来自分类Dev

错误:与依赖项'com.android.support冲突:从23.1.1更新到23.4.0时

来自分类Dev

如何在具有Android Studio的真实设备中测试android应用程序?

来自分类Dev

将具有“number.xx”等版本的 InMobi 依赖项添加到 Android 项目中会出现错误

来自分类Dev

构建项目时android studio中的循环依赖项错误

来自分类Dev

如何在我的Android库中包含依赖项

来自分类Dev

使用Jasmine&Karma的AngularJS中具有依赖项的工厂的单元测试失败

来自分类Dev

如何使用在方法中具有依赖项的moq来对类进行单元测试?

来自分类Dev

如何在多个版本的Android中测试我的Android应用

来自分类Dev

发布具有SNAPSHOT测试依赖项的项目

来自分类Dev

具有测试依赖项的Pub变压器

来自分类Dev

测试具有要监视的依赖项的AngularJS服务

来自分类Dev

具有依赖项的可测试控制器

来自分类Dev

PHPUnit测试具有依赖项的类的特定方法

来自分类Dev

具有依赖项的可测试控制器

来自分类Dev

具有测试范围的递归Maven依赖项

来自分类Dev

测试具有深层嵌套依赖项的类的行为

来自分类Dev

引用模块化应用程序中具有相同依赖项的多版本

来自分类Dev

在不使用Xcode的macOS中开发具有依赖项的应用程序

Related 相关文章

  1. 1

    带有依赖项的Android冲突appcompat

  2. 2

    在Android中创建具有依赖项的库

  3. 3

    在Android中创建具有依赖项的库

  4. 4

    打包具有依赖项的Android AAR

  5. 5

    Android Studio-在单个项目中具有共同依赖项的多个android应用

  6. 6

    Android中的gradle依赖项错误

  7. 7

    Android Gradle应用程序:connectedCheck从依赖项运行测试

  8. 8

    当依赖项中的项具有相同名称时,如何处理冲突?

  9. 9

    Android Studio中的build.gradle文件错误无法应用主要和依赖项

  10. 10

    Android MVVM。传递具有Context作为依赖项的对象

  11. 11

    当依赖项中的项目具有相同名称时,如何处理冲突?

  12. 12

    错误:与依赖项'com.android.support冲突:从23.1.1更新到23.4.0时

  13. 13

    如何在具有Android Studio的真实设备中测试android应用程序?

  14. 14

    将具有“number.xx”等版本的 InMobi 依赖项添加到 Android 项目中会出现错误

  15. 15

    构建项目时android studio中的循环依赖项错误

  16. 16

    如何在我的Android库中包含依赖项

  17. 17

    使用Jasmine&Karma的AngularJS中具有依赖项的工厂的单元测试失败

  18. 18

    如何使用在方法中具有依赖项的moq来对类进行单元测试?

  19. 19

    如何在多个版本的Android中测试我的Android应用

  20. 20

    发布具有SNAPSHOT测试依赖项的项目

  21. 21

    具有测试依赖项的Pub变压器

  22. 22

    测试具有要监视的依赖项的AngularJS服务

  23. 23

    具有依赖项的可测试控制器

  24. 24

    PHPUnit测试具有依赖项的类的特定方法

  25. 25

    具有依赖项的可测试控制器

  26. 26

    具有测试范围的递归Maven依赖项

  27. 27

    测试具有深层嵌套依赖项的类的行为

  28. 28

    引用模块化应用程序中具有相同依赖项的多版本

  29. 29

    在不使用Xcode的macOS中开发具有依赖项的应用程序

热门标签

归档