Androidで自作のライブラリを使おうとしたらエラーが出た件
自作のライブラリは Android のサポートライブラリ appcompat を使っているもの。
で、このライブラリを使ったアプリケーションを作成して、最後にプロジェクトの clean をしてから実行しようと思った。
clean コマンドまでは問題なくできてちゃんとビルドもされた。
次に実行しようとしたら、こんなエラーが出た。
[2014-04-11 02:05:25 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/support/v7/appcompat/R$anim; [2014-04-11 02:05:25 - cafemap] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/support/v7/appcompat/R$anim;
dex ファイルが複数あるって?
ヤバい、ライブラリのファイル構成とかその辺りは全然わからない…。
という訳で、探したら Stackoverflow で発見。
いくつか回答が寄せられているけど、自分の場合は以下の方法で解決できた。
Close eclipse. Delete bin folder inside your project folder. Start eclipse and clean your project. Now run and the problem should be gone
え? そんな簡単なことで?
と、思ったのだけど、実際に clipse 終了して、プロジェクトの bin フォルダを消して、eclipse 起動して、プロジェクトを clean して、実行したら問題なくなってた!
でも、なんで問題が解決したのかがわからなくてモヤモヤしてる…。
ライブラリとアプリでそれぞれに appcompat の dex ファイルを持っちゃってたのが、bin フォルダを削除したことでアプリの dex ファイルが消えたから?
それならなぜ最初にアプリも同じ dex ファイルを bin フォルダに入れちゃったりしたの?
やっぱりコンパイルだのリンクだのその辺りの仕組みをきっちり知ってないとダメなんだろうな〜。