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

Posted

技术标签:

【中文标题】如何在 Android Studio 中显示依赖关系树?【英文标题】:How do I show dependencies tree in Android Studio? 【发布时间】:2016-12-24 20:02:12 【问题描述】:

我的目标是查看特定项目中的依赖关系树(例如:appcompat、dagger 等)。

就像那个 IntelliJ:

【问题讨论】:

【参考方案1】:

最后,我想通了。我所做的是从 Project 菜单中选择 Project(见下图)。

【讨论】:

这绝不是依赖。使用依赖树,例如当库 A 使用库 B 版本 1 而库 C 使用库 B 版本 2 时找到冲突的版本。就问题而言,这个答案是不正确的。应该更新问题以请求使用的库列表,或者 cricket_007 的答案应该是被接受的。【参考方案2】:

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

你在使用 Gradle 吗?

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

Android 文档:View the dependency tree

图形界面

    选择查看 > 工具窗口 > Gradle(或点击工具窗口栏中的Gradle图标)。 展开AppName > Tasks > 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

特定风味使用命令

gradle app:dependencies --configuration <flavorNameRuntimeClasspath>

注意:如果您在该文件夹中运行ls(或Windows 上的dir),却看不到gradlew(或gradlew.bat),您就错了文件夹。

【讨论】:

谢谢,在追踪一些暂时的依赖关系方面帮助了我很多。 这不是您在此答案中显示的内容,它只是一个非交互式文本依赖列表 这个问题要求一个依赖关系树“就像一个 IntelliJ:”,并带有屏幕截图。很难说得更清楚。然后他补充说他想“浏览依赖项代码”。但无论如何,你的答案对某些人来说似乎很有用,只是不是预期的答案。 这可能是一个更新的 gradle 版本的东西,但依赖关系树似乎显示为 ./gradlew appName:dependencies。在 Android Studio 中,可以在 appName &gt; Tasks &gt; help &gt; dependencies 下找到它。 @cricket_007 我同意你的观点,这两个任务是不同的。而且我可能拿错了...但是我找不到一种方法来使用 Gradle 4.6 和 androidDependencies 任务来显示依赖关系树,就像你的答案中的那样。结果只是一个平面列表,就像 Gradle 依赖项搜索的最终结果一样。知道为什么以及如何在您的答案中得到一棵树吗?【参考方案3】:

Android Studio 3.+

打开 Gradle 面板 点击大象图标,其工具提示为“执行 Gradle 任务”

选择 应用 gradle 项目 在命令行粘贴dependencies 点击确定

运行面板中,您将找到依赖关系树。


另一种方法:

打开 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。【参考方案4】:

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

app:dependencies

在命令行字段中> ok

【讨论】:

这对我有用,一旦我删除了app: 并刚刚执行了dependencies。这提供了比 norbDEV 答案中的方法更有用的输出,因为它显示了依赖树。可能与./gradlew dependencies 的输出相同,但不需要安装 JDK。 @jk7 app 是 Android Studio 项目的默认模块。如果你没有模块,或者想查看所有模块的依赖关系,是的,gradle dependencies 也可以 如何找到特定风格的依赖关系? @M.UsmanKhan 检查***.com/a/63137778/2641657【参考方案5】:

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

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

【讨论】:

【参考方案6】:

Android Studio 3.4

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

    Android Studio -> 文件 -> 项目结构(对话框) 在“项目结构”窗口的左窗格中,选择Dependencies。 在 Modules 窗格中,选择您要检查已解析依赖项的模块。

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

Learn more.

【讨论】:

这几乎就是我们想要的。太糟糕了,它既不支持搜索也不支持从这里打开/浏览它们。【参考方案7】:

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

【讨论】:

以上是关于如何在 Android Studio 中显示依赖关系树?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android studio中更新maven依赖

Android Studio为啥要用Gradle

android studio依赖库工程Activity显示问题及库工程设置

如何在android中显示密码开/关模式的切换按钮

如何在 android studio 中编辑依赖项/外部库? [复制]

android studio 预览窗口无法显示 怎么处理