Android Studio 3.0 решение проблемы «AAPT2 error»

Android

При попытке компиляции старых проектов или создании нового после обновления Android Studio до версии 3.0 вываливаются ошибки следующего вида:

Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

Связано это с тем, что теперь по умолчанию используется AAPT2 (Android Asset Packaging Tool 2.0) и для решения проблемы обычно предлагают просто отказаться от неё. Это решение работает, однако это не решение самой проблемы, а лишь «кривой костыль».

Для отключения AAPT2 необходимо открыть файл gradle.properties, находящийся в корне проекта, и вставить строчку android.enableAapt2=false, после чего синхронизовать проект (File -> Synchronize или Crtl+Alt+Y).

Ошибочность такого подхода в том, что отключать использование AAPT2 в пользу старой версии придется вручную в каждом проекте, при этом старая версия может быть объявлена устаревшей и не факт, что в будущем её совсем не выпилят.

Поэтому разбираться надо с самой проблемой, а не закрывать на неё глаза. К тому же это весьма просто.

Если копнуть чуть глубже, то становится ясно, что ошибка вызвана с наличием кириллицы в пути к папке, в которой лежат ресурсы gradle. Связано это с тем, что AAPT2 дружит только с ASCII символами.

Исправляется сея беда следующим образом:

  • Открываем настройки File -> Settings (CTRL+ALT+S)
  • Ищем вкладку Build, Execution, Deployment -> Gradle
  • Меняем путь, прописанный в поле Service directory path, на новый, не содержащий кириллицы.

После этого в новых проектах проблем не будет, а для старых надо просто произвести ребилд: Build -> Make Project (CTRL+F9)

Михаил Миронов

Живу в Нижнем Новгороде, работаю программистом с 2017 года, основная специализация Java, но также хорошо знаю PHP, Python, XML, HTML/CSS.

Добавить комментарий

  1. Мага

    спасибо огромное очень помог все четко и понятно объяснил

    Ответить
  2. Макс

    Спасибо, добрый человек!

    Ответить
  3. Денис

    Лучший, спасибо !!!

    Ответить
  4. Александр

    Спасибо большое. Все четко. Почитаю ваш блог.

    Ответить
  5. Шульга Артём

    Благодарю<3 В два клика все исправил…

    Ответить
  6. Артём

    Error:Failed to complete Gradle execution.

    Cause:
    Could not create parent directory for lock file C:\Program Files (x86)\Ubisoft\wrapper\dists\gradle-4.1-all\bzyivzo6n839fup2jbap0tjew\gradle-4.1-all.zip.lck
    Директорию поставил собственную, но теперь выдаёт это. Как решить?

    Ответить
    1. Михаил Миронов автор

      Как вариант.
      По ссылке _https://gradle.org/releases/ скачать нужный релиз gradle. (выбрать не binary-only, а complete)
      В Android Studio: Ctr+Alt+S -> Build, Execution, Deployment -> Gradle
      установить Use local gradle distribution и выбрать предварительно скаченный архив.

      Ответить