Ссылки на проекты внешних библиотек в Android Studio (v0.8.9)

1

У меня есть специальная библиотека, на которую нужно ссылаться примерно в 10 проектах. Все отлично работает в Eclipse, но я хочу перенести их в Android Studio, чтобы воспользоваться системой сборки. Я уже проверил

Студия Android добавляет внешний проект для сборки.gradle

Как поделиться одним источником библиотеки в нескольких проектах

и некоторые другие ссылки и документы в Gradleware, но я не собираюсь компилировать мои проекты.

Моя файловая структура похожа:

+projects

| +libraryProject

| +---workspace

| +------projectSrc

|

| +project0

| +---workspace

| +------projectSrc 0

|

| +project1

| +---workspace

| +------projectSrc 1

,

| +projectN

| +---workspace

| +------projectSrc N

Каждый проект содержит документы, файлы дизайна и т.д.... и поэтому нет необходимости иметь src в одной корневой папке.

В моем файле "project1", settings.gradle, который я использовал:

include ':module-custom-lib'
project(':module-custom-lib').projectDir = new File(settingsDir, '../../../libraryProject/workspace/projectSrc')

В моем файле build.gradle в разделе зависимостей добавьте:

dependencies {
    compile project(':..:..:..:libraryProject:workspace:projectSrc')
    ....
}

Но я получаю сообщение о том, что проект не найден.

Я также использовал следующий подход:

def customLib = file('../../../libraryProject/workspace/projectSrc')
settings.createProjectDescriptor(rootProjectDescriptor, 'module-custom-lib', customLib)
include ':module-custom-lib'

Затем в build.gradle

dependencies {
    compile project(':module-custom-lib')
    ....
}

Пожалуйста помоги. Спасибо за ваше время.

EDIT: Мне удалось заставить его работать, добавив приложение модуля в качестве суффикса в проекте dir.:

include ':module-custom-lib'
project(':module-custom-lib').projectDir = new File(settingsDir, '../../../libraryProject/workspace/projectSrc/app')

Теперь члены библиотеки отлично разбираются, но класс ресурсов проекта "R" не может быть разрешен. Поэтому, если я это сделаю:

setContentView(R.layout.main);

он не может найти этот ресурс. Очистка и восстановление проекта не устраняет проблему.

EDIT 2: По-видимому, возникла проблема с слиянием манифеста, потому что проблема была исправлена после того, как я скорректировал minSdk и targetSdk обоих проектов. Предыдущее решение работает отлично.

Теги:
android-studio
build.gradle
android-gradle

2 ответа

4
Лучший ответ

Ваша первая попытка имеет более простой синтаксис и должна работать. Файл settings.gradle выглядит нормально:

include ':module-custom-lib'
project(':module-custom-lib').projectDir = new File(settingsDir, '../../../libraryProject/workspace/projectSrc')

хотя вы должны быть осторожны в отношении относительного пути там - Android Studio может не использовать тот же рабочий каталог, что и сборка, которую вы делаете из командной строки, поэтому ссылки на вещи относительно rootDir могут помочь rootDir проблемы.

В блоке dependencies файла сборки модуля вам необходимо ссылаться на модуль так же, как и на settings.gradle, поэтому вы должны использовать что-то вроде этого:

dependencies {
    compile project(':module-custom-lib')
}

В блоках dependencies вы ссылаетесь на проекты с использованием пространства имен проектов Gradle, и поскольку вы уже явно настроили корневой каталог библиотечного модуля, вам не нужно пытаться найти его в файловой системе здесь. Синтаксис этого :..:..:.. не будет работать в любом случае, чтобы ссылаться на модуль, который находится за пределами корневого каталога вашего проекта, как этот.

  • 0
    Это дает мне ошибку «Конфигурация с именем« default »не найдена».
  • 0
    Любой намек? Что на самом деле означает это сообщение?
Показать ещё 3 комментария
0

Вы должны рассмотреть возможность объединения "выпусков" вашей библиотеки в репозиторий Maven (возможно, ваш локальный репозиторий Maven). Таким образом, вы можете ссылаться на свою библиотеку из любого другого проекта, который должен использовать его так же, как и с сторонними библиотеками.

  • 0
    У меня есть множество проектов, на которые все еще будут ссылаться из Eclipse (во время процесса миграции), поэтому я не хочу переходить на локальное хранилище Maven или развертывать как aar.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню