2012年10月13日土曜日

[Android] Unity + EclipseのClassNotFoundExceptionを解決する

Hwo to solve the ClassNotFoundException on Unity3D.

Unityで開発したプロジェクトをEclipseでカスタマイズするため、これらのコンテンツを参考にさせていただきました。
UnityでAndroidの機能を拡張する2つの手法とは(3/3) - @IT:
유니티 게임 개발의 정석 のGoogle翻訳 http://www.unitystudy.net/

このブログを書いている時点のバージョンは次の通りです。
Unity 3.5.3f3
Eclipse Indigo Service Release 2 (32bit) + Pleiades日本語化プラグイン
Android SDK r20

Unityで開発したAndroidアプリをEclipseでカスタマイズしてビルドするためには、大まかに次の手順が必要です。

1.
UnityをAndroid用にビルドしたあと、Unityプロジェクトのフォルダー内の
Temp\StagingArea
を Eclipse に Android Project from Existing Code としてインポートする

2.
インポートしたプロジェクトのプロパティーを開き、「Is Library」として設定する。

3.
新しいEclipseに新しいAndroid用プロジェクトを作成し、1.でインポートしたプロジェクトをライブラリーとして参照する。
ビルドパスにUnityのclasses.jarを追加する。
Unityのプロジェクトのassetsフォルダーの内容を新しいプロジェクトに移動する。


上記コンテンツを参考にUnityプロジェクトをEclipseでビルドしてみたところ、ClassNotFoundException のためビルドできない事態に陥ってしまいました。

LogCatにこのようなエラーが出ます。
いろいろ試して解決することができたのでその手順を公開します。

ビルドしたいプロジェクトのプロパティーを開き、「Javaのビルド・パス」の「ライブラリー」でUnity付属のclasses.jarを外部jarとして設定した後、、「順序及びエクスポート」でclasses.jarにチェックをつけます
これで ClassNotFoundException は起きなくなりました。
ライブラリーに外部jarを追加するだけでは足りないようです。
この他、UnityとEclipseのそれぞれパッケージ名が異なって設定されている場合も ClassNotFoundException が起きるようです。

Unityで作ったAndroidゲーム Shuffle!V 公開中です!

以上、参考になれば幸いです。

関連ブログ
[Android] Unity + Eclipse の unityplayerproxyactivity.jarの欠落を解決する
[Unity 3D] Blender could not be found.を解決するには

0 件のコメント:

コメントを投稿