Fat-aar-android: как собрать все зависимости в один AAR

25 Jul, 2024

Репозиторий давно не обновлялся

Последнее обновление было 1 год назад.

Когда-нибудь сталкивались с ситуацией, когда ваша Android-библиотека зависит от нескольких модулей, а при подключении к проекту приходится тащить за собой целую кучу зависимостей? Плагин fat-aar-android решает эту проблему раз и навсегда.

Что это за зверь?

Fat-aar-android — это Gradle-плагин, который умеет «упаковывать» все зависимости вашей библиотеки в один итоговый AAR-файл. По сути, он создает «жирный» (fat) AAR, содержащий не только ваш код, но и все транзитивные зависимости.

Кто оценит:

  • Разработчики SDK и библиотек
  • Команды, которым нужно распространять свои решения в виде единого артефакта
  • Те, кто устал от проблем с версиями зависимостей

Главные фишки

1. Простота интеграции

Добавляется в проект буквально в три шага:

  1. Подключаем в корневом build.gradle:
dependencies {
    classpath 'com.github.kezong:fat-aar:1.3.8'
}
  1. Применяем плагин в модуле:
apply plugin: 'com.kezong.fat-aar'
  1. Указываем зависимости через 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+. Под капотом он:

  1. Анализирует зависимости
  2. Извлекает содержимое AAR/JAR
  3. Объединяет все в один архив
  4. Патчит R-классы

Когда особенно полезен

  1. Распространение SDK — клиенту нужно подключить только один файл
  2. Избежание конфликтов версий — все зависимости «запекаются» внутри
  3. Упрощение CI/CD — меньше артефактов для публикации

Ограничения

  • Нельзя напрямую подключать embedded-модули в приложение
  • Возможны конфликты ресурсов (решается через префиксы)
  • Требуется аккуратность с Proguard

Fat-aar-android — must have для разработчиков библиотек. 3.2k звезд на GitHub говорят сами за себя. Хотя автор больше не поддерживает проект, он стабильно работает даже с новыми версиями Gradle.

Попробуйте, если:

  • Устали объяснять клиентам, как подключать зависимости
  • Хотите упростить процесс распространения кода
  • Любите, когда все аккуратно упаковано

P.S. Автор оставил намёк: «Надеюсь, Google наконец добавит эту фичу нативно». Пока ждём — пользуемся fat-aar!