Ошибка AAPT2 - файлы appcompat-v7 не найдены в mergeDebugResources - PullRequest
0 голосов
/ 23 мая 2018

У меня есть задание на сборку Hudson, которое завершается с ошибкой

 Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details

, и в журналах много строк вроде:

C:\Windows\System32\config\systemprofile\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\3bbc697d357b69b5ea5f78a35f99a514\res\color\abc_hint_foreground_material_dark.xml: error: file not found.

Я нашел несколько вопросовв таких ошибках AAPT2, как, например, this и this , но, похоже, они не имеют исправления.

Так почему же сборка заканчивается неудачей?

1 Ответ

0 голосов
/ 23 мая 2018

Согласно первому связанному вопросу, отключение AAPT2 кажется плохой идеей, поскольку AAPT может быть удалено в какой-то момент в будущем.

Второй связанный вопрос, по крайней мере, дает подсказку с принятым ответомпоскольку эта версия gradle не обрабатывает символы, не входящие в ASCII, в пути кеша .gradle.Но в нашем случае в пути кеша нет никаких не-ASCII символов.

На самом деле, из логов gradle ищет кеш внутри C:\Windows\System32\config\systemprofile\.gradle, который доступен только спривилегии администратора.Не где-то, где мы хотим кэшировать библиотеки.

Этот ответ, наряду с этим постом на форумах Gradle - вот что привело меня к решению.Короткая версия, по умолчанию gradle кэширует загруженные библиотеки в пользовательской области, и, похоже, в Java есть ошибка , из-за которой она неправильно определяет домашний каталог пользователей.Это приводит к тому, что кеш gradle помещается куда-то, чего на самом деле не должно быть.

Чтобы решить эту проблему, нам просто нужно установить домашний каталог пользователя gradle. В этом блоге есть несколько способов сделать это.Одним из способов является создание переменной среды GRADLE_USER_HOME, которая имеет преимущество в применении ко всем сборкам gradle на компьютере.

...