Сборка приложения на Flutter для ОС Аврора
После установки Flutter с поддержкой ОС Аврора можно собрать приложение, добавив поддержку ОС Аврора, или создать новое.
Настройка Flutter SDK
Для сборки приложений Flutter SDK должен знать путь к инструментам кросс-компиляции. В зависимости от операционной системы доступны разные варианты.
Аврора SDK (BT) — рекомендуемый способ сборки. Он работает на Linux и является единственным поддерживаемым инструментом на macOS (ARM), где Platform SDK недоступен.
Укажите путь к корню установленного Аврора SDK (BT):
flutter-aurora config --aurora-sdk-dir path/to/sdk/root
Если ранее был задан путь к Platform SDK, его нужно сбросить.
Иначе Flutter продолжит использовать Platform SDK даже после указания aurora-sdk-dir:
flutter-aurora config --aurora-psdk-dir ""
Platform SDK можно использовать только на Linux.
Параметр --aurora-psdk-dir регистрирует абсолютный путь к каталогу
набора инструментов Platform SDK. Укажите вложенный каталог sdks/aurora_psdk:
flutter-aurora config --aurora-psdk-dir {psdk_dir}/sdks/aurora_psdk
{psdk_dir} — путь до установленного Platform SDK.
Перед созданием приложения необходимо убедиться, что все компоненты установлены корректно и Flutter может с ними взаимодействовать.
Команда flutter-aurora doctor выполняет диагностику: проверяет наличие Flutter,
доступность инструментов сборки и другие зависимости.
flutter-aurora doctor
Если вывод содержит строку [✓] Aurora toolchain — develop for Aurora OS,
настройка завершена, и Flutter SDK готов к использованию.
Основные команды утилиты flutter-aurora
Ниже приведен список основных команд для работы с Flutter для ОС Аврора:
| Команда | Назначение |
|---|---|
flutter-aurora config --aurora-sdk-dir <путь> |
Указывает расположение Аврора SDK (BT) для сборки |
flutter-aurora config --aurora-psdk-dir <путь> |
Указывает расположение Platform SDK для сборки (только Linux) |
flutter-aurora doctor |
Проверяет, установлены и настроены ли все компоненты корректно |
flutter-aurora create --platforms=aurora ... |
Создает новый проект с поддержкой платформы Aurora |
flutter-aurora pub get |
Загружает зависимости проекта |
flutter-aurora build aurora |
Собирает приложение в RPM-пакет |
flutter-aurora devices |
Показывает подключенные устройства и эмуляторы |
flutter-aurora run |
Собирает, подписывает и запускает приложение на подключенном устройстве/эмуляторе |
Создание проекта
Flutter SDK имеет интерфейс командной строки (Flutter CLI),
дающий доступ к инструментам Flutter.
С помощью Flutter CLI можно создать приложение из шаблонов, доступных во Flutter SDK,
собрать приложение и многое другое.
Процесс инициализации нового приложения на Flutter для ОС Аврора осуществляется
путем вызова консольной утилиты flutter-aurora create.
flutter-aurora create --template=app --org=ru.example app_demo
Детали команды:
flutter-aurora—alias, добавленный при установке;create— команда для создания приложений/пакетов из шаблонов;--template=app— тип шаблона (app,package,plugin_ffi,plugin);--org=ru.example— имя организации (Organization name), участвует в формировании названия пакета;app_demo— название приложения (Application Name), участвует в формировании названия пакета.
Система генерирует проект app_demo, представляющий собой демонстрационное
одностраничное приложение типа «Счетчик», адаптированное к стандартам
и жизненному циклу приложений ОС Аврора.
Он имеет следующую структуру:
app_demo/
├── lib/
│ └── main.dart <-- Уровень Flutter-приложения
├── aurora/ <-- Нативный уровень
│ ├── CMakeLists.txt <-- Скрипт сборки нативной части через CMake
│ ├── main.cpp <-- Точка входа нативного C++ приложения
│ ├── desktop/
│ │ └── ru.example.app_demo.desktop <-- Конфигурация приложения
│ ├── icons/ <-- Значки приложения
│ └── rpm/
│ └── ru.example.app_demo.spec <-- Спецификация для сборки RPM-пакета
├── pubspec.yaml <-- Конфигурация зависимостей и ресурсов Flutter
└── ...
В директории aurora находятся файлы, обеспечивающие работу
приложения на платформе ОС Аврора:
CMakeLists.txt— приложение Flutter для ОС Аврора имеет платформенную часть на С++, а сборка реализована через CMake;desktop/ru.example.app_demo.desktop— файл интеграции приложения в меню. В нём можно указать название приложения, разрешения и другие настройки;icons/*.png— иконки приложения;main.cpp— точка входа в приложение для ОС Аврора.rpm/ru.example.app_demo.spec— спецификация сборки RPM пакета.
Уровень приложения
Демонстрационный шаблон содержит базовый пользовательский интерфейс.
Графический стек: Кадры интерфейса отрисовываются Flutter Engine через системный графический API ОС Аврора (EGL/OpenGL ES), абстрагируя разработчика приложения от особенностей оконной системы платформы.
Нативный уровень
Каталог aurora/ содержит системную кодовую базу на C++, выступающую в качестве моста между
операционной системой и виртуальной машиной Dart.
Сгенерированный проект app_demo представляет собой минимально жизнеспособный продукт (MVP),
готовый к немедленной компиляции и развертыванию.
Наличие стандартизированной структуры aurora/ гарантирует, что при последующей сборке
с помощью flutter-aurora build aurora инструмент сборки распознает точки входа,
обработает спецификацию RPM и сформирует валидный подписанный пакет,
удовлетворяющий требованиям валидатора приложений ОС Аврора.
Добавление поддержки ОС Аврора в существующий проект
Поддержку платформы ОС Аврора можно добавить в уже существующий проект. Для этого необходимо в корне проекта выполнить команду Flutter CLI:
flutter-aurora create --org={ORGNAME} .
Где {ORGNAME} — имя организации
(Organization name,
участвует в формировании названия пакета.
Сборка приложения
Процесс сборки дистрибутива приложения на Flutter для ОС Аврора представляет собой многоэтапный конвейер, объединяющий управление внешними зависимостями Dart, компиляцию логики приложения, компоновку с нативной оболочкой на C++ и упаковку ресурсов в формат целевой платформы.
Flutter CLI имеет следующие команды, участвующие в сборке:
pub— работа с зависимостями;build— команда сборки Flutter-приложения;clean— очистка временных каталогов.
Ниже приведено подробное описание этапов цикла сборки.
- Выполнение команд сборки требует перехода в корневой каталог проекта,
где расположен конфигурационный файл
pubspec.yaml. Переход в каталог приложения может быть выполнен с помощью команды:
cd app_demo
- Любое приложение на Flutter опирается на внешние модули и плагины,
объявление которых содержится в конфигурационном файле
pubspec.yaml. Перед первоначальной сборкой все указанные библиотеки должны быть загружены в локальный кэш.
Команда flutter-aurora pub get загружает пакеты в соответствии с описанием проекта.
flutter-aurora pub get
Flutter обновит зависимости и выведет отчёт:
```text
Resolving dependencies...
flutter_lints 2.0.3 (3.0.2 available)
lints 2.1.1 (3.0.0 available)
matcher 0.12.16 (0.12.16+1 available)
material_color_utilities 0.5.0 (0.11.1 available)
meta 1.10.0 (1.14.0 available)
path 1.8.3 (1.9.0 available)
test_api 0.6.1 (0.7.1 available)
web 0.3.0 (0.5.1 available)
Got dependencies!
8 packages have newer versions incompatible with dependency constraints.
Try `flutter pub outdated` for more information.
```
- Конечным артефактом сборки приложений в ОС Аврора является файл формата RPM — стандартизированный установочный контейнер, включающий скомпилированный бинарный код, графические ресурсы, конфигурации и системные метаданные.
Команда flutter-aurora build aurora выполняет цикл сборки.
Параметр --target-platform определяет архитектуру процессора: aurora-x64
для эмулятора на ПК, aurora-arm64 или aurora-arm для физических устройств.
Режим --release включает оптимизации и отключает отладочную информацию.
Итоговая команда для сборки приложения на Flutter для эмулятора ОС Аврора выглядит следующим образом:
flutter-aurora build aurora --release --target-platform aurora-x64
После успешного завершения всех этапов в вывод консоли передается абсолютный путь к сгенерированному RPM-пакету, готовому к последующему развертыванию на эмуляторе.
┌─ Result ────────────────────────────────────────────────────────────────────────────────────┐
│ ./build/aurora/bt_5.2.0/aurora-arm/release/RPMS/ru.example.app_demo-0.1.0-1.armv7hl.rpm │
└─────────────────────────────────────────────────────────────────────────────────────────────┘
Этот путь указывает на установочный RPM-пакет, который нужно подписать и установить на эмулятор или устройство.
Целевая архитектура
Собрать проект можно под разные архитектуры.
В команде сборки есть флаг: --target-platform, позволяющий указать целевую архитектуру для сборки.
По умолчанию команда build для сборки приложения на платформу ОС Аврора использует
архитектуру armv7hl.
Всего доступны три архитектуры для сборки на ОС Аврора:
armv7hl— архитектура для устройств, указать можно как--target-platform aurora-arm;aarch64— архитектура для устройств, указать можно как--target-platform aurora-arm64;x86_64— архитектура для эмулятора, указать можно как--target-platform aurora-x64.
Механизм подписания RPM-пакета
Политика безопасности ОС Аврора запрещает выполнение невалидированных бинарных контейнеров: любой RPM-пакет должен быть подписан с использованием криптографических ключей перед установкой в среду операционной системы.
При выполнении команды flutter-aurora run процедура подписания выполняется
автоматически перед передачей пакета на целевое устройство:
-
Используемые ключи: по умолчанию Flutter подписывает пакет собственной копией ключа и сертификата разработчика.
-
Профиль подписания: подпись генерируется в соответствии со стандартным регулярным профилем разработки.
Использование команды flutter-aurora run значительно сокращает время получения
обратной связи во время разработки, абстрагируя инженера от ручных операций по
кросс-компиляции, подписанию RPM-пакетов и транспортировке дистрибутива.