How do I show dependencies tree in Android Studio?

105,801

Solution 1

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.

Solution 2

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

Solution 3

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.

Solution 4

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.

Solution 5

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

enter image description here

Share:
105,801
fruqi
Author by

fruqi

Updated on June 23, 2021

Comments

  • fruqi
    fruqi almost 3 years

    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

  • fruqi
    fruqi over 7 years
    Hey thanks for the answer, but I wanted to see from the IDE itself. So that I can browse the dependencies' code.
  • OneCricketeer
    OneCricketeer over 7 years
    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 duplicates
  • Mark
    Mark over 6 years
    Thanks, helped me a lot in tracking down some transient dependencies.
  • JHH
    JHH almost 6 years
    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.
  • jk7
    jk7 over 5 years
    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.
  • jk7
    jk7 over 5 years
    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.
  • OneCricketeer
    OneCricketeer over 5 years
    @jk7 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 works
  • Tristan
    Tristan over 5 years
    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.
  • OneCricketeer
    OneCricketeer over 5 years
    @Tristan Yes it is. I do it all the time
  • Tristan
    Tristan over 5 years
    It's not what you are showing in this answer though, it's just a non interactive text list of dependencies
  • OneCricketeer
    OneCricketeer over 5 years
    @Tristan 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 this
  • Tristan
    Tristan over 5 years
    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.
  • omahena
    omahena over 5 years
    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.
  • OneCricketeer
    OneCricketeer over 5 years
    @omahena Yes... Both of those are mentioned in the docs, and my answer. dependencies and androidDependencies are different, though
  • omahena
    omahena over 5 years
    @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?
  • OneCricketeer
    OneCricketeer over 5 years
    @omahena Well, I copied straight from the documentation. My answer used to say app:dependencies
  • Mokkun
    Mokkun about 5 years
    Also, the Android docs are outdated.
  • OneCricketeer
    OneCricketeer about 5 years
    @もっくん 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...
  • Mokkun
    Mokkun about 5 years
    Well, something is wrong then, since the output in your answer does not match what we see when running ./gradlew app:androidDependencies.
  • OneCricketeer
    OneCricketeer about 5 years
    @もっくん I think that output depends on your app. I copied what the docs say
  • Mokkun
    Mokkun about 5 years
    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.
  • Arshdeep Singh
    Arshdeep Singh over 4 years
    chmod +x gradlew on linux if you get permission denied msg
  • TeachMeJava
    TeachMeJava over 4 years
    In Windows do not use ./ . In Mac or Linux it is usually required.
  • OneCricketeer
    OneCricketeer over 4 years
    @TeachMeJava In Windows, use .\ , or use WSL
  • M. Usman Khan
    M. Usman Khan almost 3 years
    How to find dependencies of a specific flavor?
  • Jamal S
    Jamal S almost 3 years
  • Ace
    Ace over 2 years
    this is almost what we want. too bad, it neither supports search nor opening/browsing them from here.
  • Tima
    Tima about 2 years
    Actually you can also search .. just click somewhere within resolved dependencies and start typing. However I'm facing performance issues
  • Code-Apprentice
    Code-Apprentice about 2 years
    @mokkun I am also seeing flat output in AS Bumblebee Patch 2.
  • Code-Apprentice
    Code-Apprentice about 2 years
    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.