Мы в Friflex работаем с ОС Аврора и уже портировали на нее несколько приложений. Например, приложение Мобильный агент, которое помогает компаниям быстро и безопасно получать данные от агентских сетей.
Какие особенности есть у российской операционной системы? Что обязательно нужно учесть, если вы собрались портировать на нее мобильное приложение? Разбираемся вместе с Flutter Team Lead Friflex Дмитрием Мозером.
Что такое Аврора
Аврора — это российская операционная система. Она основана на ядре Linux. Авроре уже более шести лет, но развивалась она по большей части инфраструктурно и была рассчитана на сегменты B2G и B2B.
Почти все приложения на Авроре — внутренние сервисы различных организаций и ведомств. Например, там есть приложения для почтальонов и ремонтно-восстановительных бригад РЖД.
В августе 2023 года компания ОМП опубликовала Flutter SDK с начальной поддержкой ОС Аврора. На российской ОС появились «пользовательские» приложения. Например, у «Билайна», Энергогаранта и ВТБ (правда, у ВТБ оно пока в тестировании). Ожидается, что их станет больше, когда на Авроре заработает RuStore.
Если посмотреть на архитектуру Авроры, можно найти много общего с Android. Есть слой приложений, слои аппаратных абстракций или HAL (Hardware Abstraction Layer) с Kernel, Common API.
Нативный стек у Авроры — это 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.
Не забывайте про планшеты
Аврора очень часто устанавливается на планшеты. Это надо учитывать. Приложение визуально на планшете должно выглядеть так же хорошо, как и на телефоне.
Какие есть плагины
В Авроре есть три основных вида плагинов:
- Плагины, которые созданы на уровне самой операционной системы. Например, диплинки и интенты.
- Плагины категории embedder, разработанные Flutter-командой Авроры. К ним можно отнести камеру, WebView, PDF.
- Плагины, которые может создать любой желающий. Например, мы в 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++.
Портировать приложение на Аврору — задача не из легких. Но нет ничего невозможного. Работайте, как исследователи, ведь российская операционная система только начинает открываться для сообщества.
Большое преимущество — разработчики из Авроры по-настоящему помогают. Например, им можно задавать вопросы напрямую в чате. Это сильно мотивирует и помогает.
Если у вас остались вопросы или вы хотите портировать ваше мобильное приложение на Аврору, напишите нам. Мы изучим ваш проект и поможем найти лучшее решение.