Android Studio查看第三方库依赖树

news2025/2/24 21:08:51

在Android开发过程中,我们或多或少都会引入第三方库,引入的库越多,越容易产生库之间的依赖冲突,所以我们今天一起来了解Android Studio查看第三方库依赖树。

下面就拿我遇到的问题还原一下:

之前接人容联客服系统的时候,集成完成后进入客服页面发生闪退,我们回顾一下错误信息:

122.jpg

我们关键看一下报错代码:

java.lang.NoSuchMethodError: No virtual method into (Landroid/widget/ImageView;)Lcom/bumptech/glide/request/target/Target; in class Lcom/a/a/i; or its super classes (declaration of 'com.a.a.i' appears in/data/app/com.sami91sami.h5-1/base.apk)

我们可以根据报错,跳到报错的地方:

133.jpg

该报错的意思就是:没有

into(Landroid/widget/ImageView)

的方法,代码能编译通过,说明项目中肯定是添加依赖了,那怎么还会报这个错误呢?还没添加依赖之前,项目中也是使用的Glide进行图片的加载,会不会是项目中的Glide与容联Demo中的Glide有冲突呢。

我们可以根据报错的地方into方法,点进入看源码:

144.jpg

可以看到容联Demo使用的Glide版本是3.7.0。

再来看看项目中Glide使用的版本:

155.jpg

可以看到项目中使用的Glide版本是4.5.0。

这时就想到真的很大概率是两者的Glide版本有冲突了。

果然将容联Demo中的Glide版本改成4.5.0之后,编译运行进入客服界面后,没有报错了,完美解决。

这就是我之前遇到的库冲突的问题,这个问题有错误信息可以定位到是Glide库依赖的问题,要是遇到其它错误信息没那么显著的,那是不是就头疼了呢。

当时遇到这个问题,我并没有使用查看依赖树的方式,而是直接查看了源码,因为当时我并不知道还能这么干,幸运的是很快就定位到了问题所在,所以当我们升级第三方库或者引入新的第三方库时,库与库之间依赖冲突,我们需要知道每个第三方依赖库的依赖树,知道依赖树就清楚哪里冲突啦。

下面就记录下几种查看依赖树的方式:

方案一: Gradle task工具查看

1、点击Android studio面板右上角“Gradle”,如图所示:

1639041944906-gzb.png

2、按照如图目录找到dependencise双击,会在Run控制台输出打印,如图所示:

222.png

3、打印如图所示:

333.png

方案二:使用Gradle View插件

1、快捷键Ctrl+Alt+s,打开settings,然后点击按钮Plugins

444.png

2、搜索 Gradle View,然后安装,并重启Android Studio,我这是已经安装成功后的截图

555.png

3、点击菜单栏上View -> Tool Windows -> Gradle View,然后等待一会,就可以查看了。

666.png

如图所示:

777.png

方案三:Terminal控制台查看

在windows上Android studio Terminal中使用这个命令:

gradlew :app:dependencies(“app”为module名称)

在MacOS中使用下面的命令:

./gradlew :app:dependencies(“app”为module名称)

这个命令会将gradle执行的各个步骤都打印出来,包括releaseUnitTestRuntimeClasspath,releaseUnitTestCompileClasspath,releaseRuntimeClasspath,releaseCompileClasspath,lintClassPath,debugUnitTestRuntimeClasspath等等。

那么,我们可以配置configuration 参数只查看其中一个的依赖树就够了。

 ./gradlew :app:dependencies --configuration compile

在Window系统下,无需使用./开头,直接使用gradlew即可。

执行app模块下的dependencies任务;额外配置compile,编译环境下的依赖项。

888.png

通过查看依赖树,我们就能看到哪些依赖有冲突,比如某个框架的support包冲突,只要在moudle的gradle文件下找到该冲突的依赖用括号括住,在后面加:

{
   exclude group:'com.android.support'
}

这要就可以把该框架的support包移除啦。

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

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

相关文章

工作小技巧,封装if和Exception

在我们的工作中,经常会有这样的逻辑,就是判断一个参数是否合法,不合法就抛出异常,再由全局异常捕获后返回。 本文使用我编写的springboot日记本系统作为蓝本,,在已有项目的基础上改,源码下载地…

思科小型网络配置实例

一、配置思路 1.交换机上配置端口连接描述,在实际工作中很有用 2.外网配置,模拟外网:PC的IP地址200.200.200.2,Server的IP地址是200.200.200.3,网关都是200.200.200.1。SW-ISP的连接PC和Server-ISP的口属于vlan 3,&…

【vue】二:核心处理---vue的生命周期

文章目录 1.Vue生命周期的四个阶段,八个钩子2.vue的生命周期图例3. 初始阶段:虚拟DOM生成4. 挂载阶段:真实DOM生成5. 更新阶段:data变化重新渲染6. 销毁阶段:卸载所有,销毁vm 1.Vue生命周期的四个阶段&…

Appium利用xpath查找同级节点兄弟节点方法

