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

1b6cc9f46df118a70263de9594e244b3.jpg

Привет, Хабр! Меня зовут Дмитрий Мозер, я Flutter Team Lead в Friflex и участник бета-тестирования ОС Аврора. Занимаюсь, в том числе, созданием приложений на Flutter для ОС Аврора.

Мы специализируемся на Flutter и активно участвуем в развитии фреймворка на ОС Аврора. Мы уже портировали на Аврору несколько приложений на Flutter, в том числе приложение Мобильный агент, которое помогает компаниям быстро и безопасно получать данные от агентских сетей. 

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

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

Аврора — это российская операционная система. Она основана на ядре 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. То есть теперь можно писать свои плагины, которые предполагают использование камеры или видеоплеера. 

Несколько важных моментов, на которые советую обратить внимание:

  1. Поддерживаются только специальные версии движка. Не получится как обычно скачать Flutter c официального сайта, придется устанавливать форк. И помнить при этом, что Аврора поддерживает лишь ограниченное число версий фреймворка. 

  2. На старых версиях Авроры (до версии 4.0.2.303, она же 4.0.2 Update 5) нужны пакеты совместимости. Их придется скачивать самостоятельно и закидывать на телефон. В новой версии Авроры все работает из коробки. 

  3. Реализованы не все Platform API. Это значит, что вы должны быть готовы искать обходные пути. От некоторых функций, возможно, придется отказаться. 

  4. Режим отладки или 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-уведомления. 

4e9f05f3b511dcf602ec50d2030d053a.jpg

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

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

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

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

53d543bdf8bc2e7651ee7b7609413570.jpg

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

  1. На портале разработчиков Авроры. Здесь собрана вся информация про Аврору.

  2. На сайте QT. QT — нативный инструмент на Авроре. На сайте фреймворка вы можете найти полезную информацию для разработки плагинов. 

  3. На портале Freedesktop. Здесь есть Linux-библиотеки, такие как D-Bus и Bluetooth.

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

  5. Раздел Aurora SDK на сайте ОМП.  

  6. На официальном репозитории форка Flutter можно прочитать документацию по установке Flutter, API эмбеддера и не только 

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

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

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

  • готовы закупать устройства и ждать их

  • готовы доработать для поддержки доступной Flutter-версии

  • готовы мигрировать с Firebase

  • не разрабатываете платное приложение или готовы ждать RuStore

  • можете обойтись без PlatformView и некоторых API системы

  • готовы писать на C++

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

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

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

© Habrahabr.ru