2013-08-05 2 views
2

Я изо всех сил пытаюсь понять, как импортировать проекты библиотеки в Android Studio таким образом, чтобы они были доступны для нескольких проектов. Документация для новой системы сборки подразумевает, что вам необходимо импортировать проекты библиотек в корень проекта, над которым вы работаете:Возможно ли обмен библиотечными проектами между проектами при использовании Android Studio и gradle?

Проекты градлей также могут зависеть от других проектов градиента, используя многопроектную настройку. Установка для нескольких проектов, как правило, работает, имея все проекты, как подпапки данного корня проекта (http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup)

Это проблематично, поскольку, как я уже говорил выше, я хотел бы сохранить часто используемые библиотеки, доступными ко всем текущим и будущим проектам. Например, я в настоящее время пытаюсь интегрировать Volley в новый проект, чтобы оценить его, исходя из предположения, что я захочу использовать его в нескольких других проектах в будущем. Я клонировали его к моему "$ {PROJECT_ROOT} /" папку, которая на том же уровне, на котором я создал мой тестовый проект, давая мне:

$ {PROJECT_ROOT}/TestProject/Тест
$ {PROJECT_ROOT}/залп

После попытки создать файл build.gradle моего проекта различными способами, единственный способ, с помощью которого я смог скомпилировать приложение, - это переместить Volley в основной проект TestProject, предоставив мне:

$ {PROJECT_ROOT}/TestProject/Тест
$ {PROJECT_ROOT}/TestProject/Залп

Не только это мешает мне использовать Volley в других проектах, которые не являются частью TestProject, не дублируя его или не клонируя его во второй раз, но это означает, что git хочет, чтобы я добавил его к репо, которое я установил на root из TestProject.

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

ответ

2

Не могли бы вы использовать git с подмодулями? например В файле .gitmodules, вы можете добавить следующее:

[submodule "volley"] 
path = volley 
url = https://path/to/volley/repository 

Вы можете установить URL в официальном репозитории залпа, либо к вашей собственной версии в доме залпа. Другие проекты можно настроить одинаково и указать на один и тот же репозиторий.

Я так думаю, другие пользователи могут позвонить git clone, и все зависимые проекты будут загружены в основную папку проекта, и им не придется беспокоиться о загрузке проектов библиотеки отдельно.

Для Volley, хотя я бы просто скомпилировал его в файл JAR и вложил его в папку/libs основного проекта. То есть, если вам не нужно изменять его источник.

[Обновить] Для проектов библиотеки, которые вам не нужно изменять, вы можете попробовать использовать Android Studio для их компиляции в файлы AAR для совместного использования. Файл AAR похож на JAR-файл на Android, поэтому вы можете добавить их в свою исходную папку/lib или опубликовать их в своем локальном/интранет-сервере maven. Если вы выберете маршрут maven, добавьте локальный/интранет-репозиторий в build.gradle и обратитесь к проекту библиотеки, который вы опубликовали.

Надеемся, что в будущем владельцы проектов библиотек будут строить свои проекты в файл AAR и публиковать их в Центральном репозитории Maven, поэтому мы можем просто ссылаться на них непосредственно из файла build.gradle.

+0

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

+1

Для проектов библиотек, которые вам не нужно изменять, вы можете попробовать использовать Android Studio для их компиляции в файлы AAR, а затем опубликовать их в своем локальном/интранет-сервере maven. Наконец, добавьте репозиторий локального/интрасети в build.gradle и обратитесь к проекту библиотеки, который вы опубликовали. – azgolfer

+0

azgolfer, я создал репозиторий maven и успешно удалось скомпилировать приложение, которое зависит от библиотек, содержащихся в нем. Сначала я подумал, что этот подход был чрезмерным, но это означает, что другие разработчики в команде избавлены от необходимости выполнять какую-либо конфигурацию (хотя для одиночного разработчика может быть избыточным для запуска репозитория maven локально). По-прежнему существуют проблемы обеспечения репо для удаленного доступа, но ни один из них не может быть преодолен. Если вы обновите свой ответ или опубликуете новый, чтобы отразить его с помощью maven repo, я соглашусь с ним. –

Смежные вопросы