2012年01月22日

[Unity] ビルドエラー(Building DEX Failed!)の対処方法

UnityでAndroidのプラグインを使っているとき、以下のエラーが出るときがあります。
プログラムは間違っていないのに、何故だろうと他の人も困っているようです。

------------------------------------------
Building DEX Failed!
D:\DATA\unity_projects\one_shoot\Temp/StagingArea> java -Xmx1024M -Djava.ext.dirs="C:/android-sdk-windows\platform-tools/lib/" -jar "C:/android-sdk-windows\platform-tools/lib/dx.jar" --dex --verbose --output=bin/classes.dex bin/classes.jar plugins
processing archive bin\classes.jar...
------------------------------------------

自分も色々試しました。
備忘メモを兼ねて残しておきます。
他の人がうまくいっていても、自分では駄目な場合がありました。


【方法1】 adb.exe が悪さをしている?
adb.exeのプロセスを切り、Unityだけを再起動したらうまくいったようです。
自分の場合は解消されませんでした……。

参考:
http://traumachicken.blogspot.com/2011/12/unitybuilding-dex-failed-adbkill.html


【方法2】 最新のJDKとJREを使用する
Unityのトラブルシューティングに載ってました。
Java環境が最新じゃないから起きるらしいです。

参考:
http://unity3d.com/support/documentation/Manual/TroubleShooting.html

ということで、ここで最新のJavaを入手↓
http://java.com/ja/download/installed.jsp?detect=jre&try=1


でも解消せず……。
--------------- 追記 ---------------
JDKとJREの最新版はこちらにありました↓
http://www.oracle.com/technetwork/java/archive-139210.html
------------------------------------

【方法3】 64bitマシンを使っている人は、32bitのJava環境にすればうまくいく?
これも試したけど駄目でした。

参考:
http://forum.unity3d.com/threads/67817-I-will-pay-someone-to-show-me-how-to-integrate-admob/page2


【方法4】 Javaの環境変数を変える
「java -Xmx1024M」というコマンドを実行してビルドエラーになっているんだから、
「java -Xmx512M」にすればいいという発想。

システム環境変数↓
変数名 = _JAVA_OPTIONS
値 = -Xmx512M

これでもうまくいかず……。

参考:
http://forum.unity3d.com/threads/88119-Could-not-reserve-enough-space-for-object-heap-RESOLVED


【方法5】 プラグインを全部消して、入替える
うまくいったのがこの方法。
Eclipse側で作ったプラグインをUnity側に部分的に上書きコピーしていたのですが、
それが駄目な原因だったようです。

Unity側をのプラグインの中身を全部消してから、Eclipse側からすべてのファイルをコピーしてきました。
部分的な上書きだと、不要なファイルが残ってしまって悪さをしていたのかな……。


自前プラグインなので、Unityが3.5に公式アップデートした際の影響が心配です。
posted by be-style at 11:40| Comment(2) | Unity
この記事へのコメント
【症状】Unity 3.5.x 系で Android SDK Toolsを r22 以上にすると同様の症状が発生します。
【原因】r22 以上ではビルド環境に変更が加えられており、古い Unity では対応できていない。
【対処】暫定的な対処ですが android-sdk/build-tools/17.0.0/ の中のものを全て android-sdk/platform-tools/ へ複製する。

かなり古い記事ですが同様の症状で別の解決策があったので報告まで。
Posted by 通りすがり at 2013年09月29日 19:16
貴重な検証情報、ありがとうございます!

Android SDK Tool のリビジョンが原因だったのですね。
そこまで考えが至っていませんでした。

また何かお気づきの点がありましたら、ご指摘いただけると嬉しいです。
Posted by be-style at 2013年10月01日 22:51
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]