Читать: 15 мин

Что учесть при портировании приложения на Аврору

Что учесть при портировании приложения на Аврору

Мы в Friflex работаем с ОС Аврора и уже портировали на нее несколько приложений. Например, приложение Мобильный агент, которое помогает компаниям быстро и безопасно получать данные от агентских сетей.
Какие особенности есть у российской операционной системы? Что обязательно нужно учесть, если вы собрались портировать на нее мобильное приложение? Разбираемся вместе с Flutter Team Lead Friflex Дмитрием Мозером.

Что такое Аврора

Аврора — это российская операционная система. Она основана на ядре Linux. Авроре уже более шести лет, но развивалась она по большей части инфраструктурно и была рассчитана на сегменты B2G и B2B.

Почти все приложения на Авроре — внутренние сервисы различных организаций и ведомств. Например, там есть приложения для почтальонов и ремонтно-восстановительных бригад РЖД.

В августе 2023 года компания ОМП опубликовала Flutter SDK с начальной поддержкой ОС Аврора. На российской ОС появились «пользовательские» приложения. Например, у «Билайна», Энергогаранта и ВТБ (правда, у ВТБ оно пока в тестировании). Ожидается, что их станет больше, когда на Авроре заработает RuStore.

Если посмотреть на архитектуру Авроры, можно найти много общего с Android. Есть слой приложений, слои аппаратных абстракций или HAL (Hardware Abstraction Layer) с Kernel, Common API.

На самом нижнем базовом слое находятся две группы: HAL based on Bionic, включающая в себя libhybris, HAL based on Bionic, нативные компоненты ОС Авроры и аппаратный уровень; HAL GNU/LINUX же включает в себя нативные компоненты GNU/LINUX и также имеет аппаратный уровень. Промежуточный слой также включает в себя libhybris, дополнительные функции ОС Аврора и также следующие элементы интерфейса: системные библиотеки, компоненты средств связи, менеджер пакетов, стандартные компоненты, мультимедиа, графика, Qt и безопасность. На самом верхнем слое интерфейса и приложений имеются такие элементы интерфейса компоненты UI, экран блокировки, домашний экран, окно событий и т.д.; а приложения включает в себя Телефон, Браузер, Контакты, Календарь, Камеру, Почту и Часы. Поверх всего этого есть часть дополнительных функций ОС Аврора и, уникальная для каждого приложения, конфигурация заказчика.

Источник: портал разработчиков Авроры

Нативный стек у Авроры — это QT. То есть в случае дальнейшей разработки и поддержки надо быть готовым хотя бы немножко писать на C++. Рано или поздно придется создавать что-то свое, как и на Android c iOS.

Аврора и Flutter

Сейчас Аврора поддерживает уже три версии Flutter: 3.3.10, 3.13.5 и 3.16.2. В 3.16.2 добавили поддержку TextureView. То есть теперь можно писать свои плагины, которые предполагают использование камеры или видеоплеера.
Несколько важных моментов, на которые советую обратить внимание:

  • Поддерживаются только специальные версии движка. Не получится как обычно скачать Flutter c официального сайта, придется устанавливать форк. И помнить при этом, что Аврора поддерживает лишь ограниченное число версий фреймворка.
  • На старых версиях Авроры (до версии 4.0.2.303, она же 4.0.2 Update 5) нужны пакеты совместимости. Их придется скачивать самостоятельно и закидывать на телефон. В новой версии Авроры все работает из коробки.
  • Реализованы не все Platform API. Это значит, что вы должны быть готовы искать обходные пути. От некоторых функций, возможно, придется отказаться.
  • Режим отладки или Flutter Debug не работает «из коробки». Это замедляет разработку: все приходится каждый раз компилировать вручную, отправлять и смотреть, как работает.

Это все очень напоминает мне историю о том, как Unity портировали на Nintendo Switch. У разработчиков были те же проблемы. Цикл разработки продвигался очень медленно, потому что не было поддержки режима отладки. Приходилось создавать маленькое приложение и на нем все тестировать. И только потом интегрировать в основное приложение.

Вам понадобятся устройства

