- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用 AndroidStudio 和 Gradle 构建我的 Android 应用,并在“androidTest”源目录中进行测试。我添加了一个新的依赖项,现在在 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 Plugin 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 版本的依赖项,那么您也可以使用上面的代码 fragment ,但无论传递依赖项更新是否需要它,您都永远不会开始使用更新版本的库。或者,您还可以向应用程序或测试版本添加新的正常依赖项(无论哪个尝试使用 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 解决方案专门覆盖了库的规定要求。有时,库开发人员会遇到各种其他库中的错误或解决错误,因此当您实现这些解决方案时,您可能会冒一些风险,可能不得不追查非常模糊的错误。
关于android - 我的具有 Android 测试的 Android 应用程序中的依赖冲突错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28641445/
我已经使用 vue-cli 两个星期了,直到今天一切正常。我在本地建立这个项目。 https://drive.google.com/open?id=0BwGw1zyyKjW7S3RYWXRaX24tQ
您好,我正在尝试使用 python 库 pytesseract 从图像中提取文本。请找到代码: from PIL import Image from pytesseract import image_
我的错误 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference
我已经训练了一个模型,我正在尝试使用 predict函数但它返回以下错误。 Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]])
根据Microsoft DataConnectors的信息我想通过 this ODBC driver 创建一个从 PowerBi 到 PostgreSQL 的连接器使用直接查询。我重用了 Micros
我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码: package soundmanagement; impo
我在Heroku上部署了一个应用程序。我正在使用免费服务。 我经常收到以下错误消息。 PG::Error: ERROR: out of memory 如果刷新浏览器,就可以了。但是随后,它又随机发生
我正在运行 LAMP 服务器,这个 .htaccess 给我一个 500 错误。其作用是过滤关键字并重定向到相应的域名。 Options +FollowSymLinks RewriteEngine
我有两个驱动器 A 和 B。使用 python 脚本,我在“A”驱动器中创建一些文件,并运行 powerscript,该脚本以 1 秒的间隔将驱动器 A 中的所有文件复制到驱动器 B。 我在 powe
下面的函数一直返回这个错误信息。我认为可能是 double_precision 字段类型导致了这种情况,我尝试使用 CAST,但要么不是这样,要么我没有做对...帮助? 这是错误: ERROR: i
这个问题已经有答案了: Syntax error due to using a reserved word as a table or column name in MySQL (1 个回答) 已关闭
我的数据库有这个小问题。 我创建了一个表“articoli”,其中包含商品的品牌、型号和价格。 每篇文章都由一个 id (ID_ARTICOLO)` 定义,它是一个自动递增字段。 好吧,现在当我尝试插
我是新来的。我目前正在 DeVry 在线学习中级 C++ 编程。我们正在使用 C++ Primer Plus 这本书,到目前为止我一直做得很好。我的老师最近向我们扔了一个曲线球。我目前的任务是这样的:
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我的网站中有一段代码有问题;此错误仅发生在 Internet Explorer 7 中。 我没有在这里发布我所有的 HTML/CSS 标记,而是发布了网站的一个版本 here . 如您所见,我在列中有
如果尝试在 USB 设备上构建 node.js 应用程序时在我的树莓派上使用 npm 时遇到一些问题。 package.json 看起来像这样: { "name" : "node-todo",
在 Python 中,您有 None单例,在某些情况下表现得很奇怪: >>> a = None >>> type(a) >>> isinstance(a,None) Traceback (most
这是我的 build.gradle (Module:app) 文件: apply plugin: 'com.android.application' android { compileSdkV
我是 android 的新手,我的项目刚才编译和运行正常,但在我尝试实现抽屉导航后,它给了我这个错误 FAILURE: Build failed with an exception. What wen
谁能解释一下?我想我正在做一些非常愚蠢的事情,并且急切地等待着启蒙。 我得到这个输出: phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108
我是一名优秀的程序员,十分优秀!