если мы посмотрим на инструменты сборки gradle, мы заметим, что компиляция зависимости конфигурации устарела в пользу api и реализации. См. здесь
поэтому у меня возник вопрос о видимости зависимостей с использованием api. Представьте, что мы имеем следующий набор в модуле app:
dependencies {
api 'commons-httpclient:commons-httpclient:3.1'
implementation 'org.apache.commons:commons-lang3:3.5'
}
Итак, из того, что я собираю, org.apache.commons: commons-lang3: 3.5 будет доступен только в самом модуле. но зависимость commons-httpclient: commons-httpclient: 3.1 будет недоступна вне модуля, что это значит? Это означает, что если бы я сделал модуль приложения в библиотеке, чтобы зависимость была доступна для того, кто использует библиотеку, (разве это не всегда так?
это то, что должны сообщать android docs о конфигурации api:
api compile. Зависимость доступна для модуля во время компиляции, а также доступна для потребителя модуля во время компиляции и времени выполнения. Эта конфигурация ведет себя точно так же, как компиляция (которая теперь устарела), и вы должны обычно использовать ее только в библиотечных модулях. Модули приложений должны использовать реализацию, если вы не хотите выставлять свой API в отдельный тестовый модуль. compileOnly