В чем разница между API и implementation в Gradle

«В чем разница между API и implementation в Gradle» — вопрос из категории Gradle и сборка, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

api и implementation — это конфигурации зависимостей в Gradle, которые определяют, как зависимости передаются другим модулям.

  • api: Зависимость становится частью публичного API модуля. Если модуль А зависит от модуля Б через api, то все модули, зависящие от А, также получат доступ к зависимостям Б. Это может привести к нежелательному раскрытию транзитивных зависимостей.

  • implementation: Зависимость скрыта внутри модуля. Если модуль А зависит от модуля Б через implementation, то другие модули, зависящие от А, не увидят зависимости Б. Это улучшает изоляцию и ускоряет пересборку.

Пример:

dependencies {
    api("com.example:library:1.0") // Зависимость будет видна другим модулям
    implementation("com.example:internal:1.0") // Зависимость скрыта
}