私はゲーム プロジェクトをプラットフォームに完全に依存しないようにしようとしたので、エンジン、ゲーム、Android ゲームのように、低レベルから最上位の Android 固有レベルまでの3 つのプロジェクトに分割しました。
エラーに含まれるクラス/インターフェースは次のとおりです。
(低レベル) エンジン プロジェクトは、次のインターフェイスを定義します。
com.myteam.engine.IGame
(中間レベル) プラットフォームに依存しないゲーム プロジェクトでは、これらのクラスが定義されています。
com.myteam.myproject.Game com.myteam.myproject.MyProject (derived from com.myteam.myproject.Game)
(最上位) android プロジェクトはアクティビティなどを実装します。
com.myteam.myproject.android.MyAndroidActivity (using com.myteam.myproject.MyProject)
すべてが適切にコンパイルされ、Windows で完全に実行されます (レベル 3 の別の Windows プロジェクトで最初の 2 つを使用)。
ただし、ADT を使用して実行すると、実行時にアクティビティの開始時に失敗します。Android アプリは基本的に、"NoClassDefFoundError com.myteam.myproject.MyProject" 例外を含むコール スタックを表示するだけです。
LogCat 出力が示すように、ロード/解決中に、そのスーパー クラス (またはスーパー クラスのインターフェイス) によって例外が発生したようです。
12-20 19:51:51.897: D/ddm-heap(218): Got feature list request
12-20 19:51:52.207: I/dalvikvm(218): Failed resolving Lcom/myteam/myproject/Game; interface 18 'Lcom/myteam/engine/IGame;'
12-20 19:51:52.217: W/dalvikvm(218): Link of class 'Lcom/myteam/myproject/Game;' failed
12-20 19:51:52.227: W/dalvikvm(218): Unable to resolve superclass of Lcom/myteam/myproject/MyProject; (52)
12-20 19:51:52.227: W/dalvikvm(218): Link of class 'Lcom/myteam/myproject/MyProject;' failed
12-20 19:51:52.227: E/dalvikvm(218): Could not find class 'com.myteam.myproject.MyProject', referenced from method com.myteam.myproject.android.MyAndroidActivity.onCreate
12-20 19:51:52.227: W/dalvikvm(218): VFY: unable to resolve new-instance 54 (Lcom/myteam/myproject/MyProject;) in Lcom/myteam/myproject/android/Youcode_AndroidActivity;
12-20 19:51:52.227: D/dalvikvm(218): VFY: replacing opcode 0x22 at 0x0008
12-20 19:51:52.227: D/dalvikvm(218): Making a copy of Lcom/myteam/myproject/android/Youcode_AndroidActivity;.onCreate code (88 bytes)
他の投稿やフォーラムで説明されているように、Android ゲーム プロジェクトの「Build Path / Order and Export」Eclipse プロジェクト設定の下に最初の 2 つのプロジェクトを追加しようとしましたが、何も変わりません。
私の推測では、マニフェストまたはプロジェクトの設定には、apk パッケージまたはランタイムのパッケージ/クラスの依存関係について別の言及が必要です。何か案は?