Разработка под мобильные устройства в экосистеме 1С:Предприятие часто сопряжена с техническими сложностями, которые не встречаются при работе с десктопными версиями. Одна из самых неприятных проблем — внезапное завершение работы (краш) приложения именно в тот момент, когда срабатывает точка останова. В этой статье мы подробно разберем, почему это происходит, проанализируем ситуацию с несовместимостью версий и архитектур, а также составим пошаговый план настройки стабильной среды для отладки.
Проанализируем ситуацию, описанную пользователем: используется основная платформа 8.3.15.1700 и мобильная платформа 8.3.18.60. В мире 1С существует негласное, но критически важное правило: версия основной платформы (конфигуратора), из которой инициируется отладка, должна быть строго не ниже версии используемой мобильной платформы. Рассмотрим подробнее, почему это важно.
Когда вы ставите точку останова, конфигуратор и мобильное приложение обмениваются пакетами данных, содержащими информацию о состоянии объектов, переменных и стеке вызовов. Если мобильная платформа новее, она может использовать структуры данных и протоколы, которые старая версия конфигуратора просто не умеет обрабатывать. Это приводит к исключению в памяти и закрытию приложения.
Разберем, что нужно сделать:
8.3.18.60).8.3.18.x или выше (например, 8.3.21 или 8.3.23).Выясним причину, связанную с «железом». В сообщении упоминается установка файла 1cem-arm.apk на эмулятор Pixel_3a_API_30_x86. Здесь кроется серьезная техническая нестыковка. Архитектура x86 (процессоры Intel/AMD вашего ПК) и архитектура ARM (мобильные процессоры) — это разные наборы инструкций.
Хотя Android-эмуляторы умеют транслировать инструкции (через библиотеки типа libhoudini), такая эмуляция крайне нестабильна в режиме отладки. В момент остановки выполнения кода происходит прерывание, которое механизм трансляции часто не может обработать корректно.
Для решения этой проблемы выполним следующие действия:
1cem-x86.apk или 1cem-x86_64.apk.arm-сборок на x86-эмуляторах, если планируете заниматься отладкой. Это существенно повысит стабильность работы при достижении точек останова.Рассмотрим эволюцию механизмов отладки 1С. Начиная с версии 8.3.14, компания 1С активно внедряет отладку по протоколу HTTP. Старый протокол TCP часто дает сбои при работе через цепочку «Эмулятор — Виртуальный адаптер — Apache — Конфигуратор». Проблема в том, что при TCP-отладке мобильное устройство должно иметь возможность само инициировать обратное соединение с вашим компьютером, что часто блокируется брандмауэрами или NAT эмулятора.
Посмотрим, как переключиться на более современный метод:
http://192.168.1.10:1560.Проанализируем ситуацию с версией Android. В примере используется Android 11 (API 30). Начиная с Android 9, система по умолчанию запрещает передачу данных по незашифрованному протоколу HTTP (Cleartext traffic). Если отладка идет по обычному http без SSL-сертификата, Android может просто обрывать соединение в момент передачи отладочных данных.
Если вы собираете собственное мобильное приложение (создаете .apk), убедитесь, что в файле манифеста разрешен открытый трафик. В тексте это выглядит примерно так:
android:usesCleartextTraffic="true"
Для стандартной мобильной платформы (разработчика) это обычно уже настроено, но при использовании высоких версий API Android стабильнее всего работает отладка через проброс портов adb.
Часто отладка «отваливается», потому что сетевой пакет от мобильного приложения не может найти дорогу к конфигуратору. Попробуем решить это принудительно. Рассмотрим использование утилиты adb (Android Debug Bridge), которая входит в состав Android Studio.
Выполните в консоли команду для перенаправления трафика:
adb forward tcp:1560 tcp:1560
Это заставит систему перебрасывать все запросы с порта 1560 эмулятора на порт 1560 вашего локального компьютера. В настройках отладки в 1С в этом случае можно будет указать адрес localhost.
Чтобы убедиться, что отладка заработала, создайте простейшую процедуру в модуле формы. Например, при нажатии на кнопку:
&НаКлиенте
Процедура КомандаПриветМир(Команда)
ТекстСообщения = "Привет, мир!"; // Поставьте точку останова здесь
ПоказатьПредупреждение(, ТекстСообщения);
КонецПроцедуры
Если после настройки всех вышеперечисленных пунктов при нажатии на кнопку конфигуратор «моргнет» и подсветит строку с кодом желтым цветом, значит, вы успешно настроили окружение.
Подводя итог, можно сказать, что стабильная отладка в мобильной 1С держится на «трех китах»:
x86-версию 1С для x86-эмуляторов.adb forward.Если официальный эмулятор Android Studio продолжает работать нестабильно, попробуйте альтернативные варианты, такие как BlueStacks или Nox. Они часто менее требовательны к настройкам безопасности и стабильнее держат соединение с отладчиком 1С за счет использования более старых версий Android (7 или 9), где механизмы защиты сети не такие жесткие.