IntelliJにて、Androidアプリのgradleプロジェクトを新しく作成し、いくつかの外部ライブラリを使用してビルドを試みたところ、dexDebugなるタスクが失敗して困ったのでメモしておきます。
ビルドを実行すると以下のようなエラーとなります。
1 2 |
Error:Gradle: Execution failed for task ':ThingsToDo:dexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2 |
ThingsToDoはモジュール名です。
“dexDebug failed”で検索するといくつか情報があるようですが状況によって対策が異なるようで、私の場合は以下の方法で解決出来ました。
1 2 3 4 5 6 7 8 |
defaultConfig { applicationId "jp.ne.gate.things" minSdkVersion 14 targetSdkVersion 22 versionCode 1 versionName "1.0" multiDexEnabled true // これを追加 } |
原因を深く追っていないのでいい加減な対応なのかもしれませんが、ひとまずビルドは通りました。
新たな問題:あり得ない場所でNoClassDefFoundError
multi-dexを有効にした副作用のようですが、enumをswitch文で分岐する場所で上記例外が発生しました。追ってみるとStack Overflowにそれらしきトピックがあり、試してみました。
build.gradleのdependenciesに以下を追記します。
1 |
compile 'com.android.support:multidex:1.0.1' |
そして、Applicationクラスの派生元をMultiDexApplicationに変更します。
今度こそうまくいったようです。