はじめに
Android開発をしていると、ライブラリの競合やバージョン差分、意図しない依存関係の混入を調査したい場面があります。
特に、以下のようなケースではGradleの依存関係調査コマンドが役立ちます。
- 特定のライブラリがどこから入っているのか確認したい
- どのバージョンが最終的に採用されているのか確認したい
- debug / release で依存関係に差があるか確認したい
- マルチモジュール構成で、特定モジュールの依存関係を調べたい
- 依存関係の競合や推移的依存を確認したい
そこで今回は、Androidプロジェクトで依存関係を調査するときによく使うGradleコマンドをまとめます。
依存関係一覧を確認する
まず、指定したモジュールの依存関係全体を確認したい場合は、dependenciesタスクを使います。
./gradlew :app:dependencies
ただし、このままだとすべてのConfigurationが出力されるため、情報量がかなり多くなります。
Android開発では、確認したいビルド種別に応じてConfigurationを指定することが多いです。
./gradlew :app:dependencies --configuration debugRuntimeClasspath
releaseビルドの依存関係を確認したい場合は、次のようにします。
./gradlew :app:dependencies --configuration releaseRuntimeClasspath
compileClasspathとruntimeClasspathの違い
依存関係を調べるときによく使うConfigurationには、主に以下があります。
debugCompileClasspath
debugRuntimeClasspath
releaseCompileClasspath
releaseRuntimeClasspath
ざっくり分けると、以下のような違いです。
| Configuration | 用途 |
|---|---|
| CompileClasspath | コンパイル時に必要な依存関係 |
| RuntimeClasspath | 実行時に必要な依存関係 |
特定のライブラリがどこから入っているか確認する
特定の依存関係について詳しく調べたい場合は、dependencyInsightを使います。
./gradlew :app:dependencyInsight --dependency retrofit --configuration debugRuntimeClasspath
マルチモジュール構成で特定モジュールを調べる
例えば、:domainモジュールの依存関係を確認したい場合は次のようにします。
./gradlew :domain:dependencies --configuration releaseRuntimeClasspath
よく使うコマンドまとめ
appモジュールの依存関係一覧を確認する
./gradlew :app:dependencies --configuration debugRuntimeClasspath
./gradlew :app:dependencies --configuration releaseRuntimeClasspath
特定ライブラリの依存経路を確認する
./gradlew :app:dependencyInsight --dependency ライブラリ名 --configuration debugRuntimeClasspath
まとめ
dependenciesとdependencyInsightを使えるようにしておくと、原因調査の初動がかなり楽になります。
必要となった際には覚えておくと助けられることもあるかと思いますので、ぜひご活用いただければ幸いです。
さいごに
まだ5月なのに30度越えは気合いが入りすぎているのでは…?