Android Gradle добавление внешней библиотеки и вложенных внешних библиотек в проект

как добавить внешнюю библиотеку и вложенные внешние библиотеки в проект android?


моя структура проекта (не допускается не зависит напрямую от library3 или library4, однако, он будет жаловаться, если я не включаю их в зависимости в и . Итак, я включил их, чтобы остановить это жалующийся.

приложения app1/настройки.Gradle в

include ':'
include '..:libraries:library1'
include '..:libraries:library2'
include '..:libraries:library3'
include '..:libraries:library4'

файл library1

файл library1/строить.Gradle в

buildscript {
    ...
}

apply plugin: 'android-library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':..:library3')
    compile project(':..:library4')
}

android {
    ...
}

файл library1/настройки.Gradle в

include ':'
include '..:library3'
include '..:library4'

library2..4

library2..4 / build.Gradle в

buildscript {
    ...
}

apply plugin: 'android-library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    ...
}

library2..4/настройки.Gradle в

include ':'

при попытке gradlew clean build on App1 я получаю следующую ошибку:

FAILURE: Build failed with an exception.

* Where:
Build file '/home/user/projects/branches/branch1/Apps/libraries/library1/build.gradle' line: 15

* What went wrong:
A problem occurred evaluating project ':..:library:library1'.
> Project with path ':..:library3' could not be found in project ':..:library:library1'.

строка 15-это compile project(':..:library3') на .

как добавить внешнюю библиотеку и вложенные внешние библиотеки в проект android?

3 ответов


в настройках верхнего уровня.Gradle в (приложении app1/настройки.gradle) файл сделать что-то подобное для каждой библиотеки

include ':library1'   
include ':library2'   
include ':library3'   
include ':library4'   

project(':library1').projectDir = new File(rootProject.projectDir, '../libraries/library1')
project(':library2').projectDir = new File(rootProject.projectDir, '../libraries/library2')
project(':library3').projectDir = new File(rootProject.projectDir, '../libraries/library3')
project(':library4').projectDir = new File(rootProject.projectDir, '../libraries/library4')

удалите другие настройки.gradle файлы, они вам не нужны

тогда в каждом скрипте сборки вам нужно использовать только

compile project (':library1')
compile project (':library2')
etc....

как указано выше, просто используйте одни настройки.файл gradle в корневом проекте (App1).

затем из папки App1 запустите gradlew clean :library1:build чтобы проверить, что library1 строится правильно.

Что касается вопроса о App1, жалующемся на отсутствующие библиотеки 3 & 4, Вы уверены, что у вас нет кода в приложении, непосредственно ссылающемся на эти библиотеки, либо это, либо библиотеки не найдены при компиляции library1. Создайте каждую библиотеку по отдельности, чтобы проверить, что все они построены нормально.


один вопрос. Вам нужно это дерево зависимостей?

--- App
   |--- Library 2
   |--- Library 1
       |--- Library 3
       |--- Library 4

если да, вашему приложению не нужно импортировать библиотеки 3 и 4. Эти зависимости доступны в библиотеке 1.

о настройки.файлы gradle. Почему по одному в каждом модуле? Этот файл используется только в корневом проекте (например, Eclipse workspace) для ссылки на ваши модули (приложение, Библиотека 1, Библиотека 2 и т. д...)

это поможет вам?


Я делаю это для относительных путей:

include '..:ambilWarna'
include '..:excel'
include '..:pdfjet'
include '..:commons'
include '..:volley'


include  ':odb2'
include  ':azure'

include ':carBase'
include ':fuelTrackerLib'
include ':comsourcecastlelogbook'