AppSeedのアプリ開発ブログ

アプリ開発会社AppSeed(アップシード)開発担当のブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsや備忘録、アプリ開発に役立つ情報を発信します。

【Android】ライブラリの依存関係を調査する方法(gradle)

https://cdn-ak.f.st-hatena.com/images/fotolife/h/hmbdyh/20170110/20170110101721.jpg

少し前に仕事でSDKの組み込み対応を行ったのですが、過去に導入されたライブラリと今回いれたSDKGoogleライブラリ系の競合が発生してしまいかなり苦労しました。

今回は今後の為にAndroidアプリのライブラリ依存関係を調査する方法」についてまとめておきたいと思います。


Androidアプリのライブラリ依存関係を調査する方法

Androidアプリのライブラリ依存関係を調査する方法

Macの場合はまずターミナルを立ち上げて、Androidのappディレクトリまで移動します。(Windowsの場合はコマンドプロンプト

cd  /"Androidプロジェクトまでのパス"/app


次に以下のコマンドを入力すると、

./../gradlew dependencies

Androidプロジェクトで導入しているライブラリの依存関係を確認できます。

【Android】ライブラリの依存関係を調査する方法(gradle)


gradleで依存関係を解決する方法

「gradlew dependencies」で依存関係を調査した結果、ライブラリ同士の競合が発生していた場合はプロジェクトのapp直下の「build.gradle」に以下のような設定を行って競合を解決して行きます。


1. resolutionStrategy 特定のライブラリに対してバージョンを強制的に適用する

configurations.all {
         resolutionStrategy {
            force 'com.google.firebase:firebase-iid:17.0.4'
         }
}

2. transitive = false 推移的依存関係を無効化する

(推移的依存関係は依存関係のライブラリが依存するライブラリを依存関係にするもの)

dependencies {
    implementation ('com.google.firebase:firebase-common:16.0.3'){
	transitive = false
    }
}

3. exclude group ライブラリから特定のパッケージを除外する

dependencies {
    compile ('com.google.firebase:firebase-core:16.0.6'){
	exclude group: 'com.google.android.gms'
	exclude group: 'com.android.support'
    }
}

依存関係を解決するための設定はこれ以外にもあるかもなので、見つけたら追記したいと思います。

参考:
気をつけたいGradleの推移的依存関係とその解決 - Qiita
第51章 依存関係の管理
Gradleで陥りやすい問題点の解決策TIPS集 - 猫好きモバイルアプリケーション開発者記録
GradleでServlet APIを除外設定する | DevelopersIO
Gradle の依存関係を使いこなしてみる - bluepapa32’s Java Blog