依赖库版本不一致导致的问题的解决思路

Android 解决第三方库版本冲突 在开发游戏SDK时会使用一些第三方库,例如上文提到的 OkHttp ,或者集成某些第三方,而这些第三方使用的系统库(例如 supportv7)和项目组使用的版本不一致,在编译时就会出现版本冲突问题。尽量不使用第三库,例如针对 OkHttp ,如果没有特殊的需求(比如需要中断某个请求),可以不使用 OkHttp ,自行开发一个基于系统 API 的网络框架。解决版本冲突。以下提供一些解决版本冲突的方法。 阅读详情

       我们在写代码时候总会借鉴一些第三方库,有的是别人写的比较优秀的,有的则是google官方提供的,但是我们在依赖之后编译运行时候总会出各种各样的问题,究竟是怎么回事呢?

      前两天自己遇到了这么一个问题,编译时候报错如下:“Error:Execution failed for task ':app:preDebugBuild'.

> Android dependency 'com.android.support:appcompat-v7' has different version for the compile (27.0.2) and runtime (27.1.0) classpath. You should manually set the same version via DependencyResolution”,这个日志已经写的很清楚了,就是com.android.support:appcompat-v7这个依赖库有两个不同的编译版本,我们应该依赖的版本是同样的,但是自己看了下自己的gradle文件里面明明就只依赖了一个com.android.support:appcompat-v7:27.1.0这个版本啊,怎么就有多个版本了呢?那肯定是自己依赖的库里面又依赖了这个support:appcompat的库,其实如果一个个的找到底是哪个依赖库也用了这个support:appcompat库,那么会很麻烦,那么有没有一种方式就是直接指定所有的库都使用同一个版本,那么由于依赖库多而导致的版本不一致的问题不就迎刃而解了么?答案是肯定的:有。

      是有方法设置依赖库的版本的,针对上面的support:appcompat库我们可以像下面一样子来指定自己所依赖的版本:

configurations.all {
    //循环一个个的依赖库
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        //获取当前循环到的依赖库
        def requested = details.requested
        //如果这个依赖库群组的名字是com.android.support
        if (requested.group == 'com.android.support') {
            //且其名字不是以multidex开头的
            if (!requested.name.startsWith("multidex")) {
                //这里指定需要统一的依赖版本
                details.useVersion '27.1.0'
            }
        }
    }
}

上面注释写的也比较明白,其实原理就是在编译时候指定了一个群组的依赖库的版本,当然如果自己有需要也可以设置某一个依赖库的依赖版本,稍微解释下群组概念:'com.android.support:appcompat-v7:27.1.0',前面的com.android.support是群组名称,因为android有很多support库,后面的appcompat-v7是具体库的名字,而27.1.0则是版本号,所以上面那段用Groovy写的代码的意思就是除了support里面的multidex库其他的都统一用27.1.0版本号。

       有些同学说我不想指定一个群组的只想指定某一个库的可以吗?当然可以 ,只不过上面的判断只用requested.name来判断就好了,不过这个可能有个隐藏问题,就是如果两个不同的群组下面有名字相同的库就麻烦了,不过这种情况发生的概率比较小。

        以上就是针对依赖库版本不一致导致问题的解决方法,特别是那种依赖库里面还有依赖库的情况。有问题,欢迎批评指正。

Ubuntu 18.04降级VS Code版本解决依赖库冲突的完整指南 本文提供了在Ubuntu 18.04系统上降级VS Code版本以解决依赖库冲突的完整指南。针对常见的libc6等依赖库版本过低问题,详细介绍了清理高版本、下载指定版本安装包、安装步骤及常见问题解决方案,帮助开发者快速恢复稳定的开发环境。 阅读详情

相关推荐

使用PE信息查看工具和Dependency Walker工具排查因为库版本不对导致程序启动报错的问题

本文详细介绍如何使用PE信息查看工具和Dependency Walker工具排查因为库版本不对导致程序启动报错的问题。

