Androidプロジェクトの依存関係はプロジェクトのルートディレクトリでGradleのdependenciesタスクを実行すると確認できます。macOS・Linuxでは次のコマンドを実行します。
./gradlew :app:dependencies --configuration debugRuntimeClasspath
Windowsではgradlew.batに置き換えてください。この記事ではconfigurationの選び方、結果に表示される->や(*)の意味、バージョン競合の原因を絞り込む方法まで解説します。
依存関係を正しく把握するには、ターゲットにしているAPIレベルとOSバージョンの対応関係を理解しておくことも重要です。どのAPIレベルが何のOSに対応するか、以下の記事でまとめています。

この記事でわかること
- Androidプロジェクトの依存関係を調べるGradleコマンド
- macOS・Linux・Windows別の実行方法
- 実行結果の読み方(ツリー構造・
->・(*)の意味) - バージョン衝突の確認方法
--configurationの指定方法とビルドバリアントの関係
targetSdkVersionを更新する前にAndroid 17(API level 37)で変わる仕様も確認しておくと、ビルド後の動作検証がしやすくなります。

依存関係を調べるGradleコマンド
実行前の準備
Android StudioのTerminalウィンドウを開いてください。Android StudioのTerminalを使えば、プロジェクトのルートディレクトリが自動的にカレントディレクトリになるので便利です。
コマンドラインから実行する場合は、プロジェクトのルートディレクトリに移動してから実行してください。コマンドのパターンは次のとおりです。:appの部分は対象モジュール名に合わせて変更してください。
Windowsで実行する
gradlew.bat :app:dependencies --configuration releaseRuntimeClasspathmacOS / Linuxで実行する
./gradlew :app:dependencies --configuration releaseRuntimeClasspath–configurationの指定について
--configurationにはビルドバリアント(Build Type + Product Flavor)に応じた設定名を指定します。
| ビルド構成 | 指定する設定名 |
|---|---|
| リリースビルド | releaseRuntimeClasspath |
| デバッグビルド | debugRuntimeClasspath |
Product Flavorがdevでデバッグ | devDebugRuntimeClasspath |
実行結果の見方
コマンドを実行すると以下のような依存関係ツリーが表示されます。
releaseRuntimeClasspath - Resolved configuration for runtime for variant: release
+--- com.android.support:support-v4:24.2.0
| +--- com.android.support:support-compat:24.2.0
| | \--- com.android.support:support-annotations:24.2.0
| +--- com.android.support:support-core-utils:24.2.0
| | \--- com.android.support:support-compat:24.2.0 (*)
| \--- com.android.support:support-fragment:24.2.0
| +--- com.android.support:support-compat:24.2.0 (*)
| \--- com.android.support:support-core-ui:24.2.0 (*)
+--- com.google.code.gson:gson:2.2.4
+--- com.android.support:multidex:1.0.1 -> 1.0.2
+--- com.journeyapps:zxing-android-embedded:3.3.0
| +--- com.google.zxing:core:3.2.1
| \--- com.android.support:support-v4:23.1.0 -> 24.2.0 (*)
\--- com.android.support:multidex:1.0.2
(*) - dependencies omitted (listed previously)各記号の意味
- インデントなしの
+---または\---行build.gradleにimplementationやapiで直接指定したライブラリです。 - インデントされている行
上位のライブラリから自動的に取り込まれた「推移的依存関係(transitive dependency)」です。build.gradleで直接指定していなくても依存先としてプロジェクトに追加されます。 ->記号
バージョンが自動解決・変更されたことを示します。1.0.1 -> 1.0.2であれば「1.0.1を指定したが最終的に1.0.2が採用された」という意味です。(*)マーク
すでに上位で表示済みの依存関係が省略されていることを示します。
特定のライブラリの依存元をdependencyInsightで調べる
dependenciesタスクではプロジェクト全体の依存関係をツリー形式で確認できます。ただ、ツリーが大きいと「このライブラリをどこから取り込んでいるのか」が分かりにくいことがあります。特定のライブラリだけを詳しく調べたい場合は、GradleのdependencyInsightタスクを使います。
Windowsの場合
gradlew.bat :app:dependencyInsight --dependency androidx.core:core-ktx --configuration debugRuntimeClasspathmacOS・Linuxの場合
./gradlew :app:dependencyInsight --dependency androidx.core:core-ktx --configuration debugRuntimeClasspath--dependencyには調べたいライブラリ名を指定します。上記のandroidx.core:core-ktxは例なので、実際に調べたいライブラリへ置き換えてください。
--configurationには調査するビルドバリアントに対応した設定名を指定します。リリースビルドを調べる場合はdebugRuntimeClasspathをreleaseRuntimeClasspathに変更します。
コマンドを実行するとそのライブラリを要求している依存元と、最終的なバージョンが選ばれた理由を確認できます。依存関係ツリーだけではバージョン衝突の原因を特定できないときに便利です。
依存関係を調査するときは最初にdependenciesで全体を確認し、気になるライブラリをdependencyInsightで絞り込むと原因を追いやすくなります。
バージョン衝突を確認するときのポイント
出力結果の中で->が表示されているライブラリはバージョンが自動解決されています。複数のライブラリが異なるバージョンを要求している場合、Gradleは基本的に最も高いバージョンを採用します。
特定のバージョンに固定したい場合はbuild.gradleで明示的にバージョンを指定するかresolutionStrategyでバージョンを強制する方法もあります。
configurations.all {
resolutionStrategy {
force 'com.android.support:support-v4:24.2.0'
}
}よくある質問
まとめ
Androidプロジェクトでライブラリの依存関係を調べたいときはGradleのdependenciesタスクが便利だよ。ポイントをまとめておきますね。
- macOS / Linuxなら
./gradlew :app:dependencies --configuration releaseRuntimeClasspathを実行だよ。 - Windowsなら
gradlew.bat :app:dependencies --configuration releaseRuntimeClasspathを使うだよ。 --configurationにはビルドバリアントに応じた設定名(例:debugRuntimeClasspath)を指定だよ。- 出力ツリーを読めばどのライブラリがどのライブラリに依存しているかが一目瞭然だよ。
->が出ていたらバージョンが自動解決されているサインだよ。バージョン衝突の調査に役立ててね。
ビルドが通らないときや「なんでこのライブラリが入ってるの?」と疑問に思ったときにぜひ試してみてください。
Android Studio・ADB・GradleなどAndroid開発でよく使う情報は以下のまとめページから確認できます。







