Я пытаюсь создать проект, который включает в себя библиотеку 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'
...
При попытке синхронизировать проект я получаю следующую ошибку:
Failed to resolve: project::android
Почему?
P.S. Другой способ (Android в зависимости от Java) работает нормально.




Сначала попробуем исправить ошибку сборки. Запустим ./gradlew build --stacktrace, чтобы увидеть более подробный вывод:
Caused by: org.gradle.internal.component.AmbiguousConfigurationSelectionException:
Cannot choose between the following configurations of project :androidLibrary:
- debugApiElements
- releaseApiElements
AGP не понимает, какой вариант выбрать. После проверки ответа это мы можем найти, как решить проблему:
implementation project(path: ':androidLibrary', configuration: 'default')
После попытки синхронизировать проект с этой настройкой вы увидите следующий вывод в консоли:
Ignoring dependency of module 'androidLibrary' on module 'javaLibrary'. Java modules cannot depend on Android modules
Таким образом, похоже, что то, что вы пытаетесь сделать, не поддерживается плагином. Обратитесь к аналогичный вопрос, где Ник Кардосо пытается прояснить ситуацию.
Дело в том, что вы не можете делать то, что хотите, это не поддерживается плагином Android Gradle. Я не понимаю, как этого добиться, учитывая существующие ограничения.
блестящий ответ! Собственно проблема была у меня. Отличное объяснение!
Я думал, что это может не поддерживаться. К сожалению, ни ваш ответ, ни тот, с которым вы связались, не предоставляют другого способа решить проблему (я знаю, что в другом ответе перечислены 3 «решения», но ни одно из них на самом деле не решает проблему, все они предлагают сделать что-то другое).