Как организовать управление исходными кодами для Android-проектов, включая библиотеки?

мне нужна небольшая помощь в определении наилучшего способа (или лучшей практики) организации моего Android-проекта. Для простоты скажем, что моим рабочим пространством Eclipse для Android является C:\Android\Projects\. Внутри этой папки я люблю отделять приложения от библиотек, и у меня есть еще две папки, C:\Android\Projects\Applications и C:\Android\Projects\Components.

Для одного проекта я клонировал библиотеку из GitHub в папку Components, скажем C:\Android\Projects\Componentes\SampleLib (внутри этой папки две папки TheLib и TheLibExample). А мое приложение создано в C:\Android\Projects\Applications\MyTestApp. Затем я включил библиотеку в приложение, следуя этим инструкциям.

Теперь скажем, что я хочу использовать GitHub, чтобы поделиться своим приложением с сообществом разработчиков с открытым исходным кодом. Я создам репозиторий и перенесу все из C:\Android\Projects\Applications\MyTestApp в какой-нибудь репозиторий.

Если кто-то захочет вилкой вставить мое приложение или даже помочь мне, ему понадобится библиотека для компиляции и запуска, которая не включена в сам мой проект. Файл default.properties будет иметь что-то вроде android.library.reference.1=.../Components/SampleLib/TheLib и что кто-то должен будет вручную клонировать и эту библиотеку и поместить ее в тот же относительный путь, иначе это испортит управление исходным кодом моего приложения.

Единственный способ решить эту проблему - организовать мое рабочее пространство следующим образом:

C:\Android\Projects\Applications\MyTestApp\TheApp
C:\Android\Projects\Applications\MyTestApp\TheLib
C:\Android\Projects\Componentes\SampleLib

И мое хранилище должно быть заполнено содержимым из C:\Android\Projects\Applications\MyTestApp\.

Но что происходит при обновлении библиотеки? Я не могу просто вытащить новые изменения, мне нужно скопировать их в папку TheLib. В предыдущей организации папок это не понадобится, так как я ссылался на оригинальное клонированное хранилище, а не на копию.

Что мне тогда делать? Должен ли я выбрать первый вариант и позволить кому-нибудь, кто откажется от моего проекта, иметь дело с библиотечной зависимостью так, как он посчитает нужным, или я должен выбрать второй вариант и дать всем больше работы, синхронизируя две папки, когда оригинальная извлекает изменения из своего репозитория?

6
задан Ricardo Amaral 19 September 2011 в 19:25
поделиться