Как мне добавить подмодуль java gradle в мой модуль Android?

#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.)