У меня есть файл AAR, который зависит от файла JAR, когда я создаю проект AAR, он не содержит кода JAR.
Подробные сведения:
У меня есть проект библиотеки Java SDK, который содержит код, который мы используем для веб-проектов Java, и такая библиотека создается с использованием Gradle и находится на внутреннем сервере nexus (как JAR).
Цель состоит в том, чтобы предоставить "настроенную для Android" версию этой библиотеки JAR через библиотеку AAR, которую могут использовать несколько приложений Android, и свести к минимуму усилия (и шаблонный код) по ее реализации. Этот файл AAR также загружается на сервер nexus для использования в проектах приложений Android.
Мой проект AAR включает зависимость gradle для моей библиотеки Java SDK (JAR), но при сборке AAR не включает никаких классов из нее.
Код:
Это gradle-файл проекта Java SDK:
apply plugin: 'java'
//noinspection GroovyUnusedAssignment sourceCompatibility = 1.7 version = '1.1.1'
repositories { mavenCentral() }
jar { from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } }
Это файл gradle для моего проекта AAR, обратите внимание, что я удалил из него объявления репозитория Maven для моего сервера nexus. Я думаю, это не должно иметь значения для этого вопроса.
ПРИМЕЧАНИЕ: Изначально я решил проблему, добавив JAR в каталог lib проекта AAR, но это нежелательно. Это делает использование сервера nexus бесполезным. Было бы хорошо, если бы мы могли просто указать номер версии JAR в файле gradle проекта AAR, и обновление произойдет автоматически во время компиляции.
ПРИМЕЧАНИЕ 2: Я попытался добавить transitive=true к моей зависимости AAR в проекте Android, но это ничего не решило, реальная проблема заключается в том, что при сборке проекта AAR код проекта JAR не объединяется.
Переведено автоматически
Ответ 1
Вы можете добавить эту задачу:
task copyLibs(type: Copy) { from configurations.compile into 'libs' }
Зависимости будут загружены из вашего Nexus, но когда вам нужно упаковать библиотеку, сначала выполните эту задачу, и jar файлы будут скопированы и включены в final aar.
Ответ 2
По умолчанию AAR не включает никаких зависимостей. Решение, упомянутое @Hector, должно работать для плагина gradle < 3.0. Для плагина Gradle 3.0+ попробуйте custom config, как указано здесь.
android { ... }
// Add a new configuration to hold your dependencies configurations { myConfig }
The upper ones didn't work for me in android tools 3.6.2 with Gradle. 5.6.1 . For anyone having the same issue, using https://github.com/kezong/fat-aar-android in the end worked fine for me.