Использование разных версий нескольких проектов библиотек Android в нескольких клиентских проектах (в Eclipse) - PullRequest
1 голос
/ 30 июня 2011

Прежде всего, у меня есть большинство моих знаний о проектах библиотек из google docs и подробное описание системы сборки Android в этой статье .

Настройка

В моем рабочем пространстве Eclipse есть несколько клиентских проектов, которые импортируют библиотеки Android. Каждый клиент импортирует свой набор библиотек, а некоторые библиотеки импортируют друг друга.

Каждый клиент имеет свой собственный репозиторий Subversion, и все библиотеки находятся в одном репозитории Subversion.

Все строит и хорошо выполняет.

Проблемы

  1. Клиентские проекты и библиотеки не развиваются синхронно. Некоторые клиентские проекты нуждаются в более старых версиях библиотек. В Eclipse нужно создавать множество проектов. Некоторые проекты библиотек должны создаваться несколько раз из разных ревизий хранилища библиотек.
  2. Мне нужно иметь много библиотек, потому что в одном библиотечном проекте все его ресурсы окажутся в клиентском проекте, даже если клиент фактически не использует ни одну из них. Я здесь?
  3. Я проверяю разные ревизии одной и той же библиотеки в рабочей области. С Eclipse невозможно импортировать более одного библиотечного проекта, потому что проекты eclipse имеют одинаковые имена в файле .project (Eclipse жалуется на это при попытке импортировать второй)
  4. Затмение ??

EDIT

Ответ Ярека Потюка работает. Но это только решает проблему, описанную в пункте 3. Мне все еще нужно создавать каждый библиотечный проект отдельно в Eclipse.

Есть ли решение, в котором мне не нужно создавать проект в Eclipse для каждого импортируемого библиотечного проекта? У кого-нибудь есть рабочий раствор с муравьем?

1 Ответ

2 голосов
/ 30 июня 2011

Позвольте мне объяснить, как мы справляемся с этим.Мы используем Mercurial Subrepo, но он должен быть точно таким же, используя svn: externals в вашем случае.

0) предварительное условие: убедитесь, что ваши файлы .project и .classpath зафиксированы для репо с вашими проектами ....

1) В основном проекте у нас есть каталог «subrepo», и мы храним там все внешние библиотеки (как подкаталоги).В Mercurial это делается с помощью subrepo, в svn вы должны иметь возможность ссылаться на определенную версию библиотеки (тег SVN или URL-адрес ветви), используя конфигурацию svn: externals: http://svnbook.red -bean.com / en / 1.0 /ch07s03.html

2) Чистый эффект заключается в том, что при извлечении основного проекта вы автоматически извлекаете зависимые библиотеки в каталоге subrepo.Пока все хорошо.

3) Теперь в eclipse происходит сбой основного каталога, потому что с ним не связана библиотека ..... Что вы делаете в этом случае - «Добавить новый проект Java»,введите UNIQUE имя проекта (например, имя_библиотеки_объект-имя_проекта. Снимите флажок "Использовать местоположение по умолчанию" и перейдите к библиотеке подпункта. Eclipse настроит проект для вас из существующего .project. Добавьте этот проект как зависимый проект в Android и, возможно, также в eclipse... Примечание! УНИКАЛЬНОЕ имя не изменит имя .project, но позволит eclipse иметь более чем один из ваших проектов библиотеки, извлеченных .....

4) Теперь, когда ваш проект компилируетсязафиксировать все (включая файлы .project и .classpath) для репо ...

5) Всякий раз, когда кто-то проверяет проект, библиотека извлекается в правильной версии, и единственный дополнительный шаг, необходимый для повторения, - это повторить пункт 3) - добавить новый Java Project для subrepo и дать проекту уникальное имя ... Вот и все (Eclipse будетв любом случае обращайтесь к каталогу subrepo / library, а не к уникальному имени)

...