Как исправить ошибку сборки мобильного приложения 1С: Cannot find tools/ant/build.xml?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При сборке мобильного приложения с помощью специализированной конфигурации «Сборщик мобильных приложений» разработчики нередко сталкиваются с критической ошибкой сборщика Apache Ant:

BUILD FAILED: Cannot find E:\sdk\tools\ant\build.xml imported from ...\build.xml

Проанализируем причины возникновения этой неполадки и подробно рассмотрим практические способы ее решения в зависимости от используемой версии мобильной платформы 1С:Предприятия.

Выясним причину возникновения ошибки

Разберем архитектуру процесса сборки в 1С. Исторически утилита «Сборщик мобильных приложений» использовала для автоматизации сборки Android-пакетов (APK) связку из утилит Apache Ant и инструментов командной строки Android SDK. В файле сборки build.xml вызывается импорт базового системного сценария Ant из каталога Android SDK:

<import file="${sdk.dir}/tools/ant/build.xml" />

Начиная с версии Android SDK Tools 25.3.0 (выпущенной Google в марте 2017 года), компания Google полностью прекратила поддержку сборщика Apache Ant, удалила каталог tools/ant/ и скрипт build.xml из состава Android SDK. Все современные версии Android Studio и Android SDK по умолчанию поставляются без этих файлов.

Таким образом, если на компьютере установлена современная версия Android SDK Tools, сборщик 1С физически не может найти нужный сценарий и аварийно завершает работу.

Способ 1. Восстановление совместимой версии Android SDK Tools (для мобильных платформ до 8.3.10.71)

Если проект жестко зафиксирован на мобильной платформе 1С младше версии 8.3.10.71 (например, 8.3.9), сборка требует обязательного присутствия Apache Ant. Разберем по шагам, как правильно подготовить окружение для успешной компиляции:

  1. Замена каталога tools: скачаем архив устаревшего пакета инструментов tools_r25.2.5-windows.zip или tools_r25.2.3-windows.zip. Перейдем в корневую папку установленного Android SDK (обычно это C:\Users\<ИмяПользователя>\AppData\Local\Android\sdk или пользовательский путь, например E:\sdk). Переименуем или полностью удалим существующую папку tools и распакуем на ее место содержимое скачанного архива так, чтобы путь sdk\tools\ant\build.xml стал доступен.
  2. Установка совместимых Build-Tools: откроем утилиту управления пакетами SDK (SDK Manager) и проверим установленные компоненты. Для сборки через Ant необходимы версии Android SDK Build-Tools не выше 25.0.3 (рекомендуются 25.0.2 или 25.0.3). Версии Build-Tools 26.0.0 и новее не поддерживают старые сценарии Ant и вызывают ошибки отсутствия промежуточных архивов ресурсов 1cem.ap_.
  3. Проверка версии Java (JDK): для сборки старыми сценариями Ant требуется исключительно Java SE Development Kit 8 (1.8) (например, jdk-8u151). Использование Java 9 и более новых версий приведет к ошибке отсутствия класса java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder из-за изменений в модульной структуре JVM. В настройках сборщика мобильных приложений 1С в поле пути к Java необходимо указать каталог установленного JDK 1.8.
  4. Проверка платформенных API: через интерфейс SDK Manager убедимся, что установлены необходимые целевые уровни API Android (рекомендуется загрузить платформы от API 19 до API 25–27 с полным набором пакетов SDK Platform).

Способ 2. Переход на систему сборки Gradle (для мобильных платформ 8.3.10.71 и выше)

Рассмотрим современный и рекомендуемый вариант решения. Начиная с версии мобильной платформы 8.3.10.71, фирма «1С» переработала механизм компиляции мобильных приложений и перевела весь сборочный конвейер с устаревшего Apache Ant на Gradle.

Разберем особенности настройки сборщика на базе Gradle:

  1. Обновление конфигурации сборщика: используем версию информационной базы «Сборщик мобильных приложений», идущую в комплекте поставки используемой мобильной платформы (или обновленную до актуальной версии).
  2. Корректировка путей в настройках: в форме параметров сборки для платформы 8.3.10.71 и выше поле Путь к Apache Ant оставляем пустым, так как Ant больше не задействуется. Указываем только путь к JDK, путь к Android SDK и рабочий каталог (кэш).
  3. Доступ к сети Интернет: при первой сборке через Gradle утилита gradlew выполняет автоматическую загрузку обертки Gradle, плагинов Android Gradle Plugin и необходимых зависимостей. Убедимся, что на рабочей машине открыт доступ в интернет. Если сборка выполняется в изолированной корпоративной сети, потребуется предварительно сконфигурировать корпоративный прокси-сервер в файле gradle.properties либо развернуть локальный репозиторий библиотек.

Способ 3. Ручная сборка проекта через Android Studio или командную строку

Проанализируем альтернативный вариант, когда сборщик 1С корректно генерирует исходные файлы приложения, но сбоит на этапе вызова системных консольных команд компиляции.

В процессе работы сборщик мобильных приложений распаковывает все файлы конфигурации, манифесты и код платформы во временный рабочий каталог (кэш сборщика). Разберем порядок действий для ручной компиляции:

  1. Запустим сборку в 1С и дожcontextемся формирования файлов проекта в каталоге кэша (например, E:\temp\<GUID_сборки>\).
  2. Откроем сформированную папку проекта напрямую в среде Android Studio либо откроем командную строку в этой папке.
  3. Выполним прямую сборку пакета с помощью штатного скрипта Gradle: gradlew assembleRelease
  4. После завершения сборки итоговый скомпилированный APK-пакет будет находиться в подкаталоге build/outputs/apk/.

Таким образом, для устранения ошибки отсутствия build.xml достаточно либо понизить версию пакета tools до 25.2.5 при использовании старых версий мобильной платформы, либо обновить мобильную платформу и конфигурацию сборщика до версий с поддержкой Gradle.

← На главную