Если у вас есть проект gradle (5.4.1) (плагин 3.4.1) с двумя вариантами (main
и other
), использующими один и тот же sourceSets
. Я столкнулся с проблемой при переименовании идентификатора ресурса (в макете XML). Вот наблюдения:
Android Studio 3.4.1 не показывает никаких ошибок и работает как положено, то есть я могу перейти от кода kotlin к идентификатору в макете xml.
Восстановление аромата main
также работает как ожидалось (без ошибок компиляции).
Перестройка варианта other
дает ошибку компиляции "неразрешенная ссылка" для нового идентификатора. Gradle clean
не помогает. Однако настройка org.gradle.caching=false
на уровне проекта gradle.properties
работает (после синхронизации Gradle, Очистить, Перестроить). Это объясняет, почему clean
не помогало, когда было включено кэширование.
При более внимательном рассмотрении файла R.java
он, похоже, использует идентификаторы из некоторого довольно старого состояния проекта (предположительно, из кэша gradle, хранящегося в домашнем каталоге пользователя). Теперь я мог бы просто удалить кеш-память, но лучше выяснить, почему изменения идентификатора ресурса не обрабатываются должным образом. Какой бы способ Android Studio не выполнял сборку в фоновом режиме, она работает нормально, но не во время сборки / запуска и т. Д.
Все это расследование потребовало много проб и ошибок: переключая различные настройки gradle.properties
одну за другой, чтобы увидеть, какая из них привела к проблеме, и я все еще не приблизился к поиску основной причины проблемы.
Каков наилучший подход к решению проблемы такого типа или метод проб и ошибок является единственным способом?