Почему долго собирается мобильное приложение 1С на Android и как ускорить сборщик приложений?

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

Разработка мобильных приложений на платформе 1С — это перспективное направление, однако на этапе сборки готового дистрибутива (APK-файла) разработчики часто сталкиваются с техническими трудностями. Представьте ситуацию: вы настроили сборщик мобильных приложений, загрузили мобильную платформу, подготовили конфигурацию, запустили процесс компиляции под Android и... процесс «зависает» на 15–20 минут даже для самого простого приложения.

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

Выясняем причину: почему первая сборка длится так долго?

Для того чтобы понять природу этой проблемы, проанализируем внутренние механизмы работы современного сборщика мобильных приложений 1С. Начиная с актуальных версий мобильной платформы, сборка для операционной системы Android выполняется исключительно с помощью современного инструмента автоматизации сборки Gradle. Поддержка устаревшего сборщика Apache ANT была полностью прекращена разработчиками фирмы 1С.

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

  1. Загрузка дистрибутива Gradle: Сборщик считывает файлы конфигурации мобильной платформы и определяет требуемую версию самого инструмента Gradle. Если этой версии нет на вашем компьютере, она начинает автоматически скачиваться с официального сайта разработчиков.
  2. Загрузка Android SDK и Build Tools: Для компиляции кода под Android необходимы определенные версии Android SDK и утилит сборки (Build Tools), соответствующих требованиям используемой версии платформы 1С. Если нужные версии API (например, API 26–33) не установлены в системе локально, Gradle начинает скачивать их в фоновом режиме.
  3. Загрузка внешних зависимостей и библиотек: Для корректной работы мобильного клиента или автономного мобильного приложения 1С требуются внешние библиотеки. К ним относятся компоненты Google Mobile Services (GMS), библиотеки для работы с графикой, push-уведомлениями, геопозиционированием и другими системными функциями смартфона. Все эти библиотеки скачиваются из репозиториев Google и Maven.

Общий объем скачиваемых файлов при первой сборке может составлять несколько гигабайт. При средней скорости интернет-соединения именно этот процесс и занимает те самые 15–20 минут, которые вызывают беспокойство у разработчиков. Хорошая новость заключается в том, что последующие сборки на этой же версии платформы будут проходить значительно быстрее, так как все необходимые компоненты уже закэшированы на вашем локальном компьютере.

Почему оффлайн-режим завершается критической ошибкой?

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

Разберем подробнее, почему так происходит. Инструмент Gradle для своей работы требует постоянного доступа к сети Интернет. Оффлайн-режим компиляции может успешно отработать только при строгом соблюдении следующих жестких условий:

Если вы обновили версию мобильной платформы 1С (например, перешли с версии 8.3.11 на 9.3.12, как упоминалось в обсуждении на форуме), состав необходимых зависимостей гарантированно изменился. При запуске сборки в оффлайн-режиме сборщик пытается найти обновленные библиотеки локально в кэше, не обнаруживает их, лишается возможности скачать их из интернета и прерывает работу с ошибкой компиляции.

Как ускорить локальную сборку приложений в 1С?

Если специфика вашего проекта требует развертывания локального окружения и регулярной сборки приложений на рабочем компьютере, время сборки можно сократить с 15–20 минут до вполне комфортных 1–3 минут. Рассмотрим основные способы оптимизации процесса сборки по шагам.

Шаг 1. Перенос рабочего каталога сборщика на быстрый SSD-диск

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

Рекомендация: Настройте рабочий каталог сборщика мобильных приложений и кэш-директорию Gradle так, чтобы они располагались на быстром твердотельном накопителе (SSD). Более того, рекомендуется выносить эти папки за пределы системного диска C:, чтобы избежать потенциальных конфликтов прав доступа операционной системы Windows и необходимости постоянного запуска платформы 1С от имени администратора.

Шаг 2. Ограничение архитектур процессоров (ABI) при сборке

По умолчанию сборщик мобильных приложений 1С компилирует универсальный дистрибутив (APK-файл), содержащий исполняемые бинарные файлы сразу под четыре основные архитектуры процессоров Android-устройств (ARM, ARM64, x86, x86-64). Это существенно увеличивает время компиляции кода и обработки графических ресурсов.

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

-android-abi arm64-v8a

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

Шаг 3. Тонкая настройка параметров Gradle Daemon

Мы можем напрямую повлиять на поведение компилятора, настроив глобальные параметры Gradle. Для этого в домашнем каталоге текущего пользователя Windows (в папке C:\Users\ИмяПользователя\.gradle\) создайте текстовый файл с именем gradle.properties и пропишите в него следующие параметры оптимизации:


org.gradle.daemon=true
org.gradle.caching=true
org.gradle.parallel=true

Проанализируем, что дают эти настройки:

Шаг 4. Контроль совместимости версий Java (JDK)

Очень часто медленная работа сборщика и непонятные ошибки во время компиляции связаны с использованием неподходящей или слишком новой версии Java Development Kit (JDK). Фирма 1С строго регламентирует поддерживаемые версии JDK для каждой версии мобильной платформы. Рекомендуется использовать стабильные, проверенные временем дистрибутивы (например, Liberica JDK версии 11 или 17, которые официально доступны для загрузки на портале ИТС).

Альтернативное решение: Облачный сервис сборки мобильных приложений 1С

Если вы не хотите тратить время на развертывание сложного локального окружения, установку Android Studio, скачивание гигабайтов SDK и нагрузку процессора вашего компьютера долгой локальной компиляцией, фирма 1С предлагает встроенное решение — Сервис сборки и публикации мобильных приложений. Данный инструмент доступен пользователям, начиная с версии платформы 1С 8.3.20.

Рассмотрим, как устроен этот процесс:

Основные преимущества облачной сборки:

  1. На локальном компьютере разработчика вообще не нужно устанавливать Java JDK, Android SDK или Gradle.
  2. Сборка в облаке происходит на производительном оборудовании и занимает всего несколько минут.
  3. Использование сервиса позволяет собирать мобильные приложения не только под Android, но и под операционную систему iOS без необходимости покупки дорогостоящего компьютера Mac, который обязателен при локальной сборке для устройств Apple.
  4. Сервис предоставляется бесплатно всем зарегистрированным пользователям платформы 1С при наличии активного договора информационно-технологического сопровождения (ИТС).

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

← На главную