Выбор ответа Middle Сборка Gradle спрашивают часто обновлено

implementation и api

Вопрос

Модуль :core:network подключает OkHttp через implementation. Что это значит для модуля :app, который зависит от :core:network?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: :app не видит OkHttp при компиляции, зависимость не протекает. implementation скрывает зависимость от потребителей модуля на этапе компиляции, но она всё равно попадает в рантайм и APK.

Варианты ответа

  1. :app тоже видит классы OkHttp при компиляции, как при api
  2. :app не видит OkHttp при компиляции, зависимость не протекаетправильный ответ
  3. OkHttp не попадёт в итоговый APK, его надо подключить в :app
  4. Сборка упадёт: implementation нельзя использовать в библиотеке

Разбор

implementation скрывает зависимость от потребителей модуля на этапе компиляции, но она всё равно попадает в рантайм и APK. Это улучшает инкрементальную сборку и изоляцию. Если публичный API модуля использует типы OkHttp, нужна api, тогда зависимость станет транзитивно видимой. Ошибки сборки нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.