Аврора не будет работает на любом устройстве, даже если его перепрошить. Вам понадобятся смартфоны и планшеты Aquarius, Масштаб, F+, БайтЭрг и Qtech. Их не купить в обычном магазине: продают их только напрямую. Ознакомиться с полным списком устройств, которые поддерживают российскую операционную систему, можно на сайте ОС Аврора.

Скорее всего, вам нужно будет два устройства. Аврора 4, наверное, будет поддерживаться еще год, и Аврора 5 — на подходе. Ждать устройство придется неделю или больше.

Посмотрите на свой компьютер

Это Mac? Плохие новости — Аврора не поддерживает процессоры М-серии. Только Windows с WSL или Linux. Хорошие новости — это можно обойти с помощью VS Code remote. Вы можете сделать хост-машину со всем необходимым для работы с Авророй и удаленно к ней подключаться. Будет тот же опыт, а работать можно даже на Mac.

Не забывайте про планшеты

Аврора очень часто устанавливается на планшеты. Это надо учитывать. Приложение визуально на планшете должно выглядеть так же хорошо, как и на телефоне.

Какие есть плагины

В Авроре есть три основных вида плагинов:

  1. Плагины, которые созданы на уровне самой операционной системы. Например, диплинки и интенты.
  2. Плагины категории embedder, разработанные Flutter-командой Авроры. К ним можно отнести камеру, WebView, PDF.
  3. Плагины, которые может создать любой желающий. Например, мы в Friflex сделали геолокацию и push-уведомления.

Если у вас в зависимостях есть что-то вроде WebView, PDF или Firebase, вам придется как-то это обходить. Может быть, даже отказаться от портирования и подумать о нативной версии на QT.

Что вы не сможете использовать

Google-сервисы и Store API. Если в вашем приложении нужно что-то покупать, с этим будет сложно. Rustore для Авроры пока еще в разработке. TextureView уже есть, но вам потребуется много усилий.

Если вы решили идти дальше, проще всего использовать Null object pattern. Делаем абстрактный класс, который на Android и iOS будет вызывать определенное API, а на Авроре просто не будет ничего делать. Это довольно просто сделать, и поток кода у вас почти не изменится.

Где смотреть документацию

  • На портале разработчиков Авроры. Здесь собрана вся информация про Аврору.
  • На сайте QT. QT — нативный инструмент на Авроре. На сайте фреймворка вы можете найти полезную информацию для разработки плагинов.
  • На портале Freedesktop. Здесь есть Linux-библиотеки, такие как D-Bus и Bluetooth.
  • Сайт ОМП. На нем можно найти полезные демонстрации и примеры. Нам они помогли, когда мы работали над push-уведомлениями.
  • Раздел Aurora SDK на сайте ОМП.
  • На официальном репозитории форка Flutter можно прочитать документацию по установке Flutter, API эмбеддера и не только.

Когда будете смотреть документацию, вы можете попасть на этот сайт. Он устаревший, лучше возвращайтесь на портал разработчиков Авроры.

Завершающий чек-лист

В качестве заключения предлагаю короткий чек-лист. Если вы собираетесь портировать мобильное приложение на ОС Аврора, убедитесь, что вы:

  • готовы закупать устройства и ждать их;
  • готовы доработать для поддержки доступной Flutter-версии;
  • готовы мигрировать с Firebase;
  • не разрабатываете платное приложение или готовы ждать RuStore;
  • можете обойтись без PlatformView и некоторых API системы;
  • готовы писать на C++.

Портировать приложение на Аврору — задача не из легких. Но нет ничего невозможного. Работайте, как исследователи, ведь российская операционная система только начинает открываться для сообщества.

Большое преимущество — разработчики из Авроры по-настоящему помогают. Например, им можно задавать вопросы напрямую в чате. Это сильно мотивирует и помогает.

Если у вас остались вопросы или вы хотите портировать ваше мобильное приложение на Аврору, напишите нам. Мы изучим ваш проект и поможем найти лучшее решение.

Поделиться:

Logo

Читайте также

01  
 
panda
Есть идея? Напишите нам! Заполнить бриф