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

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

Инструкция от тимлида 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.

Плагины, которые может создать любой желающий. Например, мы сделали геолокацию и push-уведомления.

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

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

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

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

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

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

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

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

Еще по теме: