Не удалось разрешить проект: зависимость библиотеки Android и модуля библиотеки Java

avatar
Sir Codesalot
8 апреля 2018 в 05:31
6080
1
17

Я пытаюсь создать проект, включающий библиотеку Android и библиотеку Java в Android Studio (3.1). Библиотека Java зависит от библиотеки Android. Оба модуля в моем проекте выглядят следующим образом:

MyProject    
|-android
|-java

Оба отображаются в settings.gradle:

include ':android', ':java'

И библиотека Java зависит от библиотеки Android следующим образом:

java (build.gradle):

apply plugin: 'java-library'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation project(':android')
}
...

андроид (build.gradle):

apply plugin: 'com.android.library'
...

При попытке синхронизировать проект я получаю следующую ошибку:

Не удалось разрешить: project::android

Почему?

P.S. Наоборот (Android зависит от Java) работает нормально.

Источник

Ответы (1)

avatar
azizbekian
15 апреля 2018 в 09:09
16

Сначала попробуем исправить ошибку сборки. Давайте запустим ./gradlew build --stacktrace, чтобы увидеть более подробный вывод:

Вызвано: org.gradle.internal.component.AmbiguousConfigurationSelectionException:

Невозможно выбрать одну из следующих конфигураций проекта :androidLibrary:

  • debugApiElements
  • releaseApiElements

AGP запутался, какой вариант выбрать. Изучив этот ответ, мы можем найти, как решить проблему:

implementation project(path: ':androidLibrary', configuration: 'default')

После попытки синхронизировать проект с этой настройкой вы увидите следующий вывод в консоли:

Игнорирование зависимости модуля 'androidLibrary' от модуля 'javaLibrary'. Модули Java не могут зависеть от модулей Android

Похоже, то, что вы пытаетесь сделать, не поддерживается подключаемым модулем. Обратитесь к аналогичному вопросу, где Ник Кардосо пытается прояснить ситуацию.

Sir Codesalot
16 апреля 2018 в 11:30
0

Я думал, что это может не поддерживаться. К сожалению, ни ваш ответ, ни тот, на который вы ссылаетесь, не предоставляют никакого другого способа решения проблемы (я знаю, что в другом ответе перечислены 3 «решения», но ни одно из них на самом деле не решает проблему, все они предлагают вместо этого сделать что-то другое).

azizbekian
16 апреля 2018 в 12:30
0

Дело в том, что вы не можете делать то, что хотите, если это не поддерживается плагином Android Gradle. Я не понимаю, как вы можете добиться этого, учитывая существующие ограничения.

Tom Rutchik
16 мая 2020 в 01:28
1

блестящий ответ! Собственно проблема у меня была. Отличное объяснение!