当页面存在两个文件夹,结构相同,只有文件夹名称不同时,想要点击某一个文件夹上的某个控件。这个时候需要使用xpath定位。 1.由父节点定位子节点 driver.findElementByXPath(//XCUIElementTypeCell/XCUIElementTypeStaticText[name"标签…

Java网络开发(Tomcat)—— 用Jsp语法 到 实现数据的分页展示 到 只看自己的数据 + 模糊查询 迭代升级

目录 引出0.jsp的使用和语法 & 报错和解决(1)后端共享,前端获取 ${pageInfo}(2)如果想获取pageInfo这个对象的某个属性值,用 点 属性 ${pageInfo.pages}(3)如果想回传&#xff…

前端性能测试必备测试工具

我们在使用网站过程中,经常会遇到慢的问题,为了找到原因,一般需要借助工具进行检测,通过工具,可以检测出前端站点加载资源的相关详细情况。 今天,就给大家介绍几款前端性能测试分析工具,结合性能…

为什么性能测试PR单机版要升级到P-One一站式性能测试平台

目前市面上常用的性能测试工具均为单机版,导致了一些问题: 1.脚本无法进行共享; 2.执行管理无法进行统一化、协同化管理; 3.项目经理只能通过日报或者线下沟通获取当前项目进度; 4.对测试结果只能通过文件传输的方式进…

Linux安装Nginx详细教程

文章目录 下载安装包开始安装相关命令 下载安装包 官网下载:http://nginx.org/en/download.html 自己找一个安装目录 我这里进入到usr/local下创建一个安装软件目录 cd /usr/local mkdir softwore cd softwore使用ftp工具或者windows命令行将下载好的nginx安装包…

家居行业内卷?创新乏力?十大关键词解读IF ROOM如何定义未来主义家居

中商产业研究院今年早前发布的《中国家居市场前景及投资机会研究报告》显示,2021年中国定制家居行业的市场规模已经突破4000亿元,2016-2021年复合增长率达16%,行业保持良好的发展态势,预计2023年中国定制家居市场规模能突破5000亿…

2023年了, 你还不会使用node.js做压力测试?

背景 前些天刷抖音,看到网传的Java继父,求人攻击压测他的网站,这不得摩拳擦掌。 所以今天来聊聊如何对自己的项目、接口进行压力测试。 压力测试的目的 首先, 绝对不是为了压测、攻击别人的网站为乐。 1、探索线上系统流量承载的极限&…

jvm中类和对象定义存储基础知识 | 京东云技术团队

1 类文件数据结构类型 Class文件结构主要有两种数据结构:无符号数和表 •无符号数:用来表述数字,索引引用、数量值以及字符串等,比如 图1中类型为u1,u2,u4,u8分别代表1个字节,2个字节,4个字节&#xff0c…

2023“水博会”召开,千寻位置携智慧水利创新方案登台亮相

6月7日,“2023中国水博览会暨第十八届中国(国际)水务高峰论坛”(简称“水博会”)在江苏南京开幕。千寻位置基于北斗时空能力,打造多款水利数字孪生解决方案,在本次水博会上亮相。 水利数字孪生工…

SNAP重采样哨兵2号 L2A级数据报错 Invalid S2 source product解决办法

原来安装的SNAP7.0:esa-snap_all_windows-x64_7_0.exe 重采样时报错: A problem occurred during the target product initialisation. Type: OperatorException Message: Invalid S2 source product 解决办法:下载SNAP新版本9.0 http:/…

再看const成员函数

文章目录 再看函数重载const成员函数保安(const)能保护所有人(类成员)吗?mutable修饰类成员 const/非const成员函数的复用 关于函数重载实际上我理解不是很深入,直接导致const成员函数这块出大问题&#xf…

SpringBoot+Vue 的网上图书商城管理系统

文章目录 1. 简介2 技术栈3.1系统功能 4系统设计4.1数据库设计 5系统详细设计5.1系统功能模块5.1系统功能模块5.2管理员功能模块 源码下载 1. 简介 本次设计任务是要设计一个网上图书商城,通过这个系统能够满足网上图书商城的管理功能。系统的主要功能包括首页、个…

第二十一章_Redis的缓存过期淘汰策略

Redis内存满了怎么办 redis 一共有 4 个命令来设置键的生存时间&#xff08;可以存活多久&#xff09;或过期时间&#xff08;什么时候被删除&#xff09; expire <key> <ttl>&#xff1a;将 key 的生存时间设置为 ttl 秒pexpire <key> <ttl>&#xf…

仓储WMS对接淘宝奇门详细说明【亲测可用】

文章目录 简介名词解释奇门对接方案前期准备系统调用流程代码实现思路关键点(个人观点)奇门对接关键代码可能遇到的问题 简介 淘宝奇门项目支持 ERP、WMS 之间的系统标准化对接&#xff0c;通过构建 ERP、WMS 系统之间标准通信协议来实现不同系统之间的打通&#xff1b;对商家…

day07——决策树

决策树 一、认识决策树二、API三、案例&#xff1a;泰坦尼克号乘客生存预测1&#xff0c;题目概述2&#xff0c;分析3&#xff0c;代码4&#xff0c;保存树结构 一、认识决策树 决策树思想的来源非常朴素&#xff0c;程序设计中的条件分支结构就是if-then结构&#xff0c;最早…

从2023年Q1,看当下的量子产业

光子盒研究院 一旦实现商业化&#xff0c;量子计算将带领人类进入一个全新的领域。 今天&#xff0c;人工智能(AI)、ChatGPT等大语言模型的处理能力受限于芯片有限的表面积&#xff1a;超过一定数量的GPU&#xff0c;每个GPU的批处理量就会变小——进一步增加数量反而会增大成本…

httprunner 2.x介绍与使用

一、原文地址&#xff1a; 使用说明_httprunner2.0 概述及使用说明 httprunner2接口测试框架说明文档 - 简书 二、介绍 HttpRunner是一款面向 HTTP(S) 协议的通用测试框架&#xff0c;只需编写维护一份 YAML/JSON 脚本&#xff0c;即可实现自动化测试、性能测试、线上监控、…