详解Android获取所有依赖库的几种方式

 更新时间:2018年07月13日 09:10:23   作者:FullStack  
本篇文章主要介绍了详解Android获取所有依赖库的几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

当项目越来越大的时候,依赖的库也越来越多,再加上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有较深的理解。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android生成带圆角的Bitmap图片

    Android生成带圆角的Bitmap图片

    这篇文章主要介绍了Android生成带圆角的Bitmap图片,涉及Android通过Canvas实现绘制带圆角的图片相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • android 放大镜ShapeDrawable妙用分享

    android 放大镜ShapeDrawable妙用分享

    android上想实现局部放大的效果,比如画面中加个放大镜的效果,发现ShapeDrawable是一个最好的选择。
    2013-06-06
  • Android RecyclerView加载不同布局简单实现

    Android RecyclerView加载不同布局简单实现

    这篇文章主要为大家详细介绍了Android RecyclerView加载不同布局简单实现,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Kotlin全局捕捉协程异常方法详解

    Kotlin全局捕捉协程异常方法详解

    协程是互相协作的程序,协程是结构化的。如果把Java的异常处理机制,照搬到Kotlin协程中,一定会遇到很多的坑。Kotlin协程中的异常主要分两大类,协程取消异常(CancellationException) 其他异常
    2022-08-08
  • Android实现两圆点之间来回移动加载进度

    Android实现两圆点之间来回移动加载进度

    这篇文章主要为大家详细介绍了Android实现两圆点之间来回移动加载进度,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • Android编程实现手机震动功能的方法

    Android编程实现手机震动功能的方法

    这篇文章主要介绍了Android编程实现手机震动功能的方法,结合实例形式分析了Android实现手机震动功能的核心代码与权限控制操作技巧,需要的朋友可以参考下
    2017-06-06
  • Android逆向之dex2oat的实现解析

    Android逆向之dex2oat的实现解析

    虚拟机的发生展经历了从初期的dalvik,到中期的dalvik,以及后期的ART。但是市面上的APK文件早已已经全球流行。为了能够让这些APK不加改动的在所有虚拟机上面运行,google采用了类似适配器模式。即在让虚拟运行之前多一道工序。就是dexopt
    2021-10-10
  • Android中获取控件宽高的4种方法集合

    Android中获取控件宽高的4种方法集合

    下面小编就为大家分享一篇Android中获取控件宽高的4种方法集合,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Android 7.0行为变更 FileUriExposedException解决方法

    Android 7.0行为变更 FileUriExposedException解决方法

    这篇文章主要介绍了Android 7.0行为变更 FileUriExposedException解决方法的相关资料,需要的朋友可以参考下
    2017-05-05
  • 详解Android全局异常的捕获处理

    详解Android全局异常的捕获处理

    这篇文章主要为大家介绍了Android全局异常的捕获处理,为什么要进行捕获处理,如何进行捕获处理,想要了解的朋友可以参考一下
    2016-01-01

最新评论