Fat-aar-android: как собрать все зависимости в один AAR
Репозиторий давно не обновлялся
Последнее обновление было 1 год назад.
Когда-нибудь сталкивались с ситуацией, когда ваша Android-библиотека зависит от нескольких модулей, а при подключении к проекту приходится тащить за собой целую кучу зависимостей? Плагин fat-aar-android решает эту проблему раз и навсегда.
Что это за зверь?
Fat-aar-android — это Gradle-плагин, который умеет «упаковывать» все зависимости вашей библиотеки в один итоговый AAR-файл. По сути, он создает «жирный» (fat) AAR, содержащий не только ваш код, но и все транзитивные зависимости.
Кто оценит:
- Разработчики SDK и библиотек
- Команды, которым нужно распространять свои решения в виде единого артефакта
- Те, кто устал от проблем с версиями зависимостей
Главные фишки
1. Простота интеграции
Добавляется в проект буквально в три шага:
- Подключаем в корневом build.gradle:
dependencies {
classpath 'com.github.kezong:fat-aar:1.3.8'
}
- Применяем плагин в модуле:
apply plugin: 'com.kezong.fat-aar'
- Указываем зависимости через
embedвместоimplementation:
dependencies {
embed 'com.some.library:awesome:1.0.0'
}
2. Поддержка всего и вся
Плагин умеет объединять:
- Классы (Java/Kotlin)
- Ресурсы
- Манифесты
- Нативные библиотеки
- Ассеты
- Даже R-классы!
3. Гибкость настройки
Можно контролировать:
- Включение транзитивных зависимостей
- Ограничение по типам сборок (debug/release)
- Исключение конкретных модулей
Из-под капота
Плагин работает с AGP (Android Gradle Plugin) 3.0+ и Gradle 4.9+. Под капотом он:
- Анализирует зависимости
- Извлекает содержимое AAR/JAR
- Объединяет все в один архив
- Патчит R-классы
Когда особенно полезен
- Распространение SDK — клиенту нужно подключить только один файл
- Избежание конфликтов версий — все зависимости «запекаются» внутри
- Упрощение CI/CD — меньше артефактов для публикации
Ограничения
- Нельзя напрямую подключать embedded-модули в приложение
- Возможны конфликты ресурсов (решается через префиксы)
- Требуется аккуратность с Proguard
Fat-aar-android — must have для разработчиков библиотек. 3.2k звезд на GitHub говорят сами за себя. Хотя автор больше не поддерживает проект, он стабильно работает даже с новыми версиями Gradle.
Попробуйте, если:
- Устали объяснять клиентам, как подключать зависимости
- Хотите упростить процесс распространения кода
- Любите, когда все аккуратно упаковано
P.S. Автор оставил намёк: «Надеюсь, Google наконец добавит эту фичу нативно». Пока ждём — пользуемся fat-aar!