Android Activity under Eclipse/ADT with Project Dependencies (Failed resolving XY)

Я пытался сохранить проект игры вполне независимым от платформы, поэтому я разделил его на три проекта от низкоуровневого до верхнего уровня, специфичного для андроида, как то: engine, game, android game.

Задействованные классы/интерфейсы в ошибке следующие:

  1. (низкий уровень) проект engine определяет этот интерфейс:

    com.myteam.engine.IGame
    
  2. (средний уровень) проект платформонезависимой игры определяет эти классы:

    com.myteam.myproject.Game
    com.myteam.myproject.MyProject (производный от com.myteam.myproject.Game)
    
  3. (верхний уровень) android проект реализует активность и т.д.:

    com.myteam.myproject.android.MyAndroidActivity (используя com.myteam.myproject.MyProject)
    

Все хорошо компилируется и отлично работает под Windows (с другим проектом Windows на 3-м уровне, использующим первые два).

Но при запуске с ADT происходит сбой во время выполнения, когда запускается Activity. Приложение 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)

Я попробовал добавить два первых проекта в настройках проекта Eclipse "Build Path / Order and Export" проекта android игры, как описано в других сообщениях и форумах, но это ничего не меняет.

Моя догадка в том, что в настройках Manifest или Project нужно еще одно упоминание зависимостей пакетов/классов для упаковки apk или времени выполнения. Есть идеи?

11
задан Andrew Marshall 20 December 2011 в 20:40
поделиться