Как исправить ошибку создания ключа разработчика и настроить компоненты в сборщике мобильных приложений 1С?

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

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

Исправление ошибок в программном коде сборщика

Одной из наиболее распространенных причин ошибки при создании ключа является некорректное формирование строки запуска внешней утилиты keytool. В коде общего модуля FileSystemService (или ФайловаяСистемаСервер в зависимости от версии) могут отсутствовать необходимые пробелы между параметрами командной строки. Проанализируем процедуру GenerateKeyFile (ГенерацияФайлаКлюча).

В некоторых версиях сборщика (включая 8.3.10.хх и даже более поздние 8.3.21.хх) параметры -storepass, -keypass и -dname склеиваются со значениями паролей или имен. Нам необходимо найти это место и добавить недостающие пробелы. Разберем правильный вариант формирования строки CommandLine:


CommandLine = Utility + " -genkeypair -v" 
    + " -keystore key.key" 
    + " -alias """ + KeyParameters.Alias + """" 
    + " -storepass " + KeyParameters.Password 
    + " -keypass " + KeyParameters.Password 
    + " -keyalg RSA" 
    + " -keysize 2048" 
    + " -validity 40000" 
    + " -dname " + dname;

Обратите внимание на добавленные пробелы после -storepass , -keypass и -dname . Без них утилита keytool не сможет распознать аргументы, что приведет к ошибке с кодом возврата 1.

Аналогичная проблема часто встречается в функции GetSHA1Value (ПолучитьЗначениеSHA1), которая вызывается для проверки созданного ключа. Проанализируем строку вызова:


CommandLine = "cmd /c """ + Utility + " -list -v" 
    + " -keystore """ + FileName + """" 
    + " -alias """ + KeyAlias + """" 
    + " -storepass " + Password + " >" + WorkingFile + """";

Здесь также крайне важно убедиться в наличии пробела после -storepass . После внесения этих правок в код конфигурации запуск процесса генерации ключа должен пройти успешно.

Проблема «Указанный каталог не является каталогом JDK»

Часто при указании пути к установленной Java сборщик выдает ошибку: «Указанный каталог не является каталогом JDK». Проанализируем ситуацию: почему это происходит, если Java установлена корректно? Дело в том, что 1С выполняет проверку наличия файла jar.exe в подпапке bin указанного каталога.

Разберем логику проверки в функции IsJDKDirectory:


Function IsJDKDirectory(Directory) Export
    SysInfo = New SystemInfo;
    If SysInfo.PlatformType = PlatformType.Windows_x86 Or SysInfo.PlatformType = PlatformType.Windows_x86_64 Then
        JAR = Directory + "\bin\jar.exe";
    Else
        JAR = Directory + "\bin\jar";
    EndIf;
    
    // Проверка существования файла jar
    If Not FileExists(JAR) Then
        // Возврат ошибки, если файл не найден
        Return ResultError; 
    EndIf;
    ...
EndFunction

Если вы установили JRE (Java Runtime Environment) вместо полноценного JDK (Java Development Kit), файла jar.exe у вас не будет. Выясним, как это решить:

  1. Правильный путь: Установите полную версию JDK. Рекомендуется использовать Liberica JDK SE 8 (версия Full), так как она полностью совместима с платформой 1С и содержит все необходимые утилиты.
  2. Обходной путь (костыль): Если по какой-то причине вы не можете установить JDK, можно скопировать файл java.exe и переименовать копию в jar.exe в той же папке bin. Сборщик «увидит» нужный файл и пропустит проверку, однако это может привести к ошибкам на этапе реальной упаковки приложения, поэтому используйте этот метод с осторожностью.

Ошибки Android SDK и отсутствие Apache Ant

При использовании современных версий Android SDK (устанавливаемых через Android Studio) сборщик может выдать ошибку: «BUILD FAILED ... Cannot find .../sdk/tools/ant/build.xml». Это связано с тем, что Google удалила поддержку Ant из новых ревизий SDK (начиная с 25.3.0), перейдя на Gradle.

Рассмотрим, как вернуть недостающие компоненты:

  1. Откройте Android Studio и перейдите в SDK Manager.
  2. Перейдите на вкладку SDK Tools.
  3. Внизу окна установите галочку «Show Package Details».
  4. Найдите раздел Android SDK Tools и выберите пункт Android SDK Tools (Obsolete).
  5. Установите этот пакет. После этого в каталоге вашего SDK появится папка tools с необходимым содержимым, включая ant и старый android.bat.

Важный совет: Старайтесь избегать кириллицы в путях к Android SDK и JDK. Если ваша учетная запись Windows называется «Иван», путь C:\Users\Иван\AppData\... может стать причиной нечитаемых ошибок. Перенесите SDK в корень диска, например, в C:\android-sdk.

Проблема получения хеша SHA1 и локализация

Если после всех правок создание ключа проходит, но возникает ошибка «Ошибка получения хеша SHA1», проанализируем вывод команды keytool -list -v. Сборщик 1С ищет в текстовом ответе строку "SHA1:". Если на вашем сервере или компьютере установлена русская локализация Java, утилита выдаст текст: "Отпечаток сертификата (SHA1):". Программный парсер 1С не найдет английское слово и вернет пустой результат.

Для решения этой проблемы можно временно переключить региональные стандарты системы на английские (США) в панели управления Windows перед сборкой ключа или попытаться форсировать язык вывода в коде 1С, добавив параметр -J-Duser.language=en в строку вызова утилиты Utility.

Альтернативный вариант: Облачный сервис сборки

Если настройка локального окружения кажется слишком трудоемкой или возникают неразрешимые конфликты версий, рассмотрим платформенный сервис сборки на портале developer.1c.ru.

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

Для использования сервиса достаточно иметь действующую подписку ИТС и регистрацию на портале разработчиков 1С. Это избавляет от необходимости править код в общем модуле FileSystemService и решать проблемы с отсутствующими jar.exe или ant/build.xml.

Подводя итог, скажем: для успешной локальной сборки критически важно использовать JDK 8, установить Obsolete Tools для Android SDK и убедиться, что в коде сборщика параметры командной строки разделены пробелами. Соблюдение этих условий позволит избежать большинства типовых ошибок.

← На главную