Error:Execution failed for task ‘:app:dexDebug’. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘ finished with non-zero exit value 2

Android Studioで開発していたところ com.google.api.client:google-api-client をdependenciesに追加したらビルドが通らなくなってタイトルのようなエラーが出ました。

解決方法ないものかと探してみたところ同じエラーに遭遇して解決した人が結構数いましたのでそれを参考にやってみました。

ここを見ると呼び出しているライブラリ内でclass名が重複しているケースがありました
http://stackoverflow.com/questions/18021901/android-studio-gradle-build-fails-execution-failed-for-task-dexdebug
http://ja.stackoverflow.com/questions/8020/androidstudiogradle%E3%81%A7%E3%83%93%E3%83%AB%E3%83%89%E3%82%A8%E3%83%A9%E3%83%BC-process-finished-with-non-zero-exit-value-2

試したけどちょっと違いそう

▼ケース色々
– compile files(‘libs/*.jar’) の行を全て削除してから再実行

– キャッシュを消してAndroidStudioをrestart
File -> Invalidate Caches / Restart

– gradle file dependencies
compile ‘com.android.support:multidex:1.0.0’
マニフェストファイル(AndroidManifest.xml)に以下を追加
android:name=”android.support.multidex.MultiDexApplication”

– プロジェクトのクリーン
Build > Clean Project

全部試したけど変わらず。

このエラーについて動画で解説している方もいます。

英語で話していますが要点は以下のようなbuild.gradleの設定をしたということです

defaultConfig {
他の設定
他の設定
他の設定
multiDexEnabled true
}
packagingOptions{
exclude ‘META-INF/NOTICE.txt’
exclude ‘META-INF/NOTICE’
exclude ‘META-INF/notice’
exclude ‘META-INF/LICENSE.txt’
exclude ‘META-INF/LICENSE’
exclude ‘META-INF/license.txt’
}
dexOptions {
preDexLibraries = false
}
dependencies {
他の設定
他の設定
他の設定
compile ‘com.android.support:multidex:1.0.0’
}

が・・・これでもダメでした。

こちらにAndroidStudioから詳細を見る方法が書いてあったので参考にしました。
http://qiita.com/le_skamba/items/d49d5f7e450c621e5ed7

File | Settings | Build, Execution, Deployment | Compiler
のCommand-line Optionsに以下を追加。
–debug

この設定後に実行ボタンを押すとエラーの詳細が分かります。
エラー内容が分からなかったら詳しい人に聞きましょう。

私は次のようなエラーが出てました。

Error:21:59:00.674 [ERROR] [org.gradle.api.Project] AGPBI: {“kind”:”simple”,”text”:”UNEXPECTED TOP-LEVEL ERROR:”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”java.lang.OutOfMemoryError: GC overhead limit exceeded”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat java.util.Arrays.copyOfRange(Arrays.java:2694)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat java.lang.String.\u003cinit\u003e(String.java:203)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.rop.cst.CstString.utf8BytesToString(CstString.java:158)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.rop.cst.CstString.\u003cinit\u003e(CstString.java:200)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.cst.ConstantPoolParser.parseUtf8(ConstantPoolParser.java:371)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:262)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:325)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:309)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:150)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.cst.ConstantPoolParser.getPool(ConstantPoolParser.java:115)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:482)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main.parseClass(Main.java:764)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main.access$1500(Main.java:85)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main.processClass(Main.java:749)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:718)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main.access$1200(Main.java:85)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main.processOne(Main.java:672)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main.processAllFiles(Main.java:569)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main.runMultiDex(Main.java:366)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main.run(Main.java:275)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.dexer.Main.main(Main.java:245)”,”sources”:[{}]}
AGPBI: {“kind”:”simple”,”text”:”\tat com.android.dx.command.Main.main(Main.java:106)”,”sources”:[{}]}

OutOfMemoryErrorが出てます。
なんと・・・

build.gradleを以下の用に dexOptionsにjavaMaxHeapSize “2048M”を追加してビルドしてみたところ成功!!

dexOptions {
preDexLibraries = false
javaMaxHeapSize “2048M”
}

私のケースはメモリが足りなくて発生していたようです。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です