読者です 読者をやめる 読者になる 読者になる

おふとんの中から寝言をつぶやく

ビットコインなどの暗号(仮想)通貨関連の話題を中心に雑多に書きます。

Androidアプリ開発でmultiple dex files define が出たときのエラー解消のための糸口の探し方

f:id:harmonir:20170209025657j:plain

ライブラリAとライブラリBを使おうとして、AとBの両方が、同じライブラリCを使う時に、AとBが指定したライブラリCのバージョンがそれぞれ違うときに複数のDEXファイルが存在してしまうようです。

 

自分のハマった具体的なケースを書いておきます。

 

NEND SDKとFirebaseは内部でplay-servicesを使っていますが、それぞれが依存するplay-servicesのバージョンが違っていました。

  

自分が使いたいライブラリが依存しているライブラリとそのバージョンを調べるには、ターミナルを開いて

 

cd app
../gradlew dependencies

 と書いて出てきたものをみればわかると思います。

 

そこで a.b.c -> x.y.z のようになっている部分があったらそこがバージョンのずれのために別々のDEXファイルが存在する原因になっているので、それを解消してあげましょう。

 

f:id:harmonir:20170209022601j:plain

 ↓

f:id:harmonir:20170209022617j:plain

 

NEND SDKが新しくなってそれだけ新しくしたり、逆にFirebase等で新しいのを使っているのに、NEND SDKの更新が追いついていないときに出るということもありました。

 

ちゃんと理解してれば基本的なことなのかもしれませんが…

(調べ方忘れて二日くらいつぶしたのでした)