Как устранить ошибку сборки мобильного приложения 1С при подписи APK и отсутствии файла key.key?

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

При сборке автономного мобильного приложения с помощью конфигурации «Сборщик мобильных приложений» разработчики нередко сталкиваются с аварийным завершением процесса сборки Apache Ant. В логе процесса появляется сообщение об ошибке следующего вида:


-release-sign:
[echo] Signing final apk...
BUILD FAILED
C:\Android\sdk\tools\ant\build.xml:1135: The following error occurred while executing this line:
C:\Android\sdk\tools\ant\build.xml:1147: C:\Users\user\mobkas\guid-папка\key.key (Не удается найти указанный файл)

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

Причины сбоя на этапе подписания приложения (-release-sign)

Процесс сборки Android-приложения через Ant завершается этапом подписи сгенерированного файла 1cem-release-unsigned.apk. Для выполнения этой операции скрипт сборки обращается к файлу ключа разработчика (хранилищу ключей), путь к которому передается конфигурацией сборщика в управляющий файл build.xml.

Сбой происходит по одной из следующих причин:

  1. Не указаны параметры поставщика: в настройках сборщика мобильных приложений не был задан или создан сертификат разработчика, а пароли были введены произвольно без привязки к реальному хранилищу ключей.
  2. Синтаксическая ошибка в коде конфигурации сборщика: в некоторых релизах сборщика мобильных приложений в общем модуле FileSystemService процедура вызова утилиты keytool формирует командную строку без обязательных пробелов между ключами запуска (например, между -alias, -keystore и путями к файлам). В результате утилита завершает работу с ошибкой, файл ключа не создается, а Ant не находит ожидаемый key.key.
  3. Несовместимость версий Android SDK Build-Tools и Apache Ant: использование современных версий инструментов сборки, где утилиты подписи и упаковки были изменены или перенесены, приводит к нарушению логики устаревших сценариев Ant.

Способ 1. Исправление ошибки в коде конфигурации сборщика

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

  1. Откроем конфигурацию «Сборщик мобильных приложений» в режиме Конфигуратора.
  2. Найдем общий модуль FileSystemService.
  3. Перейдем к процедуре GenerateKeyFile (или СформироватьФайлКлюча).
  4. Проверим формирование строковой переменной, содержащей параметры запуска утилиты keytool из состава Java Development Kit (JDK).
  5. Убедимся, что между всеми параметрами (-genkey, -v, -keystore, -alias, -keyalg, -validity) присутствуют пробелы, а пути к файлам и каталогам корректно обрамлены кавычками на случай наличия пробелов в именах папок.
  6. Сохраним изменения в конфигурации и повторим попытку создания ключа разработчика в пользовательском режиме.

Способ 2. Ручная генерация хранилища ключей через утилиту keytool

Наиболее надежный и рекомендуемый способ, исключающий влияние ошибок в алгоритмах сборщика, — предварительное создание собственного хранилища ключей с помощью утилиты командной строки JDK.

Выполним генерацию ключа вручную:

  1. Запустим командную строку Windows (cmd.exe) от имени администратора.
  2. Перейдем в каталог утилит Java (например, C:\Program Files\Java\jdk1.8.0_131\bin) или убедимся, что путь к JDK прописан в системной переменной PATH.
  3. Выполним команду генерации нового хранилища ключей:

keytool -genkey -v -keystore C:\AndroidKeys\my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

В процессе выполнения утилита запросит ввод пароля хранилища, пароля ключа (можно сделать их одинаковыми), а также регистрационные данные разработчика (имя, организацию, город, страну).

Затем привяжем созданный ключ в сборщике:

  1. Откроем конфигурацию сборщика в режиме «1С:Предприятие».
  2. Перейдем в раздел настроек поставщика (параметры для ОС Android).
  3. Нажмем кнопку «Установить ключ разработчика» и выберем созданный файл my-release-key.keystore.
  4. Заполним алиас (псевдоним) ключа (my-key-alias) и пароли, указанные при формировании через keytool.
  5. При необходимости использования карт Google нажмем команду «Получить хеш ключа разработчика» для извлечения SHA-1 отпечатка.

Диагностика проблем с внешними компонентами и драйверами оборудования

Нередко после успешной сборки и установки автономного APK-пакета внешние компоненты (например, драйверы торгового оборудования, сканеров штрихкодов или фискальных регистраторов) отказываются работать или выдают ошибку о том, что драйвер не установлен, хотя при запуске мобильного приложения через мобильный разработчик (отладчик) всё функционирует корректно.

Разберем основные причины такого поведения и способы их устранения:

  1. Несоответствие архитектур процессора (ABI):

    Внешние компоненты для Android поставляются в виде скомпилированных библиотек (файлов .so) под конкретные архитектуры (armeabi-v7a, arm64-v8a, x86). Если при сборке мобильного приложения выбрана целевая платформа (например, только ARM), а устройство работает на x86 или 64-битном ARM без включения совместимых библиотек, компонента не сможет загрузиться в память процесса.

  2. Недостающие системные разрешения в AndroidManifest.xml:

    При сборке автономного приложения сборщик формирует манифест с нуля на основании отмеченных настроек. Для работы оборудования (по Bluetooth, USB, Wi-Fi) драйверу требуются дополнительные разрешения, такие как BLUETOOTH, BLUETOOTH_ADMIN, ACCESS_FINE_LOCATION, а также соответствующие теги uses-feature. Проверим, чтобы в настройках мобильной конфигурации были отмечены все необходимые разрешения для внешних компонент.

  3. Структура архива компоненты:

    Внешняя компонента для мобильной платформы 1С представляет собой zip-архив с файлом MANIFEST.XML и подкаталогами для поддерживаемых платформ. Убедимся, что архив макета компоненты в конфигурации не поврежден и содержит правильную структуру папок с динамическими библиотеками.

Требования к окружению для сборки через Apache Ant

Для стабильной сборки мобильных приложений старых версий (на базе платформы 8.3.10 и смежных) важно соблюдать системные ограничения окружения:

  1. Версия Java: необходимо использовать Oracle JDK 1.8 (Java 8). Более новые версии Java (JDK 11, JDK 17) содержат несовместимые параметры компилятора и вызывают сбои при сборке скриптами Ant.
  2. Версия Android SDK Tools: поддержка Apache Ant была удалена из Android SDK начиная с версии SDK Tools 25.3.0. Для сборки с помощью Ant следует использовать Android SDK Tools 25.2.3 и Build-Tools версии не выше 25.0.3.
  3. Ограничение длины путей (MAX_PATH): избегайте длинных путей к каталогу кэша сборщика. Рекомендуется указывать короткий путь к рабочей папке (например, C:\mobbuild\), чтобы утилиты aapt и apkbuilder не падали при создании временных подпапок с длинными GUID.
← На главную