Перейти к основному содержимому

MAUI

Разработчику Архитектору Инженеру

MAUI

MAUI (Multi-platform App UI) представляет собой платформу разработки кроссплатформенных приложений от компании Microsoft, построенную на базе фреймворка .NET. Технология позволяет создавать приложения для операционных систем Android, iOS, macOS и Windows из единой кодовой базы с использованием языков C# и XAML или C# и HTML. Платформа объединяет возможности предыдущего решения Xamarin.Forms в единую среду с улучшенной производительностью, расширенными API и нативным доступом к функциям устройств.

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


Архитектура и особенности платформы

Архитектура приложения MAUI строится вокруг единого ядра, которое предоставляет абстракции над платформенными различиями. Разработчик обращается к общим API, а платформа транслирует эти вызовы в соответствующие методы конкретной ОС. Такой подход снижает дублирование кода и упрощает поддержку проекта.

Ключевые компоненты архитектуры включают:

  • Xamarin.Essentials: Набор сервисов для доступа к функционалу устройства (геолокация, датчики, хранение данных, камера). Библиотека интегрирована непосредственно в проект и работает как часть основного приложения.
  • MauiBlazor: Поддержка создания интерфейсов с использованием веб-технологий (HTML, CSS, JavaScript) внутри нативного приложения. Позволяет использовать опыт веб-разработки при создании мобильных интерфейсов.
  • Hot Reload: Функция обновления кода приложения во время его работы без полной пересборки. Изменения отображаются мгновенно, что ускоряет процесс разработки и отладки.
  • Native Controls: Использование нативных элементов управления для каждой платформы. Приложения выглядят и ведут себя естественно на устройстве пользователя, сохраняя привычный интерфейс операционной системы.

Платформа использует систему сборки MSBuild для компиляции проектов. Процесс сборки анализирует целевую платформу и подключает необходимые библиотеки и ресурсы. Результатом является самодостаточный пакет приложения (.apk для Android, .ipa для iOS, .exe для Windows).

Особенности технологии заключаются в глубокой интеграции с экосистемой Visual Studio и инструментами .NET. Разработчики получают доступ к мощному набору инструментов для профилирования, отладки и тестирования. Поддержка Dependency Injection встроена в ядро платформы, что позволяет легко управлять зависимостями и тестировать компоненты.


Создание первого приложения

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

Шаг 1. Установка среды разработки

Необходимо установить последнюю версию Visual Studio 2022 или более поздней версии. В процессе установки следует выбрать рабочую нагрузку .NET Multi-platform App UI development. Эта опция включает в себя все необходимые инструменты, SDK и эмуляторы.

В настройках установки убедитесь, что отмечены следующие пункты:

  • .NET Multi-platform App UI development;
  • Инструменты для Android;
  • Инструменты для iOS/macOS (требуется macOS для сборки под iOS);
  • Среда выполнения .NET.

После завершения установки перезапустите Visual Studio.

Шаг 2. Создание проекта

Запустите Visual Studio и выберите пункт Создание нового проекта. В поиске шаблонов введите maui. Выберите шаблон App (.NET) или Maui App. Укажите имя проекта, например, MyFirstApp, и путь сохранения. Нажмите кнопку Далее.

На следующем экране подтвердите настройки конфигурации проекта. Можно оставить стандартные значения. Нажмите Создать.

Шаг 3. Структура проекта

Проект содержит следующие ключевые элементы:

  • MauiProgram.cs: Точка входа в приложение, где регистрируются зависимости и инициализируется среда.
  • App.xaml / App.xaml.cs: Описание корневого элемента приложения и логика запуска.
  • MainPage.xaml / MainPage.xaml.cs: Главный экран приложения, содержащий разметку и код.
  • Resources: Папка с ресурсами, такими как изображения, шрифты и стили.
  • Platforms: Папки для специфичных настроек каждой платформы (Android, iOS, Windows, MacCatalyst).

Шаг 4. Настройка целевых платформ

