Разработка и поддержка мобильных приложений на платформе 1С для современных устройств обычно не вызывает серьезных трудностей. Однако в реальной практике автоматизации бизнеса часто возникает необходимость работы с устаревшим оборудованием. На складах и в торговых точках до сих пор успешно функционируют тысячи профессиональных терминалов сбора данных (ТСД) и планшетов на базе старых операционных систем, таких как Android 4.0.3, Android 4.4 или устаревших версий iOS. Покупка нового парка устройств требует значительных бюджетов, поэтому разработчикам приходится решать задачу адаптации мобильного приложения под требования старых ОС.
В этой статье мы подробно разберем, как правильно подобрать версию мобильной платформы 1С, настроить среду сборки и обойти наиболее распространенные ошибки, включая знаменитый сбой при установке пакета «При синтаксическом анализе пакета возникла неполадка» на Android и предупреждения о несовместимости таргетов в Xcode под iOS.
Выясним причину, почему новые релизы мобильной платформы отказываются работать на старых устройствах. С развитием технологий фирма «1С» вынуждена обновлять внутреннее ядро мобильной платформы и переходить на современные стандарты компиляции и рендеринга. Проанализируем хронологию изменений системных требований мобильной платформы 1С:
8.3.9, однако в ней присутствуют критические ошибки при работе с JSON и галереей изображений.API 14 (Android 4.0). Сборка 8.3.11.57 является наиболее компромиссной и стабильной версией для устройств на Android 4.2–4.4. В ней исправлены многие ошибки работы с файлами и сериализацией данных.Таким образом, если перед нами стоит задача запустить приложение на 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 сможет верифицировать цифровой сертификат вашего приложения.
Сборка мобильных приложений 1С претерпела значительные изменения. До версии 8.3.10 для сборки использовался пакет Apache Ant, а начиная с версии 8.3.10, платформа полностью перешла на современную систему автоматизации сборки Gradle.
Посмотрим на особенности настройки рабочего места разработчика, если необходимо поддерживать как новые, так и старые платформы:
r25.2.5), а второй — для современных платформ.JDK 8 (или даже JDK 7). Попытка запустить сборку старого приложения под управлением современной JDK 11 или JDK 17 неизбежно приведет к аварийной остановке процесса компиляции.Разберем ситуацию, когда аналогичные проблемы обратной совместимости возникают при компиляции приложения под 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.
Проанализируем шаги, которые помогут нам успешно завершить сборку:
1cem.Deployment Target или найдите параметр iOS Deployment Target.7.0 на поддерживаемое вашей версией Xcode значение, например 8.0 или 9.0.Используя предложенные методики настройки среды сборки, разделение версий SDK и правильное конфигурирование параметров подписи и таргетов, мы сможем эффективно поддерживать работоспособность мобильных решений 1С даже на морально устаревшем, но физически надежном оборудовании.