Ответ @nongthonbam-tonthoi правильный, но он не объясняет почему.
Краткая версия
Реализация — скрыть эту зависимость от других модулей (которые зависят от этого модуля). если B
зависит от A
, он не может использовать никакое dep, объявленное в A
с помощью implementation
.
api — сделайте это доступным для других модулей, которые зависят от этого модуля. Например, если вы добавите GSON в качестве зависимости в модуль A
, используя api
, а не implementation
, все другие модули, которые depend A
может использовать GSON без повторного объявления.
Длинная версия
implementation
— это способ объявления зависимостей только для данного модуля. Это означает, что зависимость может использоваться только в этом конкретном модуле. compile
, с другой стороны, "утекает" зависимости в другие модули, поэтому вы можете импортировать и использовать классы, которые dep привносит в другие модули. Если вам нужно такое поведение, новый способ сделать это — использовать api
.
Это изменение особенно нацелено на многомодульные проекты, поскольку оно может помочь Gradle избежать повторной компиляции модуля во время сборки, когда он не меняется.
Однако, если вы переходите из старого проекта, скорее всего, вы (ab) используете компиляцию для использования зависимостей, объявленных в других модулях, без явного объявления их снова.
Вы можете продолжать использовать compile
, но помните, что он устарел и скоро будет удален.
Подробнее см. здесь.
person
The-null-Pointer-
schedule
03.04.2018
api
вместо этого новыйcompile
или имейте зависимость непосредственно в вашем основном проекте - person Nongthonbam Tonthoi   schedule 03.04.2018implementation
наapi
- person Nongthonbam Tonthoi   schedule 03.04.2018implementation
импорта файла jar наapi
. Раньше я менял if для импорта модуля. Пожалуйста, добавьте это как ответ, чтобы я мог выбрать его как правильный ответ. - person Bubunyo Nyavor   schedule 03.04.2018