Я старался, чтобы игровой проект был совершенно независимым от платформы, поэтому я разделил его на три проекта с низкого уровня на верхний специфический для Android уровень: двигатель, игра, игра для Android.
Причастными классами/интерфейсами в ошибке являются:
-
(низкоуровневый) проект engine определяет этот интерфейс:
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 (с другим проектом 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 проекта Android, как описано в других сообщениях и форумах, но это ничего не меняет.
Моя догадка заключается в том, что для параметров манифеста или проекта необходимо другое упоминание о зависимости пакета/класса для упаковки apk или времени выполнения. Любые идеи?