LoginSignup
31
33

More than 5 years have passed since last update.

Dependency Reportを出力してMultiple dex files defineを解決

Last updated at Posted at 2014-11-19

Android開発において新規でライブラリを取り込む際にちょいちょい発生するMultiple dex files define
前から厄介なヤツだったんですが、Gradleを使い始めた頃に依存関係で悩まされることが多かったのでそんな時に僕がよくやっていたDependency Reportを使っての解決方法をメモ

Dependency Reportを出力してみる


やり方はコマンドラインから出力したいプロジェクト直下に行って以下のコマンドを叩くだけ

$ cd <プロジェクトのディレクトリ>
$ ./gradlew -q dependencies

コマンドを叩いてしばらくすると長ったらしいReportが出力されます
参照すると、各ライブラリが中で使用している別ライブラリを確認することができるので、重複しているライブラリを確認することができます

*_releaseApkの部分のみ抜粋


_releaseApk - ## Internal use, do not manually configure ##
+--- com.github.chrisbanes.actionbarpulltorefresh:library:+ -> 0.9.9
|    \--- com.github.castorflex.smoothprogressbar:library:0.4.+ -> 0.4.0
+--- com.squareup:otto:1.3.5
+--- com.jakewharton:butterknife:5.1.1
+--- com.github.chrisbanes.photoview:library:1.2.2
+--- com.android.support:appcompat-v7:19.+ -> 19.1.0
|    \--- com.android.support:support-v4:19.1.0
+--- com.google.android.gms:play-services:5.0.77
|    \--- com.android.support:support-v4:19.1.0
--- sample:facebook:unspecified

実際に取り込まれるバージョンも確認できるのでかなり便利

build.gradleを修正

上では割愛してますが、別プロジェクトにしているfacebook内でもsupport-v4を利用しているためappcompat-v7play-servicesでsupport-v4をexclude moduleの対応をすれば解決
*Before


dependencies {
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
    compile 'com.squareup:otto:1.3.5'
    compile 'com.jakewharton:butterknife:5.1.1'
    compile 'com.github.chrisbanes.photoview:library:1.2.2'
    compile 'com.android.support:appcompat-v7:19.+'
    compile 'com.google.android.gms:play-services:5.0.77'
    compile project(':facebook') // この内部でもsupport-v4が使われている
}

*After

dependencies {
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
    compile 'com.squareup:otto:1.3.5'
    compile 'com.jakewharton:butterknife:5.1.1'
    compile 'com.github.chrisbanes.photoview:library:1.2.2'
    compile ('com.android.support:appcompat-v7:19.+') { exclude module: 'support-v4' }
    compile ('com.google.android.gms:play-services:5.0.77') { exclude module: 'support-v4' }
    compile project(':facebook') // この内部でもsupport-v4が使われている
}

再度Dependency Reportを出力すると_releaseApkの箇所は以下のように変化した

_releaseApk - ## Internal use, do not manually configure ##
+--- com.github.chrisbanes.actionbarpulltorefresh:library:+ -> 0.9.9
|    \--- com.github.castorflex.smoothprogressbar:library:0.4.+ -> 0.4.0
+--- com.squareup:otto:1.3.5
+--- com.jakewharton:butterknife:5.1.1
+--- com.github.chrisbanes.photoview:library:1.2.2
+--- com.android.support:appcompat-v7:19.+ -> 19.1.0
+--- com.google.android.gms:play-services:5.0.77
--- sample:facebook:unspecified

この状態でbuildしたらMultiple dex files defineが発生しなくなってビルドできるようになった
31
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
33