Android 统一依赖版本的三种方法

假如有三个三方依赖库:A,B,C,这三个库都引用了D,但是A引用的是D1.1,B引用的是D1.2,C引用的是D1.3…想让A、B、C都应用D2。有以下三种方法:

  1. 使用 dependencyResolutionStrategy.force 强制指定版本

在项目的 build.gradle 文件的 allprojects 或 subprojects 配置中,使用 dependencyResolutionStrategy,强制所有使用 D 的地方都采用 2.0 版本。
这会使项目和所有第三方库强制使用 D:2.0 版本,而忽略 A、B、C 自带的不同版本

allprojects {configurations.all {resolutionStrategy {force 'com.example:D:2.0' // 替换为 D 的 Maven 坐标}}
}
  1. 使用 constraints 统一依赖版本(Gradle 5.0 及以上)

在 dependencies 中使用 constraints 声明 D 的版本约束,确保所有模块和第三方库都使用 D:2.0

dependencies {implementation 'com.example:A:1.0' // 引入库 Aimplementation 'com.example:B:1.0' // 引入库 Bimplementation 'com.example:C:1.0' // 引入库 Cconstraints {implementation('com.example:D:2.0') {because '统一使用 D 的 2.0 版本'}}
}
  1. 手动排除旧版本并显式添加新版本

如果不想强制所有依赖使用同一版本,还可以手动将 A、B、C 中的 D 旧版本排除掉,并显式地添加 D:2.0

dependencies {implementation('com.example:A:1.0') {exclude group: 'com.example', module: 'D' // 排除 A 引用的 D 版本}implementation('com.example:B:1.0') {exclude group: 'com.example', module: 'D' // 排除 B 引用的 D 版本}implementation('com.example:C:1.0') {exclude group: 'com.example', module: 'D' // 排除 C 引用的 D 版本}// 显式引入 D 统一版本implementation 'com.example:D:2.0'
}

另外:检查项目依赖关系,可以用这个命令,生成整个项目的依赖树

./gradlew app:dependencies dependencies.txt  // 会在本地生成dependencies.txt文件。
./gradlew build --scan // 生成的依赖关系会在给定的网址上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/12711.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

取代产品岗,又一新兴岗位在崛起!这才是产品经理未来5年最好的就业方向!

这是我入行产品经理的第1007天: 每天都是整理需求、开会、写文档、协调资源 被开发、运营diss一通,顺便为产品“背个锅” 熬夜加班做出来的产品,业务团队还是不愿意用…… 更让人头秃的是,干了3年,好像到了“职…

打造自己的RAG解析大模型:(可商用)智能文档服务上线部署

通用版面分析介绍 版面解析是一种将文档图像转化为机器可读数据格式的技术,广泛应用于文档管理和信息提取等领域。通过结合OCR、图像处理和机器学习,版面解析能够识别文档中的文本块、图片、表格等版面元素,最终生成结构化数据,大…

Spring

1、Spring框架中单例bean是线程安全的吗? 不是线程安全的。当多用户同时请求一个服务时,容器会给每个请求分配一个线程,这些线程会并发执行业务逻辑。如果处理逻辑中包含对单例状态的修改,比如修改单例的成员属性,就必…

MathGPT的原理介绍,在中小学数学教学的应用场景,以及代码样例实现

大家好,我是微学AI,今天给大家介绍一下MathGPT的原理介绍,在中小学数学教学的应用场景,以及代码样例实现。MathGPT的核心架构是一个精心设计的多层次系统,旨在有效处理复杂的数学问题。其主要组成部分包括 数学知识图谱…

【Linux】man 手册的使用指南

man 手册的使用指南 man手册中文版上传至资源(用心整理,感谢理解!) man手册官方下载链接:https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/ man 手册页:https://linux.die.net/man/ Linux man…

机器学习分析scRNA-seq解析急性髓系白血病中的疾病和免疫过程

急性髓性白血病(AML,Acute myeloid leukemia)是一种存在于复杂微环境中的疾病。作者基于scRNA-seq分析了来自40例骨髓抽吸donor的38,410个细胞,包括16例AML患者和5例健康donor。然后,应用机器学习分类器来区分恶性细胞…

【缓存策略】你知道 Write Back(回写)这个缓存策略吗?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

1小时构建Vue3知识体系-Vue的响应式,让数据动起来

本文转载自:https://fangcaicoding.cn/course/12/62 大家好!我是方才,目前是8人后端研发团队的负责人,拥有6年后端经验&3年团队管理经验。 系统学习践行者!近期在系统化输出前端入门相关技术文章,期望能…

Docker网络详解

安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host 网络模式简介Host容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。Bridge此模式会为每一个容…

宝塔面板部署前端项目(包含ssl证书部署)

环境: ①nginx(这里使用的版本为1.21.41) ②前端项目文件(以根目录打包的文件) ③域名 ④SLL数字证书的key文件和.pem文件(我们这里用的是nginx部署,因此下载证书的时候,下载nginx对…

【区别】ONLYOFFICE心得体会,8.2与8.1区别

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

Equity-Transformer:求解NP-Hard Min-Max路由问题的顺序生成算法(AAAI-24)(未完)

文章目录 AbstractIntroduction问题表述MethodologyAbstract 最小最大路由问题旨在通过智能体合作完成任务来最小化多个智能体中最长行程的长度。这些问题包括对现实世界有重大影响的应用场景,但已知属于NP-hard问题。现有方法在大规模问题上面临挑战,尤其是在需要协调大量智…

ScrumMaster认证机构及CSM、PSM、RSM价值解析

近十年Scrum在国内备受关注,成为一种最流行的现代敏捷工作方式。ScrumMaster这一独特的角色,在企业内部推动Scrum落地的过程中越来越重要。各种ScrumMaster认证课程也蜂拥而至,甚至鱼目混珠。 我们为大家梳理了目前市面上出现的ScrumMaster认…

HLS实现图像二值化

最近在学习HLS语言,所以就自己摸索尝试了用HLS实现了图像二值化,把这个内容总结一下,分享出来。 首先打开HLS,然后新建一个Project,之后再在Source栏点击右键,选择New File...,创建名为pixelBi…

[ 内网渗透实战篇-1 ] 单域环境搭建与安装域环境判断域控定位CS插件装载CS上线

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

通过物流分拣系统来理解RabbitMQ的消息机制

RabbitMQ作为一个消息中间件,通过队列和路由机制,帮助应用程序高效传递消息。而它的消息流转过程,其实可以用物流分拣系统来直观理解。 在一个典型的物流分拣系统中,包裹会经过多个节点(比如分拣中心、配送站&#xf…

别再乱搜了 这 5个宝藏AE模板网站,小白也能做出大片级动画

Hello,大家好,我是后期圈! 今天来聊聊一个后期人都绕不开的话题:AE模板网站!模板可是后期人的福音,无论你是想要惊艳的开场动画,酷炫的转场效果,还是个性化的文字特效,一…

CSS 编写位置详解及优先级分析

在前端开发中,CSS 的编写位置对项目的组织结构和维护性至关重要。不同的编写位置不仅影响代码的可读性和复用性,还决定了样式应用的优先级。 本文将根据编写位置的不同,详细介绍其定义、使用场景和优先级。 行内样式(Inline Styles) 行内样式(又称:内联样式)是将 CS…

ChatGPT 搜索 vs Google 搜索

原文:Amanda Caswell - 2024.11.01 随着 OpenAI 推出的实时搜索功能,ChatGPT 正在逐步成为像 Google 这样的传统搜索引擎的竞争对手。ChatGPT 以其对话式的回答方式而闻名,它能够在没有广告干扰的情况下提供实时的上下文信息。 我迫不及待地…

多进程的操作和案例

文章目录 高效编程一、多任务原理二、进程1、概念2、使用进程3、全局变量在多个子进程中不能共享4、启动大量子进程5、map方法6、单进程与多进程复制文件对比7、进程间通信8、进程实现生产者消费者9、案例(抓取斗图) 高效编程 一、多任务原理 概念 现代…