Как запустить установку APK-файла из мобильного приложения 1С на Android?

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

Разберем актуальную проблему, с которой сталкиваются многие разработчики мобильных приложений на платформе 1С: возможность программного запуска APK-файла для обновления приложения непосредственно из интерфейса 1С. В современных версиях Android эта задача стала крайне сложной из-за ужесточения политик безопасности.

Анализ ситуации: почему не работают стандартные методы

Многие разработчики пытаются использовать стандартные методы 1С для вызова внешних приложений, такие как ЗапуститьПриложение, ЗапуститьПриложениеАсинх или ЗапускПриложенияМобильногоУстройства. Однако, при попытке передать файл с типом application/vnd.android.package-archive, система часто реагирует либо отсутствием действий, либо «вылетом» мобильной платформы.

Основная причина кроется в архитектурных изменениях Android, начиная с 10-й и особенно 11-й версии:

  1. Изолированное хранилище (Scoped Storage): Прямой доступ к файлам по путям вроде /storage/emulated/0/ ограничен. Системный установщик Android не может «дотянуться» до файла, который лежит в приватной директории приложения 1С.
  2. Требования безопасности: Для установки приложений система требует явного разрешения REQUEST_INSTALL_PACKAGES. Даже если в настройках конфигурации 1С установлена соответствующая галочка, платформа не всегда корректно транслирует это разрешение в манифест для системного установщика.
  3. FileProvider: Современные стандарты требуют использования content:// URI вместо прямого пути file://. Встроенных механизмов для формирования таких ссылок в мобильной платформе 1С на данный момент нет.

Рекомендуемые подходы к обновлению приложений

Поскольку попытки «пробить» защиту системы через v8res:// или другие системные пути в большинстве случаев заканчиваются неудачей, рассмотрим наиболее надежные и поддерживаемые способы решения задачи обновлений.

Способ №1: Перенаправление пользователя в браузер

На текущий момент это наиболее стабильный метод. Вместо автоматической «тихой» установки мы делегируем процесс скачивания и установки системному браузеру, который уже имеет все необходимые привилегии.

Реализуем это следующим образом: предоставляем пользователю ссылку на APK-файл, размещенный на корпоративном веб-сервере. При переходе по ссылке браузер скачивает файл, и после завершения загрузки предлагает пользователю произвести установку.

Алгоритм действий:

  1. Загрузите актуальный APK-файл на ваш веб-сервер.
  2. В мобильном приложении 1С создайте форму информирования об обновлении.
  3. При нажатии на кнопку «Обновить» используйте метод ЗапуститьПриложение для открытия ссылки в браузере.

// Пример открытия ссылки для скачивания обновления
АдресОбновления = \"https://mycompany.com/updates/myapp.apk\";
ЗапуститьПриложение(АдресОбновления);

После открытия браузера, пользователь увидит системный запрос на установку стороннего приложения (если это первое обновление), что является штатным и предсказуемым поведением Android.

Способ №2: Использование механизма обновления конфигурации

Если изменения не затрагивают саму мобильную платформу (нет правок манифеста, иконок или добавления библиотек), а касаются только метаданных, используйте штатный механизм обновления конфигурации 1С.

Преимущества метода:

Для реализации этого метода необходимо опубликовать файл обновления на веб-сервере и настроить мобильное приложение на проверку доступности этого файла. Платформа 1С самостоятельно скачает cf или cfu файл и произведет обновление конфигурации.

Заключение

На текущий момент попытки реализовать автоматическую установку APK «в один клик» из мобильной платформы 1С сталкиваются с жесткими ограничениями операционной системы Android. Наиболее рациональным решением для бизнеса будет использование веб-ссылок на скачивание или переход на корпоративные системы управления мобильными устройствами (MDM), которые позволяют обновлять приложения централизованно без участия пользователя.

Не рекомендуем тратить ресурсы на попытки взлома системных путей или подмену файлов внутри директорий платформы, так как это ведет к нестабильной работе приложения и возможным критическим ошибкам при очередном обновлении самой ОС Android.

← На главную