Почему при сборке мобильного приложения 1С возникает ошибка преобразования к числу при выборе Android SDK?

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

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

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

Механизм возникновения ошибки в коде 1С

Когда мы указываем путь к каталогу Android SDK, сборщик запускает алгоритм автоматического анализа установленных компонентов. В коде конфигурации выполняется сканирование подкаталогов platforms и build-tools для определения доступных версий API и утилит сборки.

В типовом алгоритме сборщика предполагается, что папки платформ имеют строго регламентированные имена вида android-XX (например, android-31, android-33), а папки инструментов сборки — вид числовой версии (например, 33.0.2). Алгоритм 1С берет имя каталога, отсекает строковый префикс и пытается выполнить явное приведение оставшейся части строки к числовому типу через функцию Число().

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

Основные причины сбоя

  1. Указание пути к среде Android Studio вместо каталога SDK. Распространенная ошибка — выбор корневой папки самой программы (например, C:\Program Files\Android\Android Studio). В этой директории находится собственная структура файлов среды разработки. Попытка сборщика 1С прочитать ее как SDK приводит к сбою разбора.
  2. Наличие предварительных и тестовых версий (Preview, RC, Beta). Если через SDK Manager были установлены версии API для разработчиков (Canary, Developer Preview) или пакеты с суффиксами вроде android-UpsideDownCake, 34.0.0-rc1, алгоритм не может выделить из названия целое число.
  3. Остаточные и временные каталоги в build-tools и platforms. При прерывании загрузки компонентов через Android Studio внутри SDK могут оставаться служебные папки (например, .temp, .installer). Сборщик считывает все подкаталоги подряд без предварительной фильтрации.
  4. Нестандартные параметры в файле source.properties. Внутри каждого пакета находится файл свойств, откуда 1С считывает параметры AndroidVersion.ApiLevel и Pkg.Revision. Наличие нечисловых символов в этих полях также вызывает аварийную остановку.

Способ 1. Указание корректного пути к SDK

Проверим правильность используемого пути. Каталог SDK обычно располагается отдельно от самой среды разработки. Выясним точное расположение через интерфейс Android Studio:

  1. Запустим Android Studio и перейдем в меню Settings (или Preferences на macOS).
  2. Откроем раздел Appearance & Behavior → System Settings → Android SDK.
  3. В верхней части окна скопируем значение из поля Android SDK Location. Обычно путь выглядит следующим образом: C:\Users\<Имя_пользователя>\AppData\Local\Android\Sdk.
  4. Укажем именно эту папку в форме настроек сборщика мобильных приложений 1С.

Способ 2. Очистка каталогов SDK от тестовых версий и мусора

Если путь указан верно, но ошибка сохраняется, проанализируем внутреннее содержимое каталога SDK и устраним неподдерживаемые версии:

  1. Перейдем в каталог Android/Sdk/platforms. Удалим или переместим за пределы SDK все папки с буквенными обозначениями версий (любые названия с суффиксами Preview или кодовыми именами ОС). Оставим только стабильные версии со стандартным форматом имени (например, android-31, android-33).
  2. Перейдем в каталог Android/Sdk/build-tools. Проверим список установленных наборов. Удалим каталоги релиз-кандидатов (содержащие суффиксы -rc, -beta) и временные папки, оставшиеся после незавершенных обновлений.
  3. Установим через SDK Manager стабильные версии инструментов, рекомендованные на текущий момент на портале ИТС для используемой версии мобильной платформы 1С.

Способ 3. Переход на встроенный облачный сервис сборки

Начиная со свежих версий платформы «1С:Предприятие 8.3», фирма «1С» реализовала специальный облачный инструмент, позволяющий полностью отказаться от локальной установки Android Studio, Java JDK и Android SDK на рабочем компьютере разработчика.

Рассмотрим, как запустить этот инструмент:

  1. Откроем базу 1С в режиме «1С:Предприятие» под учетной записью с административными правами.
  2. Перейдем в главное меню: Функции для технического специалиста (или «Все функции»).
  3. В разделе Стандартные выберем пункт Сервис сборки мобильных приложений.
  4. Сформируем исходные файлы конфигурации и отправим их в облачный сервис, где сборка дистрибутивов .apk и .aab выполняется на подготовленной серверной инфраструктуре «1С:Элемент».

Способ 4. Корректировка алгоритма проверки в Конфигураторе

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

Запустим базу сборщика в Конфигураторе, включим режим «Останавливаться по ошибке» и повторим выбор каталога SDK. Когда отладчик остановится на строке с функцией Число(), мы увидим имя проблемного каталога в окне «Табло».

Для надежного обхода ошибки обернем операцию разбора имени в конструкцию перехвата исключений:


Попытка
    НомерВерсии = Число(СтрЗаменить(ИмяКаталога, "android-", ""));
    // Добавление версии в список доступных платформ
    СписокПлатформ.Добавить(НомерВерсии);
Исключение
    // Пропускаем каталоги с превью-версиями и служебными файлами
    ЗаписьЖурналаРегистрации("Сборка мобильного приложения", 
        УровеньЖурналаРегистрации.Предупреждение,,, 
        "Пропущен каталог с некорректным форматом версии: " + ИмяКаталога);
КонецПопытки;

Такая доработка защитит сборщик от падения, позволит ему корректно обработать валидные версии Android SDK и успешно завершить сборку мобильного приложения.

← На главную