Откройте файл MauiProgram.cs. В методе CreateMauiApp можно настроить поведение приложения. Для базового запуска достаточно стандартной конфигурации.

Проверьте файл *.csproj (например, MyFirstApp.csproj). Убедитесь, что свойство <TargetFrameworks> содержит нужные платформы. Пример:

<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
<TargetFrameworkForSinglePlatform>true</TargetFrameworkForSinglePlatform>

Шаг 5. Запуск приложения

Выберите целевую платформу в выпадающем списке сверху (например, Android Emulator). Нажмите кнопку Запустить (зеленый треугольник).

Если используется эмулятор, система может запросить разрешение на создание виртуального устройства. Дождитесь завершения загрузки эмулятора и запуска приложения. На экране появится заголовок приложения и кнопки по умолчанию.

Для запуска на реальном устройстве Android подключите телефон через USB и включите режим разработчика. В Visual Studio выберите устройство в списке целей вместо эмулятора.

Шаг 6. Модификация интерфейса

Откройте файл MainPage.xaml. Найдите элемент <Label Text="{Binding WelcomeText}" />. Измените текст на свое приветствие:

<Label Text="Привет, мир! Это мое первое MAUI приложение"
HorizontalOptions="Center"
VerticalOptions="Center"
FontSize="24" />

Сохраните изменения и запустите приложение снова. Если включена функция Hot Reload, изменение отобразится мгновенно без перезапуска.

Шаг 7. Сборка и публикация

Для создания установочного пакета перейдите в меню Сборка -> Собрать решение. После успешной сборки откройте папку bin/Release/net8.0-android (для Android). Там будет находиться файл .aab или .apk. Этот файл можно передать на устройство для установки.

Для публикации в магазины приложений используйте встроенные инструменты Visual Studio. В свойствах проекта выберите вкладку Подпись пакета и укажите сертификат подписи. Затем выполните команду сборки с параметром Publish.


Работа с ресурсами и стилями

Приложение MAUI использует систему ресурсов для хранения изображений, шрифтов и цветов. Файлы помещаются в папку Resources и классифицируются по типу.

Изображения размещаются в папке raw или img. Шрифты добавляются в папку fonts. Цвета определяются в файле Colors.xaml.

Пример подключения изображения в коде:

Image image = new Image
{
Source = ImageSource.FromFile("icon.png")
};

Стилизация осуществляется через XAML или программно. Использование ресурсов позволяет поддерживать единый дизайн для всех платформ.


Доступ к нативным функциям устройства

Платформа предоставляет прямой доступ к аппаратным возможностям через классы MauiAppServices.

Пример получения геолокации:

var location = await Geolocation.GetLocationAsync(Accuracy.Default);
Console.WriteLine($"Широта: {location.Latitude}, Долгота: {location.Longitude}");

Пример записи файла:

var filePath = Path.Combine(FileSystem.AppDataDirectory, "data.txt");
await File.WriteAllTextAsync(filePath, "Пример данных");

Эти вызовы работают одинаково на всех поддерживаемых платформах. Платформа автоматически выбирает нужный метод реализации для текущей ОС.


Отладка и тестирование

Инструменты отладки в MAUI аналогичны инструментам для обычных .NET приложений. Используются точки останова, просмотр переменных и стек вызовов.

Для отладки на эмуляторе необходимо включить режим отладки в настройках эмулятора. Для реальных устройств требуется активация режима разработчика и разрешение на отладку через USB.

Автоматическое тестирование выполняется с помощью фреймворка xUnit или NUnit. Тесты пишутся в отдельном проекте и выполняются через командную строку или в среде Visual Studio.


Особенности развертывания

Развертывание приложения требует соблюдения требований магазинов приложений. Для Google Play необходим формат AAB. Для Apple App Store — формат IPA с подписанным сертификатом.

Процесс подготовки включает:

  • Генерацию сертификата подписи;
  • Настройку манифеста приложения;
  • Проверку прав доступа (Permissions);
  • Прохождение модерации.

Visual Studio предоставляет мастера для генерации необходимых файлов и подписи.


См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).