Документация
ОС Аврора 3.41.4

Сборка приложения на 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 — очистка временных каталогов.

Ниже приведено подробное описание этапов цикла сборки.

  1. Выполнение команд сборки требует перехода в корневой каталог проекта, где расположен конфигурационный файл pubspec.yaml. Переход в каталог приложения может быть выполнен с помощью команды:
cd app_demo
  1. Любое приложение на 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.
```
  1. Конечным артефактом сборки приложений в ОС Аврора является файл формата 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-пакетов и транспортировке дистрибутива.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования файлов cookies.