如何在 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 > Tasks > help > 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依赖库工程Activity显示问题及库工程设置