Сборка мобильного приложения на платформе 1С — это сложный многоуровневый процесс, в котором задействованы не только механизмы самой «1С:Предприятия», но и внешние инструменты: Android SDK, Gradle и Java (JDK). Часто в процессе компиляции возникают ошибки, которые могут поставить в тупик даже опытного разработчика. Проанализируем основные причины сбоев, зафиксированные в логах сборщика, и разберем по шагам методы их устранения.
Первая и самая распространенная ошибка, которую мы видим в логе: Warning: License for package Android SDK Build-Tools 29.0.2 not accepted. Разберем, почему это происходит. Даже если вы установили нужные компоненты через графический интерфейс Android Studio, Gradle может требовать подтверждения лицензионного соглашения именно для той версии инструментов, которую запрашивает сборщик 1С (в нашем случае это 29.0.2).
Рассмотрим решение через консоль:
.../SDK/tools/bin или .../SDK/cmdline-tools/latest/bin.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.
Ситуация, когда сборщик выдает ошибку 5(0x00000005): Отказано в доступе при попытке удаления файлов в папке intermediates, указывает на то, что какой-то процесс блокирует временные файлы. Выясним причину: чаще всего это происходит из-за «залипания» фонового процесса Gradle (Daemon), который не успел завершиться после предыдущей неудачной попытки сборки.
Разберем по шагам, как освободить файлы:
E:\Android\2021\cacheAndroid2).build и intermediates содержат тысячи мелких файлов. Антивирус может начать сканирование нового файла в тот момент, когда Gradle пытается его переместить или удалить. Добавим папку рабочего каталога сборщика в исключения антивируса и защитника Windows.Наиболее сложная ошибка в логе — com.android.ide.common.signing.KeytoolException: Failed to read key MK from store... Invalid keystore format. Это означает, что Gradle не смог распознать файл вашего ключа подписи. Проанализируем ситуацию подробнее.
Существует две основные причины возникновения этой ошибки:
Рассмотрим, как правильно создать ключ:
Если вы столкнулись с этой проблемой, самый надежный способ — пересоздать ключ поставщика. При создании ключа в интерфейсе 1С или через keytool убедитесь, что вы используете простую латиницу в путях и именах. Попробуем выполнить создание через командную строку JDK8, чтобы гарантировать совместимость:
keytool -genkey -v -keystore my-release-key.jks -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
Обратите внимание на то, чтобы расширение файла было именно .jks. Если же вы хотите собрать приложение для тестирования без использования собственной подписи, можно воспользоваться советом из обсуждения — временно отключить использование подписи в настройках конфигурации сборщика. В этом случае система подпишет приложение стандартным отладочным ключом (debug key), что позволит установить APK на устройство в режиме разработчика.
В логе автора мелькает путь C:\Users\_\.android. Это явный признак того, что системный профиль пользователя содержит кириллические символы. Инструменты Android SDK, написанные на Java, до сих пор крайне чувствительны к кодировкам в путях к системным папкам.
Проанализируем методы исправления:
C: папку, например C:\AndroidConfig, и добавим в системные переменные окружения Windows переменную ANDROID_SDK_HOME со значением C:\AndroidConfig.E:\AndroidSDK вместо E:\Мои Программы\Android SDK).Если ваша сборка мобильного клиента 1С «падает», выполните следующие действия в указанном порядке:
Build-Tools и SDK Platform, которые фигурируют в ошибках лога (например, 29.0.2).sdkmanager --licenses в консоли от имени администратора.java.exe.packageRelease, пересоздайте ключ в формате JKS с одинаковыми паролями на хранилище и алиас.Соблюдение этих правил позволяет минимизировать количество технических сбоев и успешно собрать мобильное приложение 1С даже в сложных условиях конфигурации операционной системы.