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

Я безуспешно пытался добавить проект библиотеки в качестве зависимости от другого проекта библиотеки в Android Studio. Ниже представлена ​​структура моего проекта:

- apps
  - demo (depends on android utilities & android ui)
- libraries
  - android utilities
    - utilities
  - android ui
    - ui (depends on android utilities)

В качестве руководства я использовал следующее: Добавить проект локальной библиотеки в качестве зависимости к нескольким проектам в Android Studio

Утилиты Android/build.gradle

...

Утилиты Android/утилиты/build.gradle

apply plugin 'com.android.library'

...

Пользовательский интерфейс Android / settings.gradle

include ':ui'
include ':utilities'
project(':utilities').projectDir = new File(settingsDir, '../android utilities/utilities')

Пользовательский интерфейс Android/build.gradle

...

Пользовательский интерфейс Android/UI/build.gradle

apply plugin 'com.android.library'

...

dependencies {
    compile project(':utilities')
}

У меня установлены Android Utilities и Android Ui как отдельные проекты, и я могу без проблем скомпилировать проект Android Utilities. Но я не могу скомпилировать отдельный проект Android Ui. Сама Android Studio не указывает на какие-либо ошибки, но gradle выдает несколько ошибок о том, что пакеты из библиотеки утилит не существуют.


person Remel Pugh    schedule 21.10.2015    source источник
comment
Содержат ли утилиты файл build.gradle?   -  person Gabriele Mariotti    schedule 22.10.2015
comment
Да, я обновил вопрос, чтобы отразить, что эти файлы существуют, однако, если вы считаете, что было бы лучше включить все содержимое файлов gradle, я определенно могу это сделать.   -  person Remel Pugh    schedule 22.10.2015
comment
Это кажется правильным. Вы пытались запустить Gradle Clean?   -  person Gabriele Mariotti    schedule 22.10.2015
comment
Я сделал, выполнение Build\Clean Project из IDE дает мне те же ошибки, что и при попытке сборки. Мне нужно запустить gradlew clean из командной строки, чтобы получить успешную очистку. Но чистка тоже не помогает. Я также попытался воссоздать проекты с нуля в новой папке. Я ценю помощь, поскольку я чувствую, что это что-то простое, что я просто упускаю из виду.   -  person Remel Pugh    schedule 22.10.2015
comment
Та же проблема здесь. Вы когда-нибудь находили решение?   -  person enl8enmentnow    schedule 09.03.2016
comment
К сожалению, я не нашел решения этой проблемы, единственная работа, которую я придумал, заключалась в том, чтобы отправить библиотеку в мой собственный частный репозиторий maven.   -  person Remel Pugh    schedule 11.03.2016


Ответы (2)


У меня была аналогичная проблема в моем проекте, но мне удалось ее решить. У вас более 1 варианта сборки?

В итоге я добавил следующее в библиотеку (/ui/ui/build.gradle в вашем случае), где buildFlavor1 и buildFlavor2 - варианты сборки, используемые в вашем приложении. Я думаю, проблема была в том, что Gradle не знает о возможных конфигурациях при разрешении зависимостей, поэтому он не может правильно выбрать библиотеку для каждого варианта сборки. Надеюсь это поможет!

configurations {
    buildFlavor1DebugCompile
    buildFlavor2DebugCompile
    buildFlavor1ReleaseCompile
    buildFlavor2ReleaseCompile
}

dependencies {
    ...

    buildFlavor1DebugCompile project(path: ':utilities', configuration: 'buildFlavor1Debug')
    buildFlavor2DebugCompile project(path: ':utilities', configuration: 'buildFlavor2Debug')
    buildFlavor1ReleaseCompile project(path: ':utilities', configuration: 'buildFlavor1Release')
    buildFlavor2ReleaseCompile project(path: ':utilities', configuration: 'buildFlavor2Release')
}
person Armaxis    schedule 19.04.2016

У вас неправильный синтаксис. Этот:

include 'ui'

должно быть так:

include ':ui'

(вы пропустили двоеточие)

person Jim    schedule 22.10.2015
comment
Спасибо, что указали на это, к сожалению, это была просто оплошность с моей стороны, фактический файл settings.gradle содержит двоеточие. Я исправил образец. - person Remel Pugh; 22.10.2015