Какие ключевые слова использовать в gradle для создания зависимости между модулями

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

Ответ

В Gradle для создания зависимостей между модулями используются:

  1. implementation - зависимость доступна только текущему модулю (рекомендуется)
  2. api - зависимость транзитивно становится доступной другим модулям
  3. compileOnly - зависимость нужна только для компиляции
  4. runtimeOnly - зависимость нужна только во время выполнения

Пример:

dependencies {
    implementation project(':feature')
    api project(':core')
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
}

Разница между implementation и api:

  • implementation скрывает зависимости от потребителей (уменьшает время сборки)
  • api делает зависимости видимыми для всех модулей, зависящих от текущего