详解Android获取所有依赖库的几种方式
作者:FullStack 发布时间:2023-12-13 05:41:51
当项目越来越大的时候,依赖的库也越来越多,再加上aar的传递依赖,导致dependency的急速膨胀。我们可以通过如下几种方式,查看项目依赖的所有库(包含直接依赖和间接依赖)。
方式一:通过dependencies命令
./gradlew :app:dependencies
该task会显示如下所示的输出:
输出列表展示了所有configuration下的依赖树,依赖关系明显,层次清晰。如果觉得输出的结果太冗长(通常情况下包含几十个configuration),可以通过指定configuration来显示特定的依赖树:
./gradlew :app:dependencies --configuration releaseCompileClasspath
该命令只会显示release模式下编译过程中的依赖树。
方式二: 通过androidDependencies命令
./gradlew :app:androidDependencies
输出结果如下:
如图所示,该task会平铺展示依赖树,并且只展示几个主要的variant,看起来较为清爽,但是缺点是不能像方式一那样指定configuration。
方式三:自定义task获取
project.afterEvaluate {
project.android.applicationVariants.all { variant ->
tasks.create(name: "showDependencies${variant.name.capitalize()}",
description: "展示所有依赖") {
doLast {
Configuration configuration
try {
// 3.x
configuration = project.configurations."${variant.name}CompileClasspath"
} catch (Exception e) {
// 2.x
configuration = project.configurations."_${variant.name}Compile"
}
configuration.resolvedConfiguration.lenientConfiguration.allModuleDependencies.each {
def identifier = it.module.id
println("${identifier.group}:${identifier.name}:${identifier.version}")
}
}
}
}
}
如上,通过这种自定义task的方式,可以选择打印依赖,也可以选择保存到文件中,灵活度最高。
总结:
方式一:通用task,按层次展示依赖树,可以通过指定configuration来过滤输出。
方式二:android项目特有的task,平铺展示依赖树,不能过滤输出结果。
方式三:自定义task获取依赖,灵活度最高,但是需要对gradle有较深的理解。
来源:https://www.jianshu.com/p/1360299a4c17


猜你喜欢
- 获取resources文件路径背景在SpringBoot项目中,需要获取resources文件的路径,网上找了好多文章都不行,后面还是结合官
- 本文实例讲述了Winform启动另一个项目传值的方法。分享给大家供大家参考。具体如下:背景:从A项目中登陆后,跳转到B项目的某个页面(B不再
- 上周五东西都收拾好了,然后被叫住加班,直接搞到凌晨一两点,原因是另一个项目的性能出了点问题。为此我抓包写了一下主业务流的接口,涉及到文件上传
- 一丶先引入上传下载的lib二丶上传的的servletpackage com.test.action;import java.io.File;
- C#操作Excel的方法有很多种,常见的有微软官方的OLE Automation,Apache的POI等。这里介绍的是POI翻译成C#的NP
- 专业的Android app开发人员会关注一些成熟的项目管理技术,以成功构建Android app,并让这个app在Google Play
- 下边是一些我们常用的正则表达式。自己写的一些正则表达式,可以先在线测评一下。一、校验数字的表达式 1 数字:^[0-9]*$&nb
- idea删除模块后重新创建显示该模块已经被注册原因:注册信息没有删除干净解决方案:找到gradle.xml,modules.xml,work
- 不久之前,我面试了一些求职Java高级开发工程师的应聘者。我常常会面试他们说,“你能给我介绍一些Java中得弱引用吗?”,如果面试者这样说,
- 话不多说,请看代码/// <summary>/// 删除字符串中的中文/// </summary>public st
- 1.基本介绍SpringBoot 支持的 webServer: Tomcat, Jetty, or UndertowSpringBoot 应
- synchronized都问啥?如果Java面试有什么是必问的,synchronized必定占据一席之地。初出茅庐时synchronized
- 一、需求Jenkins大多数情况下都是用来部署Java项目,Java项目有一个特点是>需要编译和打包的,一般情况下编译和打包都是用ma
- 为了追求更好的用户体验,有时候我们需要一个类似心跳一样跳动着的控件来吸引用户的注意力,这是一个小小的优化需求,但是在 Flutter 里动画
- 多线程下@Resource注入为null前情叙述记录以下这个坑,我的情况大致是这样的,我在用webmagic写爬虫,在类中通过@Resoou
- 用来记录自己所用到的知识前两天在做项目的时候发现有时候在访问网络数据的时候由于后台要做的工作较多,给我们返回数据的时间较长,所以老大叫我加了
- 简单的说下实现来电秀的大概原理流程:首先通过监听来电状态,通过拦截来电然后在窗口弹出一层系统级别的弹窗,这层弹窗即是来电秀。先来两张效果图:
- 一、概述本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函
- 在本文中,笔者向大家介绍下Java中一个非常重要也非常有趣的特性,就是自动装箱与拆箱,并从源码中解读自动装箱与拆箱的原理,同时这种特性也留有
- 用法在java中经常会遇到需要对数据进行类型转换的场景,String类型的数据转为Int类型属于比较常见的场景,主要有两种转换方法:1. 使