Обновление мобильной платформы 1С на устройствах Android — это задача, с которой рано или поздно сталкивается любой разработчик мобильных решений. В отличие от обновления самой конфигурации, которое происходит практически незаметно для пользователя при синхронизации, замена версии платформы (исполняемого APK-файла) требует более глубокого вмешательства. Ситуация осложняется, когда парк устройств велик и разбросан географически. В этой статье мы подробно разберем все доступные методы: от официальных магазинов до программной «раскатки» обновлений через код.
Прежде всего, давайте проанализируем ситуацию и разберем, что именно нам нужно обновить. В экосистеме 1С существует два подхода к мобильной разработке:
В данной статье мы сосредоточимся на наиболее сложном сценарии — когда необходимо обновить именно саму платформу на множестве удаленных устройств.
Это самый простой и рекомендуемый способ для массового сегмента. Рассмотрим подробнее, как это работает. Если ваше приложение опубликовано в Google Play или RuStore, операционная система Android сама отследит появление новой версии и предложит пользователю обновиться (или сделает это автоматически в фоновом режиме).
Однако этот метод имеет свои ограничения:
Для корпоративного сектора, где количество устройств (ТСД или смартфонов у «манагеров в полях») исчисляется десятками и сотнями, наиболее эффективным решением будет использование систем управления мобильными устройствами (Mobile Device Management). Рассмотрим, как это реализовано на примере решений от Zebra или универсальных систем типа SOTI MobiControl или SafePhone.
Проанализируем возможности MDM:
1C:Enterprise.Это профессиональный путь, который требует дополнительных затрат на ПО, но полностью снимает проблему «тупящих пользователей».
Если бюджет не позволяет использовать MDM, мы можем реализовать механизм «самообновления» внутри самой конфигурации 1С. Разберем по шагам, как это можно реализовать программно.
Суть метода заключается в том, чтобы хранить актуальный APK-файл новой платформы внутри конфигурации (например, в макете или присоединенном файле) или скачивать его по прямой ссылке с вашего сервера. Рассмотрим пример логики:
1. При запуске системы проверяем текущую версию платформы через объект ИнформацияСистемы. Выясним причину несоответствия версий и, если версия устарела, инициируем процесс обновления.
// Пример проверки версии платформы
Инфо = Новый ИнформацияСистемы;
ТекущаяВерсия = Инфо.ВерсияПриложения;
НужнаяВерсия = "8.3.24.15"; // Берем из константы
Если ТекущаяВерсия <> НужнаяВерсия Тогда
Предупреждение("Необходимо обновить платформу! Сейчас начнется загрузка.");
// Вызываем процедуру скачивания и установки
ОбновитьПлатформу();
КонецЕсли;
2. Процедура ОбновитьПлатформу должна сохранить файл APK во временное хранилище устройства и вызвать системную команду установки. Для этого используем метод ЗапуститьПриложение.
Важный нюанс: Начиная с Android 10 и выше, механизмы безопасности запрещают приложениям просто так запускать установку файлов. Проанализируем, что нужно учесть:
REQUEST_INSTALL_PACKAGES.FileProvider для передачи пути к файлу, так как прямые пути типа file:// больше не работают. В 1С это решается сохранением файла в доступную ОС директорию (например, папку загрузок).
// Пример вызова установки через ЗапуститьПриложение
ПутьКФайлу = "file:///sdcard/Download/1c_platform.apk";
ЗапуститьПриложение(ПутьКФайлу);
Если ваши устройства (например, терминалы сбора данных) находятся в одной локальной сети (Wi-Fi склада), мы можем рассмотреть вариант обновления через ADB (Android Debug Bridge). Это позволяет системному администратору обновить все устройства, не заходя в каждое из них.
Разберем алгоритм действий:
adb install -r platform.apk. Параметр -r крайне важен, так как он означает «reinstall» (переустановка с сохранением данных базы).Самый большой страх при обновлении платформы — потерять локальную базу данных (особенно если есть данные, которые еще не синхронизированы с сервером). Проанализируем ситуацию: при установке новой версии платформы «поверх» старой (с той же цифровой подписью APK), данные приложения сохраняются. Однако, если вы решите сначала программно «удалить» старую версию, а потом поставить новую — все данные будут безвозвратно удалены вместе с папкой приложения.
Поэтому правило номер один: Никогда не удаляйте старую платформу перед установкой новой. Используйте только режим обновления (накатывания) файла APK поверх существующего приложения.
Мы рассмотрели различные подходы к обновлению мобильной платформы 1С на Android. Выбор метода зависит от ваших ресурсов и условий эксплуатации:
Помните, что перед массовым обновлением необходимо протестировать процесс на одном контрольном устройстве, чтобы убедиться в корректности работы ЗапуститьПриложение и сохранности данных базы.