Ответ 1
В наиболее распространенном случае артефакты, необходимые во время компиляции, являются подмножеством тех, которые необходимы во время выполнения. Например, скажем, что программа под названием app
использует библиотеку foo
, а библиотека foo
внутренне использует библиотеку bar
. Тогда для компиляции app
требуется только foo
, но для его запуска требуются как foo
, так и bar
. Вот почему по умолчанию все, что вы вставляете в конфигурацию Gradle compile
, также отображается в конфигурации runtime
, но противоположное не соответствует действительности.