dvlinker的技术专栏 7325

C++编译时遇到protobuf版本不一致的问题

我们的项目中会引用到各种sdk,项目代码和sdk中都有可能会使用protobuf。当protobuf版本不一致时,编译就会报错。有两种可能的报错信息This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer headers. Please update your headers.This file was generated by an older version

zhanglehes的专栏 5088

FoundationPose复现及Realsense应用

FoundationPose是一个统一的基础模型,用于6D对象姿态估计和跟踪,支持基于模型和无模型的设置。在测试时可以立即应用于未见过的新对象,无需微调,只要给出其CAD模型,或者捕获少量RGBD参考图像。得益于统一框架,下游姿态估计模块在两种3D模型设置中都是相同的,当没有CAD模型时,使用神经隐式表示进行高效的新视角合成。通过大规模合成训练,辅以大型语言模型(LLM)、一种基于transformer的新架构和对比学习公式,实现了强大的泛化能力。

m0_56661101的博客 1万+

嵌入式开发经常遇到编译器和C++版本不匹配的问题+C/Cpp运行时库

文章目录C运行时库(C Run-time Library)详解一、什么是C运行时库二、Visual C++中对运行时库的支持参考链接C/Cpp运行时库一、what is 运行时库二、如何链接运行时库三、不同版本和形态的运行时库3.1 运行时库对应的文件3.2 运行时库文件命名规则四、运行时库使用注意事项参考链接 C运行时库(C Run-time Library)详解 一、什么是C运行时库 就是 ...

fgh123的博客 2555

保姆级教程:在ESXi 8.0上为NVIDIA ConnectX-5/6网卡开启SR-IOV(从BIOS到虚拟机配置)

本文提供在ESXi 8.0上为NVIDIA ConnectX-5/6网卡开启SR-IOV的详细教程,涵盖BIOS设置、固件配置、驱动优化及虚拟机部署。通过SR-IOV技术,显著提升虚拟化环境中的网络性能,适用于高性能计算、AI训练等场景。

weixin_26934905的博客 455

SAP S4HANA F-02报错:更正统一日记账分类账的定制设置

消息号 FINS_ACDOC_CUST201 使用FINS_CUST_CONS_CHK_P去检查公司代码和分类账的设置 提示:过账期间变式为空(分类账 E1/公司代码 7500) 检查了表FINSC_LD_CMP 显示有分类账未分配过账期间变式 解决:后台配置定义分类账和货币类型的设置把过账变式维护下 路径:财务会计→财务会计全局设置→分类账→分类账→定义分类账和货币类型的设置 选中需要维护的分类账双击左侧的“分类账的公司代码设置”,找到对应的公司代码维护上即可。

qq_45068743的博客 6448

引用第三方库时支持版本不一致的问题

com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 26.1.0, 25.3.1. Examples include com.android.support:animated-

chocfun的博客 4274

浅谈MOS管的发热原因和解决办法

解读一下开关管发热原因,解决方案和开关损耗测试。

qq_45508321的博客 1万+

flutter-使用第三方库,编译和运行版本不一致问题

问题: 使用了第三方库--barcode_scan ^1.0.0出现了编译和运行不一致问题 Android dependency 'androidx.XX:XX-runtime' has different version for the compile (1.0.0-rc01) and runtime (1.0.0) classpath. (如:And...

Andy_Lin的博客 5064

节省人力成本40%!仓储物流AI机器人调度系统实战案例(含路径规划算法与系统架构图)

首先,我们需要定义一个Node类self.x = x # 节点x坐标self.y = y # 节点y坐标self.g = g # 从起点到当前节点的实际成本(g值)self.h = h # 从当前节点到终点的启发式成本(h值)self.f = g + h # 总成本(f值)self.parent = None # 父节点(用于回溯路径)self.task_id = task_id # 任务IDself.priority = priority # 任务优先级(1=最高,5=最低)

小程序开发 948

2025届程序技术类笔试题

希尔排序在直接插入排序的基础上进行了改进,它通过比较相距一定间隔的元素来进行,各轮比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一轮排序为止。某人逆着水流的方向向岸边划船,每次行进前进x米后需要休息一下,休息期间船会自行倒退y米,每次休息后再次行进,前进距离缩短1/5,若起始距离岸边为m米,问:能否到达岸上,需要行进多少次才能上岸。直接插入排序的原理是将第i个元素插入前面i-1个已排好序的记录中,将比第i个元素大的记录依次向后移动一个位置,将第i个元素插入空位。第二轮相邻比较,后移2次。

博客 591

cjson库版本不一致,导致解析失败

cjson库版本不一致,导致解析失败 现象 在编译一个程序demo的时候,需要继承一个第三方库libexample.so,第三方库用到了cjson,本身这个程序也用到了cjson,由于两者用的cjson的版本不一致,导致json解析失败…… 旧版本cjson 第三方库libexample.so使用的旧版本的cjson,cjson-types截图如下: 新版本cjson 程序demo使用的是新版本...

u014228701的博客 1409

SAP S/4HANA 中 RAP 业务对象接口的消费模式

本文探讨了SAP S/4HANA中RAP业务对象接口的消费模式,重点介绍了通过EML直接调用和CDS投影两种Clean Core开发路径。文章分析了BO Interface作为稳定契约的价值,并提供了BAdI集成、OData服务发布等实际场景案例,同时对比了OData V2/V4的技术选型考量,最后强调了ADT向导使用中的DCL权限注意事项。全文旨在帮助开发者构建升级友好的业务对象消费方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 757

解决 bin 文件在低版本 glibc 运行问题

解决高版本可执行文件在低版本服务器中运行出现/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found。`问题

weixin_34829061的博客 2817

【WRFDA第三期】OBSPROC namelist 变量总结

OBSPROC namelist 变量总结

WW、forever的博客 1120

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

程序遇到SIGILL,考虑依赖库接口和库版本是否一致

如果你的程序遇到SIGILL, Illegal instruction问题,你应当考虑一下是否存在版本不一致的问题,比如依赖的共享库接口变了,但你仍在使用老版本的库,问题的现象通常是诡异,而且你觉得不可能挂的地方,而通常是挂在你对依赖库的调用之处。简单点说就是:头文件更新了,但库文件还没有更新。 转载于:https://www.cnblog...

weixin_33775572的博客 125

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

flutter 依赖库版本不一致问题

最近正好遇见版本库依赖的问题:我是直接调整项目版本,找合适的固定依赖库版本 一早看见郭神发的文章记录一下: flutter的版本管理 在我们的开发过程中遇到了一个问题,就是各个开发者使用的flutter sdk版本不一致,导致一些库无法运行,在网上也遇到有相同问题的人,提出了模仿gradle wrapper来做一个flutter_wrapper的思路。于是我根据自己的需要写了一个flu...

那些年我们踩过的坑 8073

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

本地依赖库的版本和库依赖的版本不一致如何解决?

文章摘要: 本文分享了使用Yarn v4时解决依赖版本冲突问题的完整排查过程。作者遇到库XXXXXXXX版本匹配异常(0.0.1-local.8被当作^0.0.1-beta.29的合法候选项),通过逐步排查缓存、yarn.lock文件和npm registry,发现是远程registry中存在错误版本。最终给出三种解决方案:1)通过resolutions强制指定精确版本;2)切换官方npm源;3)检查可用版本并考虑发布新版本。该案例展示了Yarn依赖解析机制和semver版本的匹配逻辑,为类似问题提供了系统

左不言的博客 1142

如何用AI自动修复JVM目标版本不一致问题

在日常的Gradle项目开发中,经常会遇到JVM目标版本不一致的问题,尤其是在多模块项目中,不同模块可能使用了不同的Java版本。无需复杂的配置,上传项目后就能快速获得分析结果和修复方案,整个过程非常流畅。虽然AI工具能自动修复配置,但在应用前还是建议检查一下修改内容,特别是对于复杂的多模块项目。这个思路不仅可以用于解决JVM版本问题,还可以扩展到其他配置一致性检查的场景,比如Gradle插件版本、依赖库版本等。通过AI技术可以智能分析项目配置,自动扫描所有Java编译任务,快速识别版本不一致的问题。

MoonbeamRaven28的博客 835

iOS依赖库版本一致性检测:确保应用兼容性

本文介绍一种iOS依赖库版本一致性检测方法,分析App包依赖的系统库列表及最低系统版本号V1,在官方API获取库最低支持版本号V2。比较V1与V2可快速准确地发现版本不一致问题,提高应用兼容性和安全性。

干克小子 1664

如何用AI快速解决Kotlin版本冲突问题

在我的一个Android项目中,有5个模块分别使用了Kotlin 1.5.30、1.6.0和1.7.10三个不同版本。这个错误通常发生在多模块项目中,当不同模块使用了不兼容的Kotlin版本时就会出现。:基于Kotlin官方的版本兼容性数据,AI可以给出最优的版本调整建议,避免手动查阅文档。:AI可以自动识别错误信息中的关键信息,如当前使用的Kotlin版本和期望的版本范围。:AI工具可以递归扫描项目中的所有模块,识别每个模块使用的Kotlin版本。通过这次实践,我深刻体会到AI工具对开发效率的提升。

GreyWolf12的博客 908

APP应用开发sdk版本过低可能性原因问题排查及解决方案

在移动 app 开发中,提示sdk版本过低缺找不到原因的情况都知道的吧哈哈哈,这个我觉得我有必要全面的分析和排查,让同学们看完这个文章都得以解决。这是我的初衷奈何地主家里也没有余粮呀(我也不能完全总结出来,但是我尽可能总结)我将尽可能通过深入了解 SDK 以及其与 app 开发的关系,为同学们提供分析和排查 SDK 版本过低问题的(可能的)全方位思路。例如,在 iOS 开发中,较低版本的 iOS SDK 可能无法在新版本的 Xcode 中正常编译,导致开发者在新环境下无法编译或测试应用程序。

zhouhuiting1122的博客 2395

旧版本Ubuntu安装magick出现undefined symbol的解决思路

从18年后再也没如此费力的处理这个问题了

xuzhougeng blog 1840

android P版本使用okhttp3最新版本网络无法正常访问问题

通过使用OKhttp3访问 http://www.baidu.com 发现一直在报错,花了很长时间发现是因为android P版本默认使用https并禁用http。 问题原因是导入了最新版本的okhttp3,发现在android studio上无法正常访问网络并且一直报错 implementation("com.squareup.okhttp3:okhttp:3.14.2") log日志报错 ...

高高的山上 2747

Qt项目实战:如何快速解决OpenSSL版本不匹配导致的HTTPS访问失败问题

本文针对Qt开发中常见的OpenSSL版本不匹配导致HTTPS请求失败问题,提供了一套从快速诊断到彻底解决的实战指南。文章详细介绍了如何通过代码检查Qt编译与运行时OpenSSL版本,分析版本冲突根源,并给出了对齐运行时环境、升级Qt、静态链接及使用替代库等多种解决方案。重点讲解了在Windows环境下如何获取、部署正确版本的OpenSSL动态库,并分享了DLL依赖、证书加载等进阶调试技巧与CI/CD最佳实践,帮助开发者高效修复网络连接问题。

docker8compose的博客 422
上一篇: 自己实现floatactionbutton展开折叠功能
下一篇: python中高阶函数之filter(),reduce(),map()的使用
和小胖
博客等级 码龄12年 8粉丝 42原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值