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

Я пытаюсь создать проект, который включает в себя библиотеку 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')
}
...

android (build.gradle):

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

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

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

Зачем?

PS Совсем наоборот (Android в зависимости от Java) работает отлично.

Ответы

Ответ 1

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

Вызывается: org.gradle.internal.component.AmbiguousConfigurationSelectionException:

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

  • debugApiElements
  • releaseApiElements

AGP путают, какой вариант выбрать. После проверки этого ответа мы можем найти, как решить проблему:

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

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

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

Таким образом, похоже, что вы пытаетесь сделать это не поддерживается плагином. См. Аналогичный вопрос, где Ник Кардосо пытается разъяснить это дело.