В чем разница между подключением Gradle модуля через api и implementation

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

Ответ

api и implementation - это конфигурации зависимостей в Gradle.

api - транзитивно экспортирует зависимости модуля для всех модулей, которые зависят от него. Изменения в зависимостях api могут вызвать перекомпиляцию всех зависимых модулей.

implementation - скрывает зависимости от других модулей. Изменения в зависимостях implementation не требуют перекомпиляции зависимых модулей, что ускоряет сборку.

Пример:

dependencies {
    api 'com.squareup.retrofit2:retrofit:2.9.0' // Будет доступно в модулях, зависящих от этого
    implementation 'com.google.code.gson:gson:2.8.9' // Скрыто от других модулей
}

Используйте implementation по умолчанию, api - только если нужно явно предоставить зависимость другим модулям.