Ошибка при выполнении aapt: код возврата 132 проблемы

С момента обновления моего Android SDK около месяца назад у меня были бесконечные проблемы, оставившие меня с нефункциональной средой разработки.

Изначально проблема была с библиотекой поддержки v7-appcompat, которая выдавала около 100 ошибок, связанных с различными ресурсами. Было довольно очевидно, что это ресурсы, относящиеся к Android v5, и быстрый поиск в Stack Overflow означал, что я понял, что библиотека v7-appcompat нацелена на API 19. Изменение соответствующих настроек на целевой API 21 исправило ошибки ресурсов.

Однако проблема, с которой я столкнулся с тех пор, заключается в том, что любая попытка построить проект библиотеки быстро заканчивается...

Ошибка при выполнении aapt: код возврата 132

... и проект библиотеки построен неправильно.

Моя первоначальная установка была с Eclipse Kepler, но затем я попробовал Android Studio v1.0.1 (тот же код ошибки aapt), и сегодня я установил Eclipse Luna в отдельный каталог из Kepler И новую установку ADT и SDK. Каждая версия Eclipse также имеет свои собственные рабочие пространства.

Итак, в основном у меня есть две версии Eclipse (каждая со своими настройками и рабочими пространствами ADT / SDK) и Android Studio со своей собственной структурой каталогов, и все три имеют одну и ту же проблему.

Вопрос в том, как мне диагностировать эту проблему? Общий знаменатель, очевидно, является проблемой, но я понятия не имею, как ее исправить.

Я использую установку Debian Wheezy (32-разрядная версия), и у меня правильно установлена ​​Java 1.7 (как рекомендуется).


person Squonk    schedule 31.12.2014    source источник


Ответы (2)


Кажется, есть проблема с aapt на некоторых 32-битных системах. Он выдает ошибку 132 в приложении: processDebugResources, когда aapt «перемалывает» файлы png, готовые для включения в пакет apk. Подробнее см. на странице https://code.google.com/p/android/issues/detail?id=75110

Некоторые люди сообщают, что «исправление» оскорбительных файлов png (например, путем открытия в Gimp и сохранения) решает проблему. Когда они «встроены» в appcompat, это, конечно, гораздо сложнее.

Прежде чем вдаваться в подробности, не могли бы вы просто сказать, действительно ли вы работаете на 32-битном процессоре, и если да, то на каком? используйте lscpu, чтобы узнать.

Хорошо, если кому-то интересно, вот обходной путь, чтобы вы могли использовать свой старый ноутбук для создания приложений с помощью Android Studio. По сути, вы удаляете все файлы png в библиотеке appcompat-v7, а затем выполняете сборку с использованием двух версий aapt. Юк.

  1. Найдите файл appcompat-v7.aar, который будет выглядеть примерно так: ~/Android/Sdk/extras/android/m2repository/com/android/support/appcompat-v7/22.0.0

  2. Извлеките его (на самом деле это zip-файл) во временный каталог.

  3. Разделите все png-файлы: find . -name "*.png" -exec mogrify -strip {} \;

  4. Снова запакуйте файлы: pushd appcompat-v7-22.0.0; zip -r ../appcompat-v7-22.0.0.aar; popd
  5. Переместите новый файл aar, чтобы заменить оригинальный (этого может быть достаточно, чтобы получить хорошую сборку, но это не для меня)
  6. Теперь найдите старую версию aapt (я зашел на https://dl-ssl.google.com/android/repository/build-tools_r17-linux.zip)
  7. Скопируйте версию aapt из архива, который вы только что скачали, в каталог Android/Sdk/build-tools как aapt-17 или как-то так.
  8. Переименуйте исходный aapt в aapt-0
  9. Чередуйте две версии aapt (например, ln -sf aapt-17 aapt), и вы обнаружите, что можете получить хорошую сборку. Одна версия потерпит неудачу в одном месте, другая — в другом, что поможет вам преодолеть все неровности.
  10. Я знаю, что это воняет, но я был в отчаянии!!
person peterthevicar    schedule 13.04.2015
comment
Спасибо. У меня не будет времени проверить это до выходных, но я дам вам знать, если это сработает для меня. Как бы то ни было, я перенес свои основные проекты обратно на свою Win XP через репозиторий Git, и я снова могу писать код. Однако было бы неплохо, чтобы машина с Linux работала должным образом. - person Squonk; 15.04.2015

Вот что я сделал, этого достаточно, чтобы получить успешную сборку. Вдохновленный ответом peterthevicar.

  • понизьте SDK до 19.1.0, вы можете установить его из студии, а затем изменить buildToolsVersion в build.gradle
  • переименуйте aapt в aapt.bin и поместите на его место сценарий оболочки, который перехватывает только хруст png (аргументы: s -i infile -o outfile) и вместо этого выполняет простой cp. вставил бы его сюда, но подсветка синтаксиса SO suuuucks
person Andrzej Cichocki    schedule 26.07.2015