How do I show dependencies tree in Android Studio?
Asked Answered
E

9

176

My goal is to see the tree of dependencies (such as: appcompat, dagger, etc) in a particular project.

Like the one IntelliJ:

enter image description here

Electrojet answered 18/8, 2016 at 2:8 Comment(0)
S
334

The image in the question doesn't really show a tree, just a flat list of everything compiled into the app.

Are you using Gradle?

If so, you can truly see the "tree" by running a Gradle command

Android documentation: View the dependency tree

GUI

  1. Select View > Tool Windows > Gradle (or click Gradle icon in the tool windows bar).
  2. Expand AppName > Tasks > android and double-click androidDependencies. After Gradle executes the task, the Run window should open to display the output.

CLI

(produces tree-like list)

./gradlew app:dependencies

and/or

(produces flat list)

./gradlew app:androidDependencies

Where app is your module's name

And you get something like so

+--- 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

For specific flavor use the command

gradle app:dependencies --configuration <flavorNameRuntimeClasspath>

Note: If you run ls (or dir on Windows) in that folder, and don't see gradlew (or gradlew.bat), you are in the wrong folder.

Snowman answered 18/8, 2016 at 14:23 Comment(24)
Hey thanks for the answer, but I wanted to see from the IDE itself. So that I can browse the dependencies' code.Electrojet
You can run that from the IDE, there's a Gradle View on the right side of the IDE along the edge. You said dependency tree, so that's what I assumed you meant. This shows which dependencies are nested within each other and you can identify duplicatesSnowman
Thanks, helped me a lot in tracking down some transient dependencies.Principle
I think he meant "browse the dependencies code" like he wrote ;) Like it's possible in Eclipse (and maybe in IntelliJ IDEA), you can setup a breakpoint inside a dependency framework code. I guess the answer is it's just not possible in Android Studio.Demonography
@Demonography Yes it is. I do it all the timeSnowman
It's not what you are showing in this answer though, it's just a non interactive text list of dependenciesDemonography
@Demonography a "tree of dependencies" is exactly what is shown. The question did not ask for browsing source code of them. The question doesn't say code at all. If you search Maven or Gradle docs for "dependency tree", you get output like thisSnowman
The question asked for a dependency tree "Like the one IntelliJ:" with a screen capture. Hard to be more explicit. And then he adds precision saying he wants to "browse the dependencies code". But your answer looks useful to some people anyway, just not the expected answer.Demonography
This may be a newer gradle version thing, but the dependency tree seems to be displayed with ./gradlew appName:dependencies. In Android Studio it can be found under appName > Tasks > help > dependencies.Sunup
@Sunup Yes... Both of those are mentioned in the docs, and my answer. dependencies and androidDependencies are different, thoughSnowman
@cricket_007 I agree with you that the two tasks are different. And I may be holding it wrong... But I could not find a way to display a dependency tree with Gradle 4.6 and the androidDependencies task like the one in your answer. The results were just a flat list like the end result of a Gradle dependency search. Any idea why and how to get a tree like in your answer?Sunup
@Sunup Well, I copied straight from the documentation. My answer used to say app:dependenciesSnowman
Also, the Android docs are outdated.Kaikaia
@もっくん Again, it used to say that... And the docs used to say it as well, if I recall correctly.. And the bottom of that page does say Last updated January 23, 2019., so...Snowman
Well, something is wrong then, since the output in your answer does not match what we see when running ./gradlew app:androidDependencies.Kaikaia
@もっくん I think that output depends on your app. I copied what the docs saySnowman
Sorry, but I highly doubt that. If you create a new project with a "Basic Activity" on Android Studio, and you run the ./gradlew app:androidDependencies task, the tree will be flat as oppose to what your answer describes. I understand you copied from the docs, but it won't be the first time they are wrong/outdated.Kaikaia
chmod +x gradlew on linux if you get permission denied msgMorven
In Windows do not use ./ . In Mac or Linux it is usually required.Adage
@Adage In Windows, use .\ , or use WSLSnowman
@mokkun I am also seeing flat output in AS Bumblebee Patch 2.Modiste
this command is showing all the dependencies in straight line. Not in the heirarchy viewAbdication
I have no androidDependencies under Tasks. Only see build and run tasks.Maxillary
This answer is 7+ years old. Feel free to suggest an edit.Snowman
W
32

On the right side, open the gradle tab > click the gradle icon (execute gradle task), in the popup dialog enter :

app:dependencies

in the command line field > ok

Waltner answered 20/7, 2018 at 9:33 Comment(5)
This worked for me once I removed app: and just executed dependencies. This gives more useful output than the method in norbDEV's answer as it shows a dependency tree. Possibly the same output as ./gradlew dependencies but without the requirement of installing a JDK.Galop
@Galop app is the default module for Android Studio projects. If you have no modules, or want to see dependencies for all modules, yes, gradle dependencies also worksSnowman
How to find dependencies of a specific flavor?Incase
@M.UsmanKhan check https://mcmap.net/q/56235/-android-flavor-specific-dependency-treeWaltner
Definitely the best and fastest answer !Landside
G
28

Android Studio 3.4

Inspect and visualize each dependency in the dependency graph of your project, as resolved by Gradle during project sync, by following these steps:

  1. Android Studio -> File -> Project Structure (Dialog)
  2. In the left pane of the "Project Structure" window, select Dependencies.
  3. In the Modules pane, select a module for which you’d like to inspect the resolved dependencies.

Project Structure

  1. For Android Studio 3.6 and above: On the right side of the "Project Structure" window, look at the Resolved Dependencies pane. An example is shown below, where you can click on the Expand arrows to navigate into each sub-dependency. However, it does not allow text searching, like the console output does.

Resolved Dependencies Pane

Learn more.

Gleason answered 30/4, 2019 at 11:40 Comment(3)
this is almost what we want. too bad, it neither supports search nor opening/browsing them from here.Reconstructive
Actually you can also search .. just click somewhere within resolved dependencies and start typing. However I'm facing performance issuesFrontality
This helped me get there. But in AS Bumblebee Patch 2, the central pane is flat, not a tree. You have to expand the Target Mdules/Artifacts on the right to see parent dependencies of a selected dependency. There's a possibility that I see different output due to using custom flavors in my build.Modiste
D
22

Android Studio 3.+

  • Open the Gradle panel
  • Click the elephant icon, which has the tooltip "Execute Gradle Task"

Gradle panel screenshot + elephant icon

  • Select the app gradle project
  • In the command line paste: dependencies
  • Click OK

Screenshot: Run Gradle Task - Window

In the Run panel you will find the dependency tree.


Another method:

  • Open the Gradle panel

  • Find the "(root)" postfix and open (app's folder name)

  • Open the Tasks node

  • Open the android node

  • Double click on the "androidDependencies"

In the Run panel you will find the dependency list

Before a normal build switch back to the normal Build Configuration (next to the hammer)


Another useful tool:

How to find what dependency is updated: https://github.com/ben-manes/gradle-versions-plugin

Usage

  • Add this to project level build.gradle

    apply plugin: "com.github.ben-manes.versions"
    
    buildscript {
      repositories {
        jcenter()    
      }
    
      dependencies {
        classpath "com.github.ben-manes:gradle-versions-plugin:0.20.0"
      }
    }
    
  • Sync Now

  • Open the Gradle panel
  • Click the elephant icon
  • Select the root project
  • In the command line paste: dependencyUpdates
  • Click OK
  • Wait a little bit

In the Run panel you will find the result.

Delp answered 3/6, 2018 at 13:40 Comment(1)
This creates a flat list of dependencies rather than a tree, so not as useful if you need to figure out which library is using a particular dependency. +1 for the "switch back to the normal build configuration" tip.Galop
E
15

Finally, I figured it out. What I do is to select Project from Project menu (See the image below).

enter image description here

Electrojet answered 18/8, 2016 at 14:15 Comment(1)
This is in no way a dependency tree. Dependency trees are used e.g. to find conflicting versions when library A uses library B version 1 while library C uses library B version 2. As the question stands, this answer is not correct. The question should be updated to request a list of used libraries, or cricket_007's answer should be the accepted one.Marigolda
M
14

In latest android studio canary version you have dependency analyzer in Gradle tool

enter image description here

Marquettamarquette answered 3/2, 2023 at 12:35 Comment(2)
youtu.be/La3Cp-O05eQ This is a video made by JetBrains to introduce this great feature.Health
In Android Studio Hedgehog it's in the same location and it opens the Resolved Dependencies view.Chaunceychaunt
C
7

terminal command to see all dependencies list is

 ./gradlew -q dependencies app:dependencies --configuration implementation
Comedian answered 11/2, 2019 at 12:12 Comment(0)
N
7

Click the Gradle tab and go to AppName > Tasks > help > dependencies

Android studio dependencies

Napolitano answered 9/12, 2019 at 7:21 Comment(0)
I
4

Simple use is to type text to Terminal or PowerShell:

./gradlew app:dependencies

Advanced usage:

./gradlew app:dependencies --configuration implementation
./gradlew app:dependencies --configuration testImplementation
./gradlew app:dependencies --configuration androidTestImplementation
Incarcerate answered 19/5, 2023 at 7:31 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.