1с мобильное приложение ошибка загрузки библиотек

Внешние компоненты мобильной платформы 1С для ОС Андроид

Поддержка технологии внешних компонент (ТВК) мобильной платформой 1С начиная с 8-го релиза является почти революционным шагом. Особое ее значение проявляется в сегменте приложений для терминалов сбора данных и другого специального оборудования, где дизайн приложения (минус платформы 1С) играет второстепенную роль по отношению к функциональности. Мобильная технология внешних компонент, точно также как и стационарная, поддерживает работу с внешними устройствами. Кроме того, она позволяет расширить функциональность приложений, используя возможности ОС Андроид, напрямую обращаясь к API SDK.

Со стороны программистов 1С с момента выхода к этой технологии проявляется устойчивый интерес. Вместе с тем в библиотеке Инфостарта и в сети пока мало реальных рабочих примеров, пусть даже с закрытым кодом, хотя ее описание и учебный пример опубликованы на официальном ресурсе 1С в открытом доступе. Как мне кажется, есть несколько препятствий для освоения технологии. Во-первых, примеры не содержат указания на среду разработки (кроме компонент для Windows 8 phone, но это выходит за рамки статьи), во-вторых, они скорее предназначены для профессионалов, имеющих опыт программирования на C++ под Android NDK и Java. Огромную трудность представляет отладка и поиск ошибок, половина из которых приводят к «падению» платформы. Для программиста с малым опытом в Android SDK и C++ JNI поиск источника ошибки будет непреодолимой преградой, если учесть, что сама ошибка может быть не в собственном коде, а в мобильной платформе.

615d8728c5ff97467d2948f174925870

Мобильная платформа предоставляет разработчикам внешних компонент интерфейс IComponetnBase (файл ComponentBase.h). Он является базой функционирования как мобильной так и десктопной внешней компоненты и состоит из интерфейсов:

При начале работы с компонентой 1С вызывает несколько классических экспортных C-функций из динамической библиотеки компоненты:

Обратные вызовы платформы из Java-кода функций C++ выполняются через Java native call. Часто в технологии внешних компонент эти вызовы используются для генерации внешних событий.

В примерах я покажу, как создать простейшую компоненту на C++ (пример 1), как вызвать методы классов Java стандартных библиотек Андроида (пример 2) из C++ кода. Пример 3 представит приложение, реализующее все участки архитектуры.

Среда разработки

Для разработки на VS2017 + Android studio на вашем компьютере должны быть:

Внешняя компонента без использования JNI

65d6795d03e97559eb6495090150eb66

8764a1e9a318f66bf2a9c23e82cfccb1

На этом рисунке показаны из шаблона, которые вам необходимо включать в проект каждой компоненты. Вносить изменения в них не рекомендуется. Теперь настроим свойства проекта. На закладке General я изменяю имя выходного файла с учетом архитектуры процессора (выделено жирным), чтобы их можно было помещать в архив компоненты без переименования. В качестве компилятора можно использовать любой, я предпочитаю GCC, по отзывам генерирующий более эффективный код для ARM процессоров:

e07c72d7ae05c149e8b8af889a334dabВерсию языка (закладка Language с разделе C/C++) установим 11-ю, чтобы использовать преимущества современного C++ при разработке.

Теперь необходимо создать основной класс компоненты, который будет вызываться из 1С кодом:

После компиляции проекта для процессоров ARM и x86 создадим манифест компоненты:

Пример 2: «Информация об устройстве»

Внешняя компонента с вызовами JNI

Пример 3: «Состояние экрана»

Внешняя компонента с кодом java

5e6c19c121119518ea5095187e4ff5e7

Подробнее покажем взаимодействие класса LockState с C++ кодом. В нем объявим такой член:

Соответствующая функция C в коде компоненты должна быть следующей:

Член m_Activity необходим для получения контекста приложения, с его помощью можно зарегистрировать BroadcastReceiver. В методе run выполняется загрузка so-библиотеки в управляемый код. Метод show стандартен, он позволяет выполнить код компоненты в контексте вашего приложения.

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2018 EDUCATION. Больше статей можно прочитать здесь.

В 2020 году приглашаем всех принять участие в 7 региональных митапах, а также юбилейной INFOSTART EVENT 2020 в Москве.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с мобильное приложение отладка
  • 1с мобильное приложение обмен данными веб сервис