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

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

Разработчики мобильных решений на платформе 1С часто сталкиваются с ситуацией, когда стабильно работавшее приложение после обновления операционной системы устройства до Android 9 (API level 28) начинает мгновенно закрываться («вылетать») сразу при запуске. При этом на Android 8 и более ранних версиях никаких проблем не наблюдалось. Особенно остро эта проблема проявляется на старых версиях мобильной платформы 1С (например, 8.3.12.60_mobile).

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

Выясняем причины: почему Android 9 блокирует запуск старых версий 1С

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

  1. Блокировка Non-SDK системных интерфейсов (приватных API). Начиная с Android 9, компания Google ввела строгие ограничения на использование сторонними приложениями недокументированных вызовов Java-классов операционной системы. Старые версии мобильной платформы 1С (до 8.3.13) активно использовали эти «серые» интерфейсы для управления памятью, низкоуровневой работы с графическим интерфейсом и системными службами. В Android 9 попытка обращения к заблокированному системному методу вызывает мгновенный аварийный останов процесса без генерации исключений, которые могла бы перехватить платформа.
  2. Обязательный переход на 64-битную архитектуру (ARM64). С августа 2019 года Google Play жестко требует, чтобы все публикуемые и обновляемые приложения поддерживали 64-разрядную архитектуру. Старые релизы мобильной платформы 1С поставлялись преимущественно в 32-битном исполнении. На современных устройствах под управлением Android 9 такие приложения либо вообще не устанавливаются из маркета, либо работают нестабильно, аварийно завершая работу при обращении к динамическим библиотекам.
  3. Запрет на незашифрованный HTTP-трафик (Cleartext Traffic). В Android 9 по умолчанию действует политика безопасности, запрещающая любые сетевые запросы по незащищенному протоколу HTTP (разрешен только HTTPS). Если ваше мобильное приложение при старте пытается обратиться к веб-серверу публикации по HTTP для проверки обновлений или обмена данными, операционная система блокирует сетевой сокет. В старых сборках платформы это приводило к критической ошибке инициализации и падению приложения на главном экране.

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

Решение 1. Переход на актуальную версию мобильной платформы

Самый простой и надежный способ решить проблему с вылетом приложения — это обновление версии мобильной платформы 1С. Как показывает практика практикующих разработчиков, минимальная версия платформы, на которой обеспечивается стабильная работа в Android 9, — это 8.3.13.45. Однако для соответствия современным требованиям безопасности и обеспечения 64-битной совместимости мы настоятельно рекомендуем использовать версию 8.3.15.62 и выше.

Для обновления выполним следующие шаги:

  1. Скачаем актуальный дистрибутив мобильной платформы 1С (например, версию 8.3.15.62 или более позднюю) с официального портала поддержки пользователей 1С.
  2. Распакуем архив с дистрибутивом. Нам понадобятся файлы мобильной платформы разработчика (для тестирования) и компоненты сборщика мобильных приложений.
  3. Установим на мобильное устройство обновленный «стартер» (файл 1cem-arm.apk или 1cem-x86.apk в зависимости от процессора вашего устройства) и проверим запуск информационной базы в режиме отладки.

Решение 2. Обновление и настройка окружения Сборщика мобильных приложений

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

Рассмотрим подробнее требования к окружению при переходе на платформу 1С 8.3.15 и выше:

После обновления окружения запустим Сборщик мобильных приложений, укажем новые пути к JDK и SDK, выберем обновленный zip-архив мобильной платформы 1С и выполним повторную сборку нашего APK-файла.

Решение 3. Использование файла ibases.v8i для быстрой дистрибуции баз

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

Вместо сборки индивидуальных APK-пакетов мы можем использовать стандартное приложение «1С:Предприятие» (мобильный стартер) из Google Play или официального сайта 1С, а список баз и сами обновления раздавать централизованно с помощью файла конфигурации ibases.v8i.

Разберем этот механизм по шагам:

  1. Опубликуем мобильную конфигурацию на веб-сервере (Apache или IIS). На выходе мы должны получить валидный URL-адрес публикации (например, https://server.company.ru/shoptable).
  2. Создадим обычный текстовый файл с именем ibases.v8i. Этот файл будет содержать описание нашей информационной базы и параметры ее подключения.
  3. Наполним файл ibases.v8i следующим содержимым:

[Мобильная база Торговля]
Connect=Ws="https://server.company.ru/shoptable";
id=1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p
DefaultLanguage=ru
AppKind=MobileClient

Обратите внимание на параметр AppKind. В зависимости от архитектуры вашего решения, вы можете указать значение MobileClient (для работы в режиме мобильного клиента с постоянным подключением к серверу) или использовать параметры запуска мобильного приложения с автономной базой данных.

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

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

← На главную