Почему в мобильном приложении 1С не устанавливается драйвер сканера или ККТ после самостоятельной сборки?

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

Рассмотрим распространенную ситуацию: вы выгрузили конфигурацию «1С:Мобильная касса» в файл 1cema.xml, загрузили ее через мобильную платформу на устройство или собрали собственный APK-файл. Приложение запускается, но при попытке подключить оборудование, например, сканер штрихкодов или онлайн-кассу, в настройках отображается статус «Драйвер не установлен». При этом официальное приложение от 1С из магазина приложений на этом же устройстве работает без проблем. Давайте разберемся, почему так происходит и как это исправить.

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

Решение 1: Настройка MIME-типов на веб-сервере

Этот сценарий актуален, если вы публикуете мобильное приложение на своем веб-сервере и загружаете конфигурацию на устройство по сети. Мобильная платформа 1С при установке драйвера пытается скачать с сервера нативные библиотеки, которые чаще всего имеют расширение .so. По умолчанию веб-серверы, такие как IIS или Apache, могут не знать, как обрабатывать файлы с таким расширением. В результате они либо блокируют их скачивание, либо отдают с неправильным типом содержимого (Content-Type), что мешает мобильной платформе их корректно установить.

Чтобы решить эту проблему, необходимо явно указать веб-серверу, как обрабатывать файлы драйверов. Для этого нужно добавить соответствующие MIME-типы в его настройки.

Для веб-сервера IIS (Internet Information Services):

  1. Откройте диспетчер служб IIS на вашем сервере.
  2. В дереве слева выберите ваш сайт или сервер в целом.
  3. В центральной панели найдите и откройте раздел «Типы MIME».
  4. В панели «Действия» справа нажмите «Добавить...».
  5. В открывшемся окне укажите следующие параметры для файлов библиотек:
    • Расширение файла: .so
    • Тип MIME: application/octet-stream
  6. Нажмите «ОК». На всякий случай полезно добавить и тип для APK-файлов, которые также могут использоваться для установки драйверов:
    • Расширение файла: .apk
    • Тип MIME: application/vnd.android.package-archive
  7. Нажмите «ОК» и перезапустите веб-сервер, чтобы изменения вступили в силу.

Тип application/octet-stream сообщает серверу, что это просто поток двоичных данных, который нужно передать клиенту без какой-либо дополнительной обработки.

Для веб-сервера Apache:

Необходимо отредактировать конфигурационный файл сервера (обычно это httpd.conf) или файл .htaccess в корневой директории публикации. Добавьте в него следующую строку:

AddType application/octet-stream .so

После сохранения изменений не забудьте перезапустить службу Apache. После этих настроек мобильное приложение сможет без проблем скачать и установить необходимые компоненты драйвера.

Решение 2: Проверка архитектуры процессора при сборке APK-файла

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

Выясним причину. Драйверы для Android содержат нативные библиотеки, скомпилированные под конкретные архитектуры процессоров. Самые распространенные из них:

Если в состав вашего драйвера (в конфигурации 1С он хранится в виде макета) включены библиотеки только для arm64-v8a, то на 32-битном устройстве (armeabi-v7a) они просто не смогут запуститься. Система не найдет подходящий файл, и вы увидите ошибку «Драйвер не установлен».

Разберем по шагам, как это исправить:

  1. Проверьте состав драйвера. В конфигурации 1С драйверы обычно хранятся в общих макетах. Найдите макет, соответствующий вашему драйверу сканера или ККТ. Выгрузите его в файл (обычно это zip-архив).
  2. Проанализируйте содержимое архива. Распакуйте архив и посмотрите на его структуру. Внутри вы должны найти каталоги с названиями, соответствующими архитектурам, например, arm64-v8a, armeabi-v7a и т.д. Внутри каждого из этих каталогов должны лежать файлы библиотек (.so).
  3. Убедитесь в наличии нужной архитектуры. Если ваше целевое устройство 32-битное, а в архиве есть только папка arm64-v8a, значит, вы нашли причину проблемы.
  4. Добавьте недостающие файлы. Вам необходимо найти полную версию дистрибутива драйвера, которая содержит все необходимые архитектуры. Часто их можно найти в комплекте поставки конфигурации «Мобильная касса» (например, в файле 1cema.zip) или на сайте производителя оборудования. Скопируйте недостающие каталоги с файлами (например, папку armeabi-v7a) в ваш распакованный макет.
  5. Обновите макет в конфигурации. Запакуйте обновленную структуру папок обратно в zip-архив и загрузите его в макет в конфигураторе 1С.
  6. Пересоберите APK-файл. Запустите «Сборщик мобильных приложений» заново и создайте новый APK-файл на основе обновленной конфигурации. Установите его на проблемное устройство — теперь драйвер должен установиться корректно.

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

← На главную