Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022)

Материал из 0x1.tv

Докладчик
Александр Епифанов.jpg
Александр Епифанов

В докладе будет рассказано об открытом фреймворке RhoMobile, позволяющим создавать переносимые приложения для большинства актуальных на сегодняшний день мобильных и настольных платформ на языках Ruby и JavaScript. Список целевых платформ фреймворка включает мобильные: iOS, Android, WinCE, Sailfish/Аврора и настольные: Windows, OS X, различные дистрибутивы Linux (Ubuntu, ALT, ROSA, RED, Astra).

Будут освещены особенности архитектуры фреймворка, способы использования, а также продемонстрированы примеры создания и работы приложений на базе фреймворка.

Видео

on youtube

Презентация

Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf

Thesis

Описание и назначение

RhoMobile Suite — инструмент для создания переносимых мобильных и настольных приложений. Доступен под лицензией MIT.

Приложение на RhoMobile называется нативно-гибридным. Код приложений похож на код веб-приложений. Пользовательский интерфейс в основном пишется на HTML5, CSS3, а логика на JavaScript, либо Ruby.

История c 2008 по 2022

  • 2008—2011 — стартап.
  • 2011—2014 – часть Motorola Solutions.
  • 2014—2015 — часть Zebra Technologies.

До 2015 года разработку вела команда инженеров из России, США и Великобритании.

Текущий статус

С 2015 года часть оригинального коллектива из России осуществляет дальнейшее развитие и поддержку проекта в составе Tau.

За последнее время была добавлена поддержка Sailfish OS, и дистрибутивов Linux, в т.ч. Alt, ROSA, Red OS, Astra.

Стабильная версия — 7.4.2, бета версия — 7.5.0.beta2.

Архитектуры мобильных приложений

  • Классическое нативное приложение. Нативные инструменты iOS, Android.
  • Кроссплатформенное нативное приложение — Xamarin, React Native, QT, Flutter и др.
  • Веб приложение — «сайт», запущенный в системном браузере.
  • Гибридное приложение — веб-приложение, обёрнутое в нативный контейнер. Apache Cordova/PhoneGap, Rhomobile (в чисто гибридном режиме).
  • Смешанно-гибридное приложение — совмещение нативного, кроссплатформенного и гибридного подходов. Интерфейс реализуется на HTML/CSS, логика пишется на переносимом инструменте и исполняется отдельно от веб-компонента. Пример — RhoMobile.


Особенности смешанно-гибридного подхода

Локальный сервер

Разделение UI и логики приложения осуществляется с помощью HTTP(S) сервера внутри процесса приложения.

Веб-компонент обращается серверу, он исполняет логику и выдаёт ответ в виде HTML.

Веб-компонент также может вызывать API напрямую из JS.

Ruby

В качестве средства реализации логики выбран язык Ruby. Для клиент-серверного взаимодействия используется адаптированный фреймворк Ruby-on-Rails.

Архитектура может быть реализована и с помощью других языков. В частности, в RhoMobile, помимо Ruby, можно также выбрать Node.js.

Расширения

В RhoMobile используется механизм CommonAPI, позволяющий описать модули, методы и свойства в общем виде на XML.

Сборка в виде библиотеки

RhoMobile имеет собственную систему сборки. В некоторых случаях разработчикам может потребоваться встроить часть функций платформы в их нативный проект. Для этого существует режим сборки платформы в виде библиотеки для целевой платформы.

Производительность

Производительность интерпретирующей машины: код на Ruby при сборке приложения компилируется в бинарный байт-код iseq.

Механизм расширений позволяет вынести ресурсоёмкие операции в нативную часть.

Часть API возможно вызывать в асинхронном режиме.

Современные веб-движки хорошо оптимизированы.

Нативный «look\&feel»

Для реализации интерфейса можно выбрать frontend фреймворк, эмулирующий визуальные компоненты конкретной платформы.

Вопросы безопасности

Для защиты веб-сервера используется двусторонняя SSL аутентификация с генерацией ключей и сертификатов при каждом запуске приложения.

Поддерживаемые платформы

Целевые: iOS, Android, WinCE, Windows, Sailfish, Linux ( Ubuntu, ALT, RED, ROSA, Astra ).

Хостовые: Windows, OS X, Linux.

Функции, связанные с применением в бизнес-приложениях

Защита данных

  • шифрование локальной БД;
  • шифрование файлов кода и данных в установочном пакете приложения;
  • детектирование запуска приложения на эмуляторе, под отладчиком, либо на взломанном устройстве.
  • на Android: проверка сигнатуры подписи пакета, проверка идентификатора установщика.


Бесшовная интеграция

Применяется клиентская библиотека и промежуточный сервер RhoConnect. Они обеспечивают синхронизацию моделей данных приложения и контроль конфликтов.

Поддержка спецустройств

API платформы поддерживает функции ТСД[1], такие как сканирование штрихкодов, чтение RFID меток, беспроводную Bluetooth печать и др.

Состав проекта

  • Rhodes — фреймворк и набор инструментов для разработки приложений.
  • RhoConnect — сервер интеграции данных.
  • RhoStudio/ VSCode debugger — IDE для редактирования и отладки приложений.


Продукты на базе RhoMobile

Браузер, приложения для мобильного сервиса, банкинг, страхование, энергетика и др.

В завершающей части доклада будет продемонстрировано создание и запуск приложения на RhoMobile.


Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022)!.jpg

Примечания и ссылки

  1. Терминал Сбора Данных