Ответ
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 - только если нужно явно предоставить зависимость другим модулям.