Как собрать мобильное приложение 1С под старые версии Android и iOS?

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

Разработка и поддержка мобильных приложений на платформе 1С для современных устройств обычно не вызывает серьезных трудностей. Однако в реальной практике автоматизации бизнеса часто возникает необходимость работы с устаревшим оборудованием. На складах и в торговых точках до сих пор успешно функционируют тысячи профессиональных терминалов сбора данных (ТСД) и планшетов на базе старых операционных систем, таких как Android 4.0.3, Android 4.4 или устаревших версий iOS. Покупка нового парка устройств требует значительных бюджетов, поэтому разработчикам приходится решать задачу адаптации мобильного приложения под требования старых ОС.

В этой статье мы подробно разберем, как правильно подобрать версию мобильной платформы 1С, настроить среду сборки и обойти наиболее распространенные ошибки, включая знаменитый сбой при установке пакета «При синтаксическом анализе пакета возникла неполадка» на Android и предупреждения о несовместимости таргетов в Xcode под iOS.

Совместимость версий мобильной платформы 1С и ОС Android

Выясним причину, почему новые релизы мобильной платформы отказываются работать на старых устройствах. С развитием технологий фирма «1С» вынуждена обновлять внутреннее ядро мобильной платформы и переходить на современные стандарты компиляции и рендеринга. Проанализируем хронологию изменений системных требований мобильной платформы 1С:

  1. Версии до 8.3.10: Номинально поддерживали древние версии Android, начиная с API 9 (Android 2.3). Сборка осуществлялась с использованием утилиты Apache Ant. Самой стабильной версией для «древних» девайсов считается 8.3.9, однако в ней присутствуют критические ошибки при работе с JSON и галереей изображений.
  2. Версии 8.3.11 и 8.3.12: Минимальный поддерживаемый уровень API был повышен до API 14 (Android 4.0). Сборка 8.3.11.57 является наиболее компромиссной и стабильной версией для устройств на Android 4.2–4.4. В ней исправлены многие ошибки работы с файлами и сериализацией данных.
  3. Версия 8.3.13: Номинально запускается на Android 4.0.3, но на практике ведет себя крайне нестабильно. Разработчики часто сталкиваются с тем, что интерфейс приложения частично ломается: не работают переходы по экранным вкладкам табличных частей, зависают элементы управления, хотя запись справочников и проведение документов могут выполняться успешно.
  4. Версия 8.3.14: В этом релизе произошел глобальный технологический переход на новый стандарт компилятора C++17. Из-за этого работа на версиях Android ниже 4.1 стала физически невозможной. Приложение либо не устанавливается, либо аварийно завершает работу сразу при старте.
  5. Версии 8.3.21 и новее: Официально прекращена поддержка Android 4.1–4.3. Минимальный порог поднят до Android 4.4 (KitKat), а в самых свежих релизах (8.3.24+) — до Android 5.0 (API 21).

Таким образом, если перед нами стоит задача запустить приложение на Android 4.0.3, оптимальным выбором станет платформа версии 8.3.9 (с оглядкой на ее баги). Если целевые устройства работают на Android 4.2–4.4, строго рекомендуется использовать релиз 8.3.11.57.

Устранение ошибки «При синтаксическом анализе пакета возникла неполадка»

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

1. Несоответствие директивы minSdkVersion. В манифесте вашего приложения параметр минимальной версии API настроен на более высокое значение, чем поддерживает операционная система устройства. Например, если платформа собрана с ограничением minSdkVersion = 19 (Android 4.4), то устройство с версией 4.0.3 (API 15) отклонит такой пакет еще до начала установки.

2. Проблема со схемой цифровой подписи (Signature Scheme V1 vs V2/V3). Это наиболее частая скрытая проблема. Старые версии Android (4.4 и ниже) умеют проверять только классическую подпись V1 (JAR-подпись). Современные версии Android SDK и утилиты сборщика по умолчанию подписывают пакеты по новым схемам — V2 и V3 (представленным в Android 7.0). Старая операционная система не может распознать такую подпись и считает пакет поврежденным.

Чтобы решить эту проблему, при сборке пакета через Gradle необходимо принудительно заставить сборщик использовать подпись первого поколения. Для этого в конфигурационном файле сборки build.gradle в блоке настроек подписи необходимо явно прописать параметры:


signingConfigs {
    release {
        storeFile file("your_keystore.jks")
        storePassword "your_password"
        keyAlias "your_alias"
        keyPassword "your_password"
        v1SigningEnabled true
        v2SigningEnabled false
    }
}

Отключение схемы V2 (v2SigningEnabled false) и принудительное включение V1 гарантирует, что старый загрузчик пакетов Android сможет верифицировать цифровой сертификат вашего приложения.

Развертывание среды сборки: Apache Ant против Gradle

Сборка мобильных приложений 1С претерпела значительные изменения. До версии 8.3.10 для сборки использовался пакет Apache Ant, а начиная с версии 8.3.10, платформа полностью перешла на современную систему автоматизации сборки Gradle.

Посмотрим на особенности настройки рабочего места разработчика, если необходимо поддерживать как новые, так и старые платформы:

Решение проблемы сборки под iOS в Xcode (ошибка Deployment Target)

Разберем ситуацию, когда аналогичные проблемы обратной совместимости возникают при компиляции приложения под iOS. Типичный сценарий: при использовании Сборщика мобильных приложений версии 2.0.9.49 совместно с мобильной платформой 8.3.14.53 в среде Xcode версии 10.2.1 (или новее) компилятор выдает критическое предупреждение:

warning: The iOS deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.2.99.

Причина кроется в том, что компания Apple жестко ограничивает поддержку устаревших ОС в новых версиях среды разработки. Xcode 10 больше не умеет собирать приложения для iOS 7.0. При этом в шаблонах генерации проектов старых версий мобильной платформы 1С параметр минимальной версии IPHONEOS_DEPLOYMENT_TARGET жестко прописан как 7.0.

Проанализируем шаги, которые помогут нам успешно завершить сборку:

  1. После того как Сборщик МП подготовит исходный проект для Xcode, не запускайте автоматическую компиляцию сразу.
  2. Откройте сгенерированный проект на компьютере Mac непосредственно в среде разработки Xcode.
  3. В левой панели навигатора выберите корневой проект с именем 1cem.
  4. Перейдите на вкладку Build Settings (Настройки сборки). Это нужно сделать как для основного проекта, так и для всех связанных с ним целей компиляции (Targets).
  5. В строке поиска настроек введите Deployment Target или найдите параметр iOS Deployment Target.
  6. Вручную измените значение этого параметра с устаревшего 7.0 на поддерживаемое вашей версией Xcode значение, например 8.0 или 9.0.
  7. Выполните очистку кэша сборки через меню Product -> Clean Build Folder и повторно запустите процесс компиляции. Проект будет собран без ошибок совместимости таргетов.

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

← На главную