Найти тему
Mobile Developer

Как начать разрабатывать под ОС Aurora

Оглавление

Всем привет, недавно я сходил на канал к одному очень крутому человеку по имени Максим Горшенин, где мы обсудили очень много интересного про мобильную разработку и в частности очень много про российскую мобильную операционную систему Аврора. Если кто не видел, то видео вот тут

После выпуска стало появляться очень много вопросов, а вот как писать под Flutter, как писать через KMM, как вообще писать и я решил просуммировать все, что есть на данный момент про разработку под Aurora и описать в этой обзорной статье

На чем вообще пишут приложения под Aurora OS?

Qt/QML

Давайте начнем с того, что вообще есть. Как и в случае с Андроид или iOS у нас есть нативные решения и кроссплатформенные. Но в случае с Авророй здесь есть некоторый тонкий момент, так как Qt (фреймворк для Авроры, который считается нативным) тоже сам по себе является кроссплатформенным фреймворком и на нем, например, можно написать приложение под Android или iOS

Однако, если вы хотите использовать всю мощь операционной системы и поддержку производителя по всем вопросам, то лучше всего использовать именно нативные инструменты, то есть фреймворк Qt. В основе этого фреймворка лежит две технологии это собственно сам Qt (язык С++) и Qt Meta Language (Js). QML - это средство для верстки, такое же как система View в Android/iOS, Widget во Flutter.

Похоже это больше на современные SwiftUI или Jetpack Compose, так как обе этих технологии вдохновлялись в том числе и Qml. Тут даже можно увидеть привычные нам Column и Row (Jetpack Compose) и систему констрейнтов как в iOS UIKit

Пример того как выглядит QML
Пример того как выглядит QML

Следующим у нас идут кроссплатформенные технологии. На данный момент существует ровно два направления в которых официально работает компания ОМП - это Flutter и Kotlin Multiplatform.

Слайд из презентации компании ОМП
Слайд из презентации компании ОМП

Flutter

Начнем с Flutter. Во флаттер используется графический движок Skia, который сам по себе является мультиплатформенным и достаточно высокоуровневым. Дальше приложения уже рисуют графику используя его. Поэтому его адаптировали первым и сейчас готовится официальный пример как используя Flutter переносить прям уже существующие приложения на Аврору. Есть даже уже готовые примеры этого. Кому интересно ниже в картинках есть схема как это все работает.

Краткая схема портирования Flutter на Aurora OS
Краткая схема портирования Flutter на Aurora OS

Более подробно как использовать саму технологию можно прочитать вот тут - https://flutter.dev/
Естественно, что там будет только про Android и iOS, так как развитием Flutter занимается компания Google, и у них с компанией ОМП никаких связей нет, поэтому это вполне себе стороннее решение. Пока что оно находится в дев превью и использовать его можно на свой страх и риск, однако, вполне можно создавать на нем приложения.

Вот пример приложения, которое можно перенести в Aurora - https://github.com/sabinbajracharya/fluttery-todo
А вот ссылка на гифку с демонстрацией того как это работает (
https://t.me/aurora_devs/10684). Дзен, к сожалению, не разрешает грузить гифки

Также кому интересно, вы можете приобрести билет на Mobius, где ребята будут рассказывать о том как они портировали Flutter и что сейчас работает.
https://mobiusconf.com/talks/b534162b89294a6f8c3021962c93a9fa/?ysclid=lhck7nqbuq342037187
Официальный пример появится (скорее всего) после выступления на Mobius

Kotlin Multiplatform Mobile

KMM в противовес флаттеру несет другую философию. В KMM вы шарите только бизнес-логику приложения (это запросы в сеть, база данных, usecase и прочее), а UI остается нативным. Так что, как и в случае с iOS, где вам приходится писать интерфейс на Swift, тут тоже придется освоить QML, но в общем и целом это не страшно, так как QML очень похож на SwiftUI и Jetpack Compose

Как будет выглядеть связка KMM + Aurora в будущем
Как будет выглядеть связка KMM + Aurora в будущем

Но при попытке прикрутить Kotlin/Native к Aurora, ребята столкнулись с проблемами многих зависимостей, которых просто нет под их платформу, поэтому пока сосредоточились на Flutter. Однако, в будущем, они планируют продолжить изучение и Kotlin/Native тоже

А что сейчас? А сейчас благодаря одному замечательному человеку по имени Виталий Зарубин у нас есть довольно оригинальное решение, которое тоже позволяет запускать KMM проекты на Авроре. Как мы помним у нас есть еще и ветка Kotlin/Js, а QML - это JS. Поэтому он придумал решение, в котором у нас в фоне создается webview, которое используется как такой своеобразный backend или kotlin runtime (как вам угодно), а сверху него натягивается нативный QML.

В чем профит такого подхода? В том, что практически ничего не нужно допиливать, все итак работает из коробки. В чем минус? В том что вебвью ест много памяти. Как временно решение это отличный выход, но для будущего нужно будет все же сделать Kotlin/Native.

Сейчас есть не официальный пример, где можно посмотреть реализацию апи запросов и бизнес-логики на кмм в Авроре. Вот ссылка -
https://keygenqt.github.io/km-shop/mobile/

Но параллельно с этим готовится и официальный пример, который разместят уже на сайте.

А как же Compose Multiplatform? Да, с появлением Compose Multiplatform есть возможность писать на Kotlin приложения полностью, включая UI. Сам по себе Compose Multiplatform использует тоже движок Skia, но не напрямую, а через Skiko - мультиплатформенные биндинги на кмм к Skia.

Сейчас компания JetBrains пилит поддержку iOS и это все только в alpha стадии, хотя уже можно использовать для пет проектов. Более подробно можно посмотреть вот тут

Для адаптации под Аврору это потребует тоже дополнительных усилий и если коммьюнити поддержит эту идею, то возможно ОМП за нее возьмутся, но пока никаких публичных анонсов не было, так что ждем и пишем, что мы этого хотим

А где взять инструменты?

Часто спрашивают, а где взять телефон? Пока телефон можно получить только через бета-программу. Подать заявку можно вот здесь - https://auroraos.ru/beta
Если вы разработчик, то шанс получить телефон гораздо выше, но там необходимо будет сделать приложение и загрузить его в маркет

Пока вы ждете ответа на заявку есть возможность поразвлекаться и на своей машине. Для этого нам понадобится компьютер на базе Windows или Linux (линукс предпочтительнее, там все работает намного стабильнее). Mac подойдет только на базе x86 архитектуры, то есть тот самый Mac M1/M2 не будут работать. Но ребята уже работают над внедрением qemu, который бы запускался и на этих машинах тоже

Дальше вам нужно сходить по ссылке - https://developer.auroraos.ru/ (ребята недавно запили портал для разработчиков). Там нужно нажать на кнопку начать разработку, скачать и настроить SDK и запустить пробное приложение.

Возможно в запуске вам поможет мое видео


Все, в целом дальше вас никто не сдерживает от начала разработки приложений под российскую мобильную ОС. Пока вы исследуете варианты в виде Qt, Flutter, KMM там глядишь и уже девайс дадут. Но будут еще и другие новости

Вместо заключения

На этом все, если у вас есть какие-то вопросы дополнительные, то вы можете задать их в специальном чате для разработчиков. Также подписывайтесь на этот канал в дзене, потому что в будущем я буду делать еще какие-то анонсы

Полезные ссылки:

Канал про мобильную разработку - https://youtube.com/c/MobileDeveloper

Телеграмм канал про мобильную разработку - https://t.me/mobiledevnews

Телеграмм канал аврора разработчиков - https://t.me/aurora_devs