Разработка мобильных приложений на платформе 1С — это перспективное направление, однако на этапе сборки готового дистрибутива (APK-файла) разработчики часто сталкиваются с техническими трудностями. Представьте ситуацию: вы настроили сборщик мобильных приложений, загрузили мобильную платформу, подготовили конфигурацию, запустили процесс компиляции под Android и... процесс «зависает» на 15–20 минут даже для самого простого приложения.
В этой статье мы подробно разберем, почему первая сборка мобильного приложения длится так долго, почему попытка запустить сборщик в оффлайн-режиме гарантированно приводит к ошибке, а также рассмотрим практические шаги по оптимизации локального окружения и альтернативные варианты сборки в облаке.
Для того чтобы понять природу этой проблемы, проанализируем внутренние механизмы работы современного сборщика мобильных приложений 1С. Начиная с актуальных версий мобильной платформы, сборка для операционной системы Android выполняется исключительно с помощью современного инструмента автоматизации сборки Gradle. Поддержка устаревшего сборщика Apache ANT была полностью прекращена разработчиками фирмы 1С.
Когда вы запускаете сборку мобильного приложения в первый раз (или после обновления версии мобильной платформы 1С), утилита Gradle запускается в фоновом режиме и начинает выполнять колоссальный объем подготовительной работы, требующий скачивания внешних зависимостей. Рассмотрим по шагам, что именно происходит в этот момент:
Gradle. Если этой версии нет на вашем компьютере, она начинает автоматически скачиваться с официального сайта разработчиков.Gradle начинает скачивать их в фоновом режиме.Общий объем скачиваемых файлов при первой сборке может составлять несколько гигабайт. При средней скорости интернет-соединения именно этот процесс и занимает те самые 15–20 минут, которые вызывают беспокойство у разработчиков. Хорошая новость заключается в том, что последующие сборки на этой же версии платформы будут проходить значительно быстрее, так как все необходимые компоненты уже закэшированы на вашем локальном компьютере.
Пытаясь ускорить процесс сборки или обойти долгое ожидание скачивания компонентов, некоторые разработчики пробуют запустить сборщик мобильных приложений в оффлайн-режиме. Однако, как показывает практика, это приводит к аварийному завершению процесса с ошибками, указывающими на невозможность загрузки ресурсов с серверов Google.
Разберем подробнее, почему так происходит. Инструмент Gradle для своей работы требует постоянного доступа к сети Интернет. Оффлайн-режим компиляции может успешно отработать только при строгом соблюдении следующих жестких условий:
.gradle/caches в профиле пользователя Windows).Gradle принудительно активирован режим работы --offline.Если вы обновили версию мобильной платформы 1С (например, перешли с версии 8.3.11 на 9.3.12, как упоминалось в обсуждении на форуме), состав необходимых зависимостей гарантированно изменился. При запуске сборки в оффлайн-режиме сборщик пытается найти обновленные библиотеки локально в кэше, не обнаруживает их, лишается возможности скачать их из интернета и прерывает работу с ошибкой компиляции.
Если специфика вашего проекта требует развертывания локального окружения и регулярной сборки приложений на рабочем компьютере, время сборки можно сократить с 15–20 минут до вполне комфортных 1–3 минут. Рассмотрим основные способы оптимизации процесса сборки по шагам.
В процессе компиляции утилита Gradle совершает огромное количество операций чтения и записи сотен тысяч мелких временных файлов. Использование традиционного жесткого диска (HDD) критически замедляет этот процесс.
Рекомендация: Настройте рабочий каталог сборщика мобильных приложений и кэш-директорию Gradle так, чтобы они располагались на быстром твердотельном накопителе (SSD). Более того, рекомендуется выносить эти папки за пределы системного диска C:, чтобы избежать потенциальных конфликтов прав доступа операционной системы Windows и необходимости постоянного запуска платформы 1С от имени администратора.
По умолчанию сборщик мобильных приложений 1С компилирует универсальный дистрибутив (APK-файл), содержащий исполняемые бинарные файлы сразу под четыре основные архитектуры процессоров Android-устройств (ARM, ARM64, x86, x86-64). Это существенно увеличивает время компиляции кода и обработки графических ресурсов.
Для ускорения промежуточных тестовых сборок мы можем ограничить компиляцию только одной архитектурой процессора, которая установлена на вашем физическом тестовом смартфоне (в большинстве современных устройств это архитектура ARM64). Для этого передайте сборщику параметр командной строки:
-android-abi arm64-v8a
Это простое действие позволит сократить время сборки почти в четыре раза, так как компилятору не придется выполнять лишнюю работу для неиспользуемых архитектур процессора.
Мы можем напрямую повлиять на поведение компилятора, настроив глобальные параметры Gradle. Для этого в домашнем каталоге текущего пользователя Windows (в папке C:\Users\ИмяПользователя\.gradle\) создайте текстовый файл с именем gradle.properties и пропишите в него следующие параметры оптимизации:
org.gradle.daemon=true
org.gradle.caching=true
org.gradle.parallel=true
Проанализируем, что дают эти настройки:
org.gradle.daemon=true — включает использование фонового процесса (демона) Gradle. При повторных сборках системе не придется заново запускать и инициализировать виртуальную машину Java (JVM), что экономит значительное количество времени.org.gradle.caching=true — активирует интеллектуальное кэширование результатов предыдущих сборок. Повторно компилироваться будут только те части кода, в которые были внесены изменения.org.gradle.parallel=true — разрешает компилятору выполнять параллельную сборку независимых модулей приложения, максимально задействуя все доступные ядра процессора вашего компьютера.Очень часто медленная работа сборщика и непонятные ошибки во время компиляции связаны с использованием неподходящей или слишком новой версии Java Development Kit (JDK). Фирма 1С строго регламентирует поддерживаемые версии JDK для каждой версии мобильной платформы. Рекомендуется использовать стабильные, проверенные временем дистрибутивы (например, Liberica JDK версии 11 или 17, которые официально доступны для загрузки на портале ИТС).
Если вы не хотите тратить время на развертывание сложного локального окружения, установку Android Studio, скачивание гигабайтов SDK и нагрузку процессора вашего компьютера долгой локальной компиляцией, фирма 1С предлагает встроенное решение — Сервис сборки и публикации мобильных приложений. Данный инструмент доступен пользователям, начиная с версии платформы 1С 8.3.20.
Рассмотрим, как устроен этот процесс:
Основные преимущества облачной сборки:
Таким образом, мы детально разобрали особенности работы сборщика мобильных приложений 1С. Понимание того, что первая сборка требует времени на загрузку зависимостей, позволит вам избежать ложных опасений, а применение предложенных нами методов локальной оптимизации или переход на использование облачного сервиса сборки сделают вашу работу быстрой, комфортной и эффективной.