В процессе подготовки мобильного приложения с использованием конфигурации «Сборщик мобильных приложений» разработчики нередко сталкиваются с ситуацией, когда в момент указания каталога Android SDK система выдает исключение: «Преобразование к числу не может быть выполнено». Ошибка возникает сразу же при выборе папки и блокирует дальнейшую работу с мастером сборки.
Разберем подробнее внутреннюю механику работы сборщика, выясним истинные причины такого поведения платформы и рассмотрим пошаговые методы исправления ситуации.
Когда мы указываем путь к каталогу Android SDK, сборщик запускает алгоритм автоматического анализа установленных компонентов. В коде конфигурации выполняется сканирование подкаталогов platforms и build-tools для определения доступных версий API и утилит сборки.
В типовом алгоритме сборщика предполагается, что папки платформ имеют строго регламентированные имена вида android-XX (например, android-31, android-33), а папки инструментов сборки — вид числовой версии (например, 33.0.2). Алгоритм 1С берет имя каталога, отсекает строковый префикс и пытается выполнить явное приведение оставшейся части строки к числовому типу через функцию Число().
Если на диске обнаруживается папка с нестандартным именем, предварительной версией или временными файлами, функция приведения типов не может распознать число и аварийно завершает работу с системной ошибкой.
C:\Program Files\Android\Android Studio). В этой директории находится собственная структура файлов среды разработки. Попытка сборщика 1С прочитать ее как SDK приводит к сбою разбора.android-UpsideDownCake, 34.0.0-rc1, алгоритм не может выделить из названия целое число.build-tools и platforms. При прерывании загрузки компонентов через Android Studio внутри SDK могут оставаться служебные папки (например, .temp, .installer). Сборщик считывает все подкаталоги подряд без предварительной фильтрации.source.properties. Внутри каждого пакета находится файл свойств, откуда 1С считывает параметры AndroidVersion.ApiLevel и Pkg.Revision. Наличие нечисловых символов в этих полях также вызывает аварийную остановку.Проверим правильность используемого пути. Каталог SDK обычно располагается отдельно от самой среды разработки. Выясним точное расположение через интерфейс Android Studio:
C:\Users\<Имя_пользователя>\AppData\Local\Android\Sdk.Если путь указан верно, но ошибка сохраняется, проанализируем внутреннее содержимое каталога SDK и устраним неподдерживаемые версии:
Android/Sdk/platforms. Удалим или переместим за пределы SDK все папки с буквенными обозначениями версий (любые названия с суффиксами Preview или кодовыми именами ОС). Оставим только стабильные версии со стандартным форматом имени (например, android-31, android-33).Android/Sdk/build-tools. Проверим список установленных наборов. Удалим каталоги релиз-кандидатов (содержащие суффиксы -rc, -beta) и временные папки, оставшиеся после незавершенных обновлений.Начиная со свежих версий платформы «1С:Предприятие 8.3», фирма «1С» реализовала специальный облачный инструмент, позволяющий полностью отказаться от локальной установки Android Studio, Java JDK и Android SDK на рабочем компьютере разработчика.
Рассмотрим, как запустить этот инструмент:
.apk и .aab выполняется на подготовленной серверной инфраструктуре «1С:Элемент».Если сборщик развернут как отдельная информационная база и доступен для редактирования, мы можем найти проблемное место через отладчик и доработать процедуру проверки. Это исключит прерывание работы из-за посторонних папок.
Запустим базу сборщика в Конфигураторе, включим режим «Останавливаться по ошибке» и повторим выбор каталога SDK. Когда отладчик остановится на строке с функцией Число(), мы увидим имя проблемного каталога в окне «Табло».
Для надежного обхода ошибки обернем операцию разбора имени в конструкцию перехвата исключений:
Попытка
НомерВерсии = Число(СтрЗаменить(ИмяКаталога, "android-", ""));
// Добавление версии в список доступных платформ
СписокПлатформ.Добавить(НомерВерсии);
Исключение
// Пропускаем каталоги с превью-версиями и служебными файлами
ЗаписьЖурналаРегистрации("Сборка мобильного приложения",
УровеньЖурналаРегистрации.Предупреждение,,,
"Пропущен каталог с некорректным форматом версии: " + ИмяКаталога);
КонецПопытки;
Такая доработка защитит сборщик от падения, позволит ему корректно обработать валидные версии Android SDK и успешно завершить сборку мобильного приложения.