Использовать область «compileOnly» в проектах Android?

Я использую Gradle 2.12 (или новее) с соответствующей версией плагина Android Gradle в моем проекте. Gradle 2.12 представилcompileOnly конфигурации, так почему я получаю сообщение об ошибке, когда пытаюсь его использовать?

Не удалось найти метод compileOnly () для аргументов

Ответы на вопрос(2)

dle 2.12 относительно новогоcompileOnly конфигурация (мой акцент):

Теперь вы можете объявить зависимости, которые будут использоваться только во время компиляциив сочетании с плагином Java.

Таким образом, плагин Java Gradle является компонентом, который мы должны учитывать при ответе на этот вопрос. Мы можем найтиcompileOnly конфигурация объявлена ​​в плагине Java Gradleисходный код для достаточно новых версий.

Тем не мение,плагины Android Gradle не расширяют плагин Java Gradle, На самом деле, я считаю, что плагины для Android представляют собой своего рода «frankenplugin» с некоторой функциональностью.заимствованные но нетунаследованный из плагина Java. Следующие куски исходного кода поддерживают эту идею.

Отбазовый класс плагинов для Android:

project.apply plugin: JavaBasePlugin

Поэтому плагины Android Gradle включают в себя функциональностьбаза Плагин Java Gradle, не отполный Плагин Java Gradle, Кроме того, естьявная проверка что полный плагин Java Gradle не применяется вместе с плагином Android Gradle:

// get current plugins and look for the default Java plugin.
if (project.plugins.hasPlugin(JavaPlugin.class)) {
    throw new BadPluginException(
            "The 'java' plugin has been applied, but it is not compatible with the Android plugins.")
}

Основываясь на этой информации, я предполагаю, чтоcompileOnly только что не был вручную перенесен из плагина Java Gradle в плагин Android Gradle. Вероятно, он не появится до того, как мы получим плагин для Android Gradle с минимальной версией Gradle, установленной на 2,12 или выше.

 Auras24 окт. 2016 г., 20:43
Начиная с 2.2.2 это все еще не
 Alix10 сент. 2016 г., 15:54
Новости: плагин Android Gradle 2.1.3 требует Gradle 2.14.1. Может ли кто-нибудь подтвердить, что эта версия поддерживает эту функцию?
Решение Вопроса

provided вместоcompileOnly

Увидетьhttps://github.com/google/auto/issues/324#issuecomment-212333044

 Filipe Bezerra de Sousa12 янв. 2017 г., 12:45
Мы обсуждаем ваши сомнения, а не ожидания. Вы должны работать соответственно с функциями, предоставляемыми инструментом, который вы используете, верно?
 Alix12 янв. 2017 г., 11:49
У меня нет Но я ожидаю, что плагин для Android Gradle будет поддерживать синтаксис Gradle. Это проблема здесь. Почему это не работает и когда ожидать, что это будет работать
 Filipe Bezerra de Sousa12 янв. 2017 г., 11:47
Как ты решил свою проблему так?
 stkent16 дек. 2017 г., 17:05
Обратите внимание, чтоprovided был переименован в «назад»compileOnly начиная с версии 3.0.0 плагина Android Gradle!
 Alix13 дек. 2017 г., 10:43
Основываясь на новых фактах, предоставленных @wrecker, я решил принять этот ответ
 Alix11 янв. 2017 г., 08:34
Для этого требуется дополнительный «apt-plugin» по ссылке, которую вы указали.
 bugraoral05 июн. 2017 г., 13:54
Я не знаю, в какой версии это изменилось, но с плагином Android Gradle 2.3.2 я могу использовать «предоставленные» ключевое слово без «apt». Хотя ответ @ stkent очень информативен, этот ответ решает проблему и должен быть принятым ответом. Источник :developer.android.com/studio/build/...
 Alix12 янв. 2017 г., 12:52
Я утверждаю, что это ключевое слово gradle неявно присутствует в плагине Android Gradle или что оно задокументировано как ограничение. Я принял ответ, который объясняет, почему он не работает. Я все еще надеюсь / ожидаю эту функцию в будущей версии плагина, без необходимости добавлять дополнительную
 Filipe Bezerra de Sousa12 янв. 2017 г., 11:45
Так в чём проблема добавления нового плагина, если он необходим? compileOnly - это функция, эксклюзивная для плагина Java, а плагин Android не имеет таких же функций.

Ваш ответ на вопрос