При переходе на новые версии платформы 1С:Предприятие (в частности, начиная с релиза 8.3.14) разработчики мобильных решений часто сталкиваются с непредвиденным поведением системы при попытке собрать готовое мобильное приложение. Процесс компиляции в файл формата .apk прерывается критической ошибкой сборщика мобильных приложений: "Unknown config type" (неизвестный тип конфигурации). При этом более старые версии платформы собирали то же самое приложение абсолютно корректно.
В рамках данной статьи мы подробно разберем, почему возникает эта ошибка, проанализируем изменения в механизмах выгрузки мобильных конфигураций в современных версиях платформы 1С, выясним причину конфликта в кодовой базе сборщика и рассмотрим по шагам все возможные пути решения этой проблемы.
Для того чтобы понять природу возникновения ошибки, рассмотрим подробнее, как именно изменился процесс выгрузки мобильного приложения из конфигуратора 1С:
1cema.xml. Этот файл напрямую загружался в Сборщик мобильных приложений. Начиная с версии 8.3.14, прямая выгрузка в незаархивированный XML-файл больше не поддерживается..zip (по умолчанию это 1cema.zip для мобильного приложения или 1cemca.zip для мобильного клиента).1cema.xml (или аналогичный), который содержит обновленное описание метаданных.1Cv8.1CM. Этот файл содержит скомпилированную базу данных конфигурации. Данное нововведение было сделано разработчиками фирмы «1С» для существенного ускорения первого запуска приложения на мобильном устройстве пользователя.MobileAppInfo, тогда как в старых версиях использовался тег MobileApp.Проанализируем ситуацию с технической стороны. Обратимся к коду Сборщика мобильных приложений версий 2.0.8.18 / 2.0.8.19. В модуле импорта конфигурации сборщика прописан жесткий алгоритм разбора входящего XML-файла:
if XMLReader.LocalName = "MobileApp" Then
CfgProps.configType = Enums.MakeType.Application;
ElsIf XMLReader.LocalName = "MobileClient" Then
CfgProps.configType = Enums.MakeType.Client;
Else
Raise "Unknown config type";
EndIf;
Как мы видим из приведенного листинга, старая версия Сборщика мобильных приложений ожидает увидеть на входе строго теги MobileApp или MobileClient. Когда сборщик пытается разобрать новый файл из платформы 8.3.14, он натыкается на тег MobileAppInfo. Не проходя проверку по условиям if и ElsIf, код уходит в ветку Else и вызывает исключение "Unknown config type", полностью блокируя дальнейший процесс сборки пакета.
Таким образом, мы имеем классический конфликт версий: обновленный конфигуратор выгружает данные в новом формате, а старая версия сборщика не умеет корректно интерпретировать новые XML-теги и бинарные файлы внутри ZIP-архива.
Самым правильным, надежным и официально поддерживаемым решением является обновление конфигурации "Сборщик мобильных приложений" до версии, совместимой с новыми релизами платформы.
Разберем этот процесс по шагам:
MobileAppInfo реализована в сборщиках версии 2.0.8.39 (которая поставлялась в тестовых релизах мобильной платформы 8.3.13.59) и версиях семейства 2.0.9.х и выше.MobileAppMaker. Именно в ней находится актуальный файл конфигурации сборщика (обычно файл имеет расширение .cf или поставляется в виде готовой базы данных)..cf, если в базу не вносились доработки.После успешного обновления Сборщик мобильных приложений начнет корректно считывать ZIP-архивы и распознавать новый тег MobileAppInfo, а процесс генерации APK-файлов завершится без ошибок.
Если по каким-то организационным или техническим причинам вы не можете оперативно обновить Сборщик мобильных приложений и сопутствующее окружение (Android SDK, Java JDK), можно временно использовать обходной путь с понижением версии конфигуратора:
1cema.xml в старом формате.1cema.xml в ваш текущий Сборщик мобильных приложений версии 2.0.8.18 / 2.0.8.19. Сборка пройдет в штатном режиме без ошибок совместимости типов.Важное примечание: данный способ является временной полумерой. Использование старых версий мобильной платформы может приводить к сбоям при работе приложения на современных версиях операционной системы Android (например, Android 9.0 и выше), где накладываются повышенные требования к безопасности, разрешениям и используемым системным библиотекам.
Если процесс развертывания локального Сборщика мобильных приложений, постоянная поддержка актуальности Java SDK, Android SDK, утилит сборки Gradle или Ant кажутся вам излишне сложными и трудоемкими, рассмотрим альтернативный современный подход.
Начиная с версий платформы 1С:Предприятие 8.3.20, фирма «1С» предоставила разработчикам удобную альтернативу — облачный Сервис сборки мобильных приложений. Этот инструмент интегрирован непосредственно в платформу и позволяет полностью отказаться от развертывания локальной базы сборщика.
Проанализируем преимущества использования облачного сервиса сборки:
Для использования данного сервиса достаточно иметь действующий договор сопровождения 1С:ИТС и настроить авторизацию в личном кабинете портала 1С непосредственно в настройках вашей информационной базы.