Как устранить ошибки при сборке мобильного клиента 1С с автономным режимом?

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

Сборка мобильного приложения на платформе 1С — это сложный многоуровневый процесс, в котором задействованы не только механизмы самой «1С:Предприятия», но и внешние инструменты: Android SDK, Gradle и Java (JDK). Часто в процессе компиляции возникают ошибки, которые могут поставить в тупик даже опытного разработчика. Проанализируем основные причины сбоев, зафиксированные в логах сборщика, и разберем по шагам методы их устранения.

Проблема 1: Ошибка принятия лицензий Android SDK

Первая и самая распространенная ошибка, которую мы видим в логе: Warning: License for package Android SDK Build-Tools 29.0.2 not accepted. Разберем, почему это происходит. Даже если вы установили нужные компоненты через графический интерфейс Android Studio, Gradle может требовать подтверждения лицензионного соглашения именно для той версии инструментов, которую запрашивает сборщик 1С (в нашем случае это 29.0.2).

Рассмотрим решение через консоль:

  1. Перейдем в каталог установленного Android SDK, а именно в папку с инструментами командной строки: .../SDK/tools/bin или .../SDK/cmdline-tools/latest/bin.
  2. Запустим командную строку (cmd) от имени администратора в этой папке.
  3. Выполним следующую команду:

sdkmanager --licenses

Система просканирует установленные пакеты и выведет текст лицензий. Нам необходимо несколько раз нажать «y» (yes) и Enter, пока не появится сообщение, что все лицензии приняты. После этого в папке SDK появится каталог licenses с набором хэш-файлов, которые сборщик 1С сможет успешно считать.

Также важно убедиться, что установлена именно запрашиваемая версия Build-Tools. Если в логе указано 29.0.2, а у вас установлена только 30.0.3, сборка может завершиться неудачей. Откроем SDK Manager в Android Studio, перейдем на вкладку SDK Tools, поставим галочку Show Package Details и установим конкретную версию 29.0.2.

Проблема 2: Ошибка «Отказано в доступе» (Access Denied)

Ситуация, когда сборщик выдает ошибку 5(0x00000005): Отказано в доступе при попытке удаления файлов в папке intermediates, указывает на то, что какой-то процесс блокирует временные файлы. Выясним причину: чаще всего это происходит из-за «залипания» фонового процесса Gradle (Daemon), который не успел завершиться после предыдущей неудачной попытки сборки.

Разберем по шагам, как освободить файлы:

  1. Закроем Сборщик мобильных приложений 1С.
  2. Откроем диспетчер задач Windows и завершим все процессы java.exe.
  3. Попробуем очистить рабочий каталог кеша вручную (в примере автора это E:\Android\2021\cacheAndroid2).
  4. Проверим настройки антивируса. Папки build и intermediates содержат тысячи мелких файлов. Антивирус может начать сканирование нового файла в тот момент, когда Gradle пытается его переместить или удалить. Добавим папку рабочего каталога сборщика в исключения антивируса и защитника Windows.

Проблема 3: Ошибка Invalid keystore format и проблемы с подписью

Наиболее сложная ошибка в логе — com.android.ide.common.signing.KeytoolException: Failed to read key MK from store... Invalid keystore format. Это означает, что Gradle не смог распознать файл вашего ключа подписи. Проанализируем ситуацию подробнее.

Существует две основные причины возникновения этой ошибки:

  1. Конфликт версий Java: Вы используете JDK 8 (судя по логу 1.8.0_291), но файл ключа мог быть создан более новой версией Java (9 или выше). Новые версии JDK по умолчанию создают ключи в формате PKCS12, в то время как старые ожидают формат JKS.
  2. Разные пароли: Для Android-сборок критично, чтобы пароль от самого хранилища (KeyStore) и пароль от конкретного ключа (Key Alias) совпадали. Если они различаются, сборщик 1С часто выдает ошибку формата.

Рассмотрим, как правильно создать ключ:

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


keytool -genkey -v -keystore my-release-key.jks -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Обратите внимание на то, чтобы расширение файла было именно .jks. Если же вы хотите собрать приложение для тестирования без использования собственной подписи, можно воспользоваться советом из обсуждения — временно отключить использование подписи в настройках конфигурации сборщика. В этом случае система подпишет приложение стандартным отладочным ключом (debug key), что позволит установить APK на устройство в режиме разработчика.

Проблема 4: Кириллица в путях и системные переменные

В логе автора мелькает путь C:\Users\_\.android. Это явный признак того, что системный профиль пользователя содержит кириллические символы. Инструменты Android SDK, написанные на Java, до сих пор крайне чувствительны к кодировкам в путях к системным папкам.

Проанализируем методы исправления:

  1. Перенос папки настроек: Мы можем принудительно заставить Android SDK хранить настройки и лицензии в папке без кириллицы. Для этого создадим на диске C: папку, например C:\AndroidConfig, и добавим в системные переменные окружения Windows переменную ANDROID_SDK_HOME со значением C:\AndroidConfig.
  2. Использование простых путей: Всегда располагайте SDK, JDK и рабочий каталог кеша сборщика 1С в корнях дисков или в папках с латинскими названиями без пробелов (например, E:\AndroidSDK вместо E:\Мои Программы\Android SDK).

Итоговый алгоритм действий

Если ваша сборка мобильного клиента 1С «падает», выполните следующие действия в указанном порядке:

  1. Убедитесь в соответствии версий: проверьте, что в SDK Manager установлены именно те версии Build-Tools и SDK Platform, которые фигурируют в ошибках лога (например, 29.0.2).
  2. Примите лицензии: выполните sdkmanager --licenses в консоли от имени администратора.
  3. Очистите процессы: перед новой сборкой завершите все процессы java.exe.
  4. Проверьте ключ: если ошибка возникает на этапе packageRelease, пересоздайте ключ в формате JKS с одинаковыми паролями на хранилище и алиас.
  5. Исключите кириллицу: проверьте, нет ли русских букв в путях к SDK, JDK или в имени пользователя Windows.

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

← На главную