#java #android #intellij-idea #gradle
#java #Android #intellij-idea #gradle
Вопрос:
Предположим, у меня есть проект приложения Android в IntelliJ Idea с Gradle. Вызовите его MyApplication
. Что я хочу сделать, так это добавить обычный модуль библиотеки Java (не проект библиотеки Android) в качестве подмодуля в MyApplication
. Давайте назовем этот модуль a testlib
. И затем, когда весь проект собран, я хочу, чтобы этот модуль был скомпилирован в jar и включен в папку / libs MyApplication.
Что я пробовал: я создал подмодуль testlib и включил его в качестве зависимости в MyApplication, но я получаю следующее предупреждение:
Предупреждение: Gradle: модуль ‘testlib’ не будет скомпилирован. К сожалению, вы не можете использовать Java-модуль без Gradle и модуль Android-Gradle в одном проекте.
Возможно ли это вообще?
Комментарии:
1. Определенно возможно. У меня есть проект, который содержит как модули Java, так и модули Android. Похоже, что ваш Java-модуль, возможно, не настроен как модуль gradle, так что это будет первое, что нужно исправить. Затем вы захотите добавить пользовательскую задачу gradle для первой сборки модуля java, затем скопировать скомпилированный jar в папку libs, а затем собрать модуль Android. У меня сейчас нет времени давать вам какой-либо код, но, надеюсь, это укажет вам правильное направление.
2. Вы решили эту проблему? У меня то же самое, и я застрял: (
3. Я получаю ту же ошибку. У меня есть модуль Java с maven и модуль Android gradle.
Ответ №1:
Если вы создали свой проект в IntelliJ как проект Android-gradle, то при переходе в окно «Добавить новый модуль» вы должны увидеть опцию «Gradle: Java library», подобную этой:
Ответ №2:
IntelliJ IDEA не поддерживает модули Gradle и не-Gradle в одном проекте. В комментарии от JetBrains на их форуме это четко указано.
Решение состоит в том, чтобы либо преобразовать модули Maven в модули Gradle, либо разделить проект на две части. При последнем подходе, если вы создадите обычный модуль библиотеки Java с помощью Maven перед созданием проекта Gradle, вы все равно сможете использовать его в качестве зависимости в проекте приложения Android.
Остерегайтесь использования разных уровней исходного кода языка Java в многомодульных проектах Gradle. IntelliJ IDEA неправильно обрабатывает их из-за ошибки либо в IntelliJ IDEA, либо в Gradle. (Ожидается обсуждение, следует ли это исправить в IDE или Gradle.)