Gradle не может обрабатывать сгенерированные изменения кода - PullRequest
0 голосов
/ 07 октября 2019

Моя настройка:

  • Плагин Gradle для Android 3.5.0
  • Gradle до 5.5.1
  • 100 + Модули Gradle
  • многосгенерированный код (в основном Dagger + привязка данных)

Когда я извлекаю ветку, которая вызывает изменения в сгенерированном коде, то обычно мне приходится уничтожать весь каталог .gradle / caches, чтобы сборка прошла успешно. В противном случае система сборки gradle пытается разрешить какой-то старый сгенерированный код.

clean и cleanBuildCache не помогают. Также примечание: до сих пор я был счастливым пользователем, но поскольку мы обновили инструменты до этих версий, сборочное кэширование перестало работать должным образом. Какие-нибудь советы?

РЕДАКТИРОВАТЬ: Обратите внимание, что не каждое изменение в сгенерированном коде нарушает кэш. Пока это для меня недетерминировано.

1 Ответ

0 голосов
/ 07 октября 2019

Отказ от ответственности: я являюсь разработчиком Java и не знаком с плагином для Android

Чистая задача не удалит записи из кэша сборки. Ключ кеша получается из входных и выходных данных задачи. Если вы не объявили все входные данные задачи правильно, то ключ кеша будет неправильным

Если (например) вашей задаче «сгенерировать» нужен шаблон, некоторые xml и системное свойство для генерацииИсточники, вам нужно будет объявить все три (template, xml и syspop) как входные данные задачи «генерировать». Любые выходные каталоги должны быть объявлены как выходные данные задачи.

Последнее, что нужно учитывать, это то, что задача «создать» правильно подключена к DAG Gradle. Например, задача «compileJava» должна «зависеть от» вашей задачи «создать» (или любой другой задачи, эквивалентной android)

...