Как решить эту проблему зависимости проекта Android? - PullRequest
4 голосов
/ 31 августа 2011

У меня есть следующие проекты под Eclipse:

A (проект Android) => B (проект Java) => C (проект Java)

где символ "=>" указывает, что проект слева от символа зависит от проекта справа от символа, а путь сборки проекта B всегда включает проект C при любых обстоятельствах .

Если я включу оба проекта B и C в путь сборки проекта A, A будет работать без проблем.

Однако, , если я включаю проект B без включения проекта C в путь сборки проекта A, A вылетает при запуске.

Есть ли альтернатива решению вышеуказанной проблемы без включения проекта C в путь сборки проекта A , поскольку между A и C нет прямой зависимости?

Обратите внимание, что C не следует преобразовывать в проект Android, чтобы разрешить запуск других Java-проектов (не указаны здесь), которые зависят от него.

Ответы [ 3 ]

0 голосов
/ 31 августа 2011

Библиотеки из проекта C должны быть экспортированы проектом B.

http://www.informit.com/articles/article.aspx?p=367962 раздел 6.1.4

С уважением, Stéphane

0 голосов
/ 13 сентября 2011

Я думаю, что лучшее решение в вашем случае - перевести ваш проект на использование таких инструментов, как maven или ivy . Подобные инструменты помогают вам управлять такими проблемами, как управление зависимостями. Конечно, эти инструменты предоставляют гораздо больше возможностей, например, улучшают процесс сборки, фильтруют ресурсы, автоматически внедряют артефакты, создают отчеты и т. Д.

Я много работаю с Maven и пытаюсь объяснить, как я пытаюсь решить проблему в вашем случае. Прежде всего, вы можете создать все наши проекты (включая Android) и определить отношения между вашими проектами ( A зависит от B , который зависит от C ), только установка самого важного проекта для maven проектов, файла pom.xml.

В [этой ссылке] [3] вы можете прочитать о Введение в механизм зависимости . Идея проста: вам нужно определить организацию того, что требует каждый проект, это могут быть артефакты или библиотеки в сети. Maven загрузит все и создаст каждый проект. В вашем случае, вероятно, вам нужно будет построить проект C, который автоматически (если он настроен правильно) будет использоваться проектом B и так далее A.

Обратите внимание, чтобы понять, как управляются зависимости, потому что это ключ.

Кстати, в проекте Android, вероятно, вам потребуется использовать [плагин Android maven] [4], который идеально подойдет для ваших целей.

Удачи!

0 голосов
/ 31 августа 2011

Нет, вы не можете решить базовую проблему, хотя есть много обходных путей.

Все должно быть включено, иначе вы получите исключение, не найденное классом.Вы всегда можете собрать Project C в файл JAR и включить его в путь к lib, и тогда вам не нужно будет зависеть от проекта.Создайте проект B в файл Jar, и вы сможете разработать свой проект Android без каких-либо ссылок на какие-либо затмения Java-проектов.

Подумайте об этом, если вы скачаете файл JAR, например Farmors super lib far.jarи у моей библиотеки есть другие зависимости, которые вы должны извлекать для них и там зависимости и т. д. рекурсивно, поэтому у нас есть передовые инструменты, такие как maven, для обработки всего этого беспорядка зависимостей.

...