Зависимость от компиляции android gradle 4.0 устарела — как работает видимость новой конфигурации API?

если мы посмотрим на инструменты сборки 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 о конфигурации API:

api compile Зависимость доступна модулю во время компиляции, а также доступна потребителю модуля во время компиляции и во время выполнения. Эта конфигурация ведет себя так же, как компиляция (которая теперь устарела), и обычно ее следует использовать только в библиотечных модулях. Модули приложения должны использовать реализацию, если вы не хотите предоставлять его API отдельному тестовому модулю. КомпиляцияТолько при условии


person j2emanue    schedule 28.05.2017    source источник
comment
api = compile, поэтому он будет виден модулю приложения (т.е. доступен во время компиляции). implementation не будет виден вашему модулю приложения. Оба будут включены в .apk (т.е. доступны во время выполнения).   -  person Eugen Pechanec    schedule 29.05.2017
comment
я думал реализация = компилировать   -  person j2emanue    schedule 29.05.2017
comment
Думайте, что API = общедоступный, реализация = скрытая. Я хочу, чтобы эта зависимость была частью моего общедоступного API вместо моей детали реализации.   -  person Eugen Pechanec    schedule 30.05.2017
comment
Я создал ответ на эту тему здесь, возможно, он вам поможет :)   -  person MatPag    schedule 07.06.2017
comment
docs.gradle.org/current/userguide/ изображение/   -  person Martin Zeitler    schedule 17.12.2017