Ant Ошибка сборки внутри Eclipse

В течение многих лет я использовал интеграцию Ant для Eclipse для создания моих проектов для Android как описанных Google на этой странице документации. Это мой любимый способ создания релизов, потому что я могу просто нажать "Запустить внешний инструмент" в Eclipse, чтобы запустить сборку Ant, и он работает в фоновом режиме.

С недавнего времени (я считаю, ADT 22.0 или 22.1), я получаю следующий сбой:

[echo] Handling Resources...
[aapt] Generating resource IDs...
[aapt] invalid resource directory name: C:\path\to\project\bin\res/crunch

СТРОГО НЕИСПРАВНО
C:\Android\android-sdk\tools\ant\build.xml: 653: При выполнении этой строки произошла следующая ошибка:
C:\Android\android-sdk\tools\ant\build.xml: 698: null: 1

Я не уверен, в чем причина этого, поскольку AAPT, похоже, генерирует сам каталог "crunch". Я пробовал очистить свой проект и отключить автоматическое здание в Eclipse, но безрезультатно.

Я также попытался выполнить ant release вне Eclipse, но это дает ту же ошибку. Выполнение ant clean release тоже не работает, поскольку оно пытается удалить банки, которые все еще используются Eclipse. Поэтому единственным решением, которое я нашел для работы, является:

  • Выход из Eclipse
  • Подождите, пока процесс завершится.
  • Выполнить ant clean release

Это мучительно, потому что, как известно, перезапуск Eclipse - это королевская боль. Кроме того, все затронутые проекты должны быть очищены, что заставляет весь процесс занять до получаса. Я открыл вопроС# 60496 на b.android.com, но не услышал официального ответа.

Есть ли какое-либо решение для этого, кроме кусания пули и перехода на Android Studio?

Ответы

Ответ 3

У меня была аналогичная ошибка на машине Linux. Оказывается, что aapt использует 32-битные библиотеки эмуляции, и если они по какой-то причине не работают, процесс сборки может произойти с таинственным образом в этом месте в файле build.xml.

В моем случае причиной отказа было CircleCI пришлось исправлять свое ядро ​​в черный список недавно найденная уязвимость в 32-битном эмуляционном API. Затем они смогли исправить свое ядро, чтобы устранить уязвимость в течение нескольких дней.

Ответ 4

В OSX я только что очистил проект и перестроился, и это сработало для меня.

Проект > Очистить (выберите название проекта)

Ответ 5

Если вы используете команду ant из командной строки, используйте команду 'ant clean release' вместо просто 'ant release'. Если вы используете eclipse, отключите autobuild delete crunch folder, а затем выполните ant больше информации: http://pissedoff-techie.blogspot.in/2014/07/android-build-fails-with-ant-on-eclipse.html

Ответ 6

Я попробовал решения здесь, такие как: перезапуск eclipse, очистка проекта и перестройка, удаление папки crunch и запуск ant снова и т.д. После запуска ant script (из eclipse) кажется, что ADT вмешивается и генерирует crunch folder. Обходной путь для меня состоял в том, чтобы запустить ant из командной строки. Первоначально мне пришлось выполнить следующие шаги, чтобы удалить папку crunch:

  • Отключить Build Automatically в меню Project.
  • Вручную удалите папку cruch.
  • Запустите ant clean release из командной строки.

Ответ 7

Привет, попробуйте эту строку и снова создайте ее.

rm -fR $(find . -type d -name crunch|xargs)

Ответ 8

У меня тоже был такой же вопрос. Я вручную удалил папки "bin" и "gen" библиотеки и попытался. Это сработало для меня.

Ответ 9

Добавьте эту строку в начало custom_rules.xml

<delete dir="../YourLibraryName/bin/res/crunch"/>

если у вас нет custom_rules.xml, создайте его и поместите в файл. Поместите custom_rules.xml в каталог проекта.

<?xml version="1.0" encoding="UTF-8"?>

<project name="imported" >

<delete dir="../YourLibraryName/bin/res/crunch"/>

</project>

UPDATE

Это можно сделать, добавив следующую строку в проект библиотеки build.xml.

   <delete dir="${out.absolute.dir}"/res/crunch />