Подтвердить что ты не робот

Как включить проект Java в проект Android?

Я использую Eclipse для разработки настольной игры для Android. Я разработал интерфейс в проекте Android.

С другой стороны, я разработал AI в регулярном проекте Java, потому что я хотел иметь возможность протестировать его без ограничений на эмулятор Android (я не нашел другого способа запустить код, используя мой Windows JVM).

Теперь наступает время, когда я хочу "присоединиться" к обоим проектам (которые работают нормально независимо), то есть использовать классы Java Java из пользовательского интерфейса.

Вот что я пробовал:

В моем проекте Android Properties > Projects References я пометил проект Java. Это позволяет мне без ошибок запускать проект Android (который создает экземпляр объекта AI).

Но он не работает во время выполнения с этой ошибкой:

Could not find class 'my.package.AI', referenced from method my.otherpackage.UI.onStart

Каким будет правильный способ включить проект AI Java в мой Android-проект?

(NB: Я все еще хочу иметь возможность разрабатывать и тестировать AI как обычное Java-приложение, поэтому я думаю, что использование фляги или копирование всех источников в проект Android не соответствовало бы моим потребностям)

EDIT:

Я надеялся, что новый ADT v17 решит проблему, но этого не произошло. Я пробовал практически каждый вариант, чтобы включить проект в свой проект Android:

  • Добавление или связывание исходной папки
  • Добавление проекта (вкладка "Путь сборки Java" > "Проекты" )
  • Добавление папки класса или библиотеки (вкладка "Путь Java" > вкладка "Библиотека" )
  • Включение всех ранее импортированных проектов/библиотек в качестве экспортированных

Единственный способ, который позволяет компилировать и запускать без ошибок, - это добавить JAR проекта Java к пути создания проекта Android.

4b9b3361

Ответ 1

Референции проектов добавляют только исходный код зависимого проекта (ваш проект AI) в качестве мягкой (возможно, слабой, более точной слова) ссылки, ваш проект AI не добавлен в ваш путь к проекту Android Project. поэтому фактический файл ai.jar не экспортируется в окончательный apk, когда Eclipse создает ваше приложение.

Вы должны добавить проект AI в путь построения проекта Android:

  • Щелкните правой кнопкой мыши на проекте Android, выберите "Путь сборки - настройка пути сборки" на вкладке "Проекты" (требуемые проекты на пути сборки), добавьте здесь проект AI.
  • Затем в закладке "Заказ и экспорт" (порядок пути сборки и экспортированные записи) отметьте новый добавленный проект AI в списке.

Шаг 2, вероятно, необязателен, это должно добавить проект AI в качестве ссылки в проекте Android и экспортировать файл ai.jar в final.apk, когда Eclipse создаст ваш проект Android.

Обновление с ADT 17.0.0:

Android Dev Team просто выпустит SDK r17 с ADT 17.0.0, который утверждает, что теперь правильно обрабатывает эти варианты использования:

Изменения в Eclipse

Контейнер динамических классов классов, называемый "Библиотечные проекты", был переименован в "Android Dependencies", поскольку теперь он содержит больше, чем только проекты библиотеки.

Теперь контейнер будет также заполнен проектами только для Java, на которые ссылаются проекты библиотек. Если эти Java-проекты также ссылаются на другие Java-проекты и/или файлы jar, они будут добавляться автоматически (также поддерживаются файлы jar, на которые ссылаются пользовательские библиотеки).

Важно: это происходит только в том случае, если ссылки заданы для экспорта в проект ссылки. Обратите внимание, что это не значение по умолчанию при добавлении проекта или файла jar в путь сборки проекта. Библиотечные проекты (и содержимое их файлов libs/*. Jar) всегда экспортируются. Это изменение влияет только на проекты только для Java и их собственные файлы jar.

Опять же, дубликаты (оба проекта и файлы jar) обнаруживаются и удаляются.

Подробнее в этой ссылке.

Ответ 2

Изменить: После долгих испытаний, чтения и поиска моего решения. Проблема заключается в том, что вы не можете ссылаться на другой проект из проекта Android, хотя он отлично подходит для обычного Java-приложения.

Обходной путь для меня (Windows с файловой системой NTFS):
В командной строке (права администратора) создайте ссылку символической папки, используя команду mklink /D, указывающую на папки исходного проекта, и обновите ее в Eclipse по мере необходимости. Очевидным ограничением является то, что вы не можете использовать те же имена пакетов в исходном проекте и целевом проекте, а затем возникает проблема с libs в общем проекте.

Пример:

cd \java\workspace\AndroidProject\src\your\package
mklink /D common c:\java\workspace\CommonProject\src\your\package\common

Уточнение: Вы можете ссылаться на другой проект из проекта Android, чтобы его скомпилировать, однако при запуске ссылочные классы из включенного проекта не помещаются в apk classes.dex (проверяется с помощью dex decompiler).

Ответ 3

Использование ADT 21.0.0 64 бит на Windows 7 64bit. Я попытался добавить проект для создания пути. Отметен в заказе и экспорте, сыграл с заказом. Я прочитал официальное решение , подробное объяснение этого решения, экспортированный как JAR, добавленный в libs. Не работал, в то время как источник был без ошибок. Читайте в комментариях, что решение не работает для всех.

Ему надоело и попробовало простое, но несколько более грязное решение: связал источник проекта Java с проектом Android. Это сделал трюк. Надеюсь, что это тоже поможет другим.

Ответ 4

Не добавляйте его в область ссылок проекта, а затем переходите в панель Android (в свойствах проекта), прокрутите вниз донизу и добавьте его в Библиотеки.

Это иногда работает, но иногда вызывает странные проблемы Eclipse (не уверен, почему), и в этом случае копирование jar непосредственно в проект, кажется, работает лучше всего.