如何在Android Studio中显示依赖关系树?


Answers:


200

问题中的图像并没有真正显示出一棵树,而只是编译到应用程序中的所有内容的平面列表。

您在使用Gradle吗?

如果是这样,您可以通过运行Gradle命令真正看到“树”

Android文档查看依赖关系树

图形用户界面

  1. 选择“视图” >“工具窗口” >“ Gradle”(或单击工具窗口栏中的“ Gradle”图标)。
  2. 展开“ AppName” >“任务” >“ android”,然后双击androidDependencies。Gradle执行任务后,应打开“运行”窗口以显示输出。

命令行界面

(生成树状列表)

./gradlew app:dependencies

和/或

(产生平面清单)

./gradlew app:androidDependencies

app模块的名称在哪里

你会得到这样的东西

+--- MyApp:mylibrary:unspecified
|    \--- com.android.support:appcompat-v7:25.3.1
|         +--- com.android.support:animated-vector-drawable:25.3.1
|         |    \--- com.android.support:support-vector-drawable:25.3.1
|         |         \--- com.android.support:support-v4:25.3.1
|         |              \--- LOCAL: internal_impl-25.3.1.jar
|         +--- com.android.support:support-v4:25.3.1
|         |    \--- LOCAL: internal_impl-25.3.1.jar
|         \--- com.android.support:support-vector-drawable:25.3.1
|              \--- com.android.support:support-v4:25.3.1
|                   \--- LOCAL: internal_impl-25.3.1.jar
\--- com.android.support:appcompat-v7:25.3.1
     +--- com.android.support:animated-vector-drawable:25.3.1
     |    \--- com.android.support:support-vector-drawable:25.3.1
     |         \--- com.android.support:support-v4:25.3.1
     |              \--- LOCAL: internal_impl-25.3.1.jar
     +--- com.android.support:support-v4:25.3.1
     |    \--- LOCAL: internal_impl-25.3.1.jar
     \--- com.android.support:support-vector-drawable:25.3.1
          \--- com.android.support:support-v4:25.3.1
               \--- LOCAL: internal_impl-25.3.1.jar

注意:如果您在该文件夹中运行ls(或dir在Windows上),但看不到gradlew(或gradlew.bat),则说明您位于错误的文件夹中。


1
谢谢,对我跟踪一些临时依赖关系有很大帮助。
马克·基恩

3
它不是您在此答案中显示的内容,它只是依赖性的非交互式文本列表
Tristan

6
这可能是较新的gradle版本,但依赖树似乎显示为./gradlew appName:dependencies。在Android Studio中,可以在下找到appName > Tasks > help > dependencies
omahena

3
@ cricket_007我同意您的观点,两项任务是不同的。我可能认为这是错误的……但是我找不到一种方法来显示Gradle 4.6和androidDependencies像您的回答中那样的任务的依赖树。结果就像Gradle依赖项搜索的最终结果一样,只是一个简单的列表。知道为什么以及如何在您的答案中得到一棵树吗?
omahena

1
@omahena好吧,我直接从文档中复制了内容。我的回答曾经说过app:dependencies
OneCricketeer

22

在右侧,打开gradle选项卡>单击gradle图标(执行gradle任务),在弹出对话框中输入:

app:dependencies

在命令行字段中>确定


1
一旦我删除app:并执行了命令,这对我就起作用了dependencies。这比norbDEV的答案中的方法提供了更多有用的输出,因为它显示了依赖关系树。可能与输出相同,./gradlew dependencies但不需要安装JDK。
jk7 '18 -10-2

1
@ jk7app是Android Studio项目的默认模块。如果您没有模块,或者想查看所有模块的依赖关系,可以,gradle dependencies也可以使用
OneCricketeer

17

Android Studio 3. +

  • 打开Gradle面板
  • 点击带有工具提示“执行Gradle任务”的大象图标

Gradle面板截图+大象图标

  • 选择应用程序gradle这个项目
  • 在命令行中粘贴dependencies
  • 点击确定

屏幕截图:运行Gradle任务-窗口

在“运行”面板中,您将找到依赖项树。


另一种方法:

  • 打开Gradle面板

  • 找到“(root)”后缀并打开(应用程序的文件夹名称)

  • 打开任务节点

  • 打开android节点

  • 双击“ androidDependencies”

在“运行”面板中,您将找到依赖项列表

在进行常规构建之前,请切换回常规构建配置(在锤子旁边)


另一个有用的工具:

如何查找更新的依赖项: https : //github.com/ben-manes/gradle-versions-plugin

用法

  • 将此添加到项目级别build.gradle

    apply plugin: "com.github.ben-manes.versions"
    
    buildscript {
      repositories {
        jcenter()    
      }
    
      dependencies {
        classpath "com.github.ben-manes:gradle-versions-plugin:0.20.0"
      }
    }
    
  • 立即同步

  • 打开Gradle面板
  • 点击大象图标
  • 选择项目
  • 在命令行中粘贴dependencyUpdates
  • 点击确定
  • 等待一点点

在“运行”面板中,您将找到结果。


这将创建一个平坦的依赖关系列表,而不是一棵树,因此如果您需要弄清楚哪个库正在使用特定的依赖关系,它就没有用。+1为“切换回正常的构建配置”提示。
jk7 '18 -10-2

16

终于,我明白了。我要做的是从“项目”菜单中选择“项目”(请参见下图)。

在此处输入图片说明


12
这绝不是依赖。当库A使用库B的版本1而库C使用库B的版本2时,使用依赖树来查找有冲突的版本。应该更新该问题以请求使用库的列表,或者cricket_007的答案应该被接受。
JHH

6

Android Studio 3.4

按照以下步骤检查并可视化项目的依赖关系图中的每个依赖关系(由Gradle在项目同步期间解决):

  1. Android Studio->文件->项目结构(对话框)
  2. 在“项目结构”窗口的左窗格中,选择Dependencies
  3. 在“模块”窗格中,选择要检查其已解决依赖性的模块。

项目结构

  1. 对于Android Studio 3.6及更高版本:在“项目结构”窗口的右侧,查看“已解决的依赖关系”窗格。下面显示了一个示例,您可以在其中单击“展开”箭头以导航到每个子依赖项。但是,它不允许文本搜索,就像控制台输出一样。

已解决的依赖项窗格

学到更多。


5

终端命令查看所有依赖项列表是

 ./gradlew -q dependencies app:dependencies --configuration implementation

3

单击Gradle选项卡,然后转到AppName >任务>帮助>依赖项

Android Studio依赖项

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.