При сборке мобильного приложения с помощью специализированной конфигурации «Сборщик мобильных приложений» разработчики нередко сталкиваются с критической ошибкой сборщика 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С младше версии 8.3.10.71 (например, 8.3.9), сборка требует обязательного присутствия Apache Ant. Разберем по шагам, как правильно подготовить окружение для успешной компиляции:
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 стал доступен.Android SDK Build-Tools не выше 25.0.3 (рекомендуются 25.0.2 или 25.0.3). Версии Build-Tools 26.0.0 и новее не поддерживают старые сценарии Ant и вызывают ошибки отсутствия промежуточных архивов ресурсов 1cem.ap_.jdk-8u151). Использование Java 9 и более новых версий приведет к ошибке отсутствия класса java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder из-за изменений в модульной структуре JVM. В настройках сборщика мобильных приложений 1С в поле пути к Java необходимо указать каталог установленного JDK 1.8.Рассмотрим современный и рекомендуемый вариант решения. Начиная с версии мобильной платформы 8.3.10.71, фирма «1С» переработала механизм компиляции мобильных приложений и перевела весь сборочный конвейер с устаревшего Apache Ant на Gradle.
Разберем особенности настройки сборщика на базе Gradle:
gradlew выполняет автоматическую загрузку обертки Gradle, плагинов Android Gradle Plugin и необходимых зависимостей. Убедимся, что на рабочей машине открыт доступ в интернет. Если сборка выполняется в изолированной корпоративной сети, потребуется предварительно сконфигурировать корпоративный прокси-сервер в файле gradle.properties либо развернуть локальный репозиторий библиотек.Проанализируем альтернативный вариант, когда сборщик 1С корректно генерирует исходные файлы приложения, но сбоит на этапе вызова системных консольных команд компиляции.
В процессе работы сборщик мобильных приложений распаковывает все файлы конфигурации, манифесты и код платформы во временный рабочий каталог (кэш сборщика). Разберем порядок действий для ручной компиляции:
E:\temp\<GUID_сборки>\).
gradlew assembleRelease
build/outputs/apk/.Таким образом, для устранения ошибки отсутствия build.xml достаточно либо понизить версию пакета tools до 25.2.5 при использовании старых версий мобильной платформы, либо обновить мобильную платформу и конфигурацию сборщика до версий с поддержкой Gradle.