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 предоставляет мастера для генерации необходимых файлов и подписи.
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Программы для смартфонов. Особенности мобильной разработки. Пользовательский интерфейс (user interface, UI) в Android — это совокупность визуальных компонентов и интерактивных элементов, через которые пользователь взаимодействует с приложением. Он формируется… Сборка — не техническая рутина, а акт проектирования доверия. Каждый APK и IPA — это договор между разработчиком и пользователем, закодированный в битах. Отладка по USB представляет собой механизм взаимодействия между компьютером разработчика и устройством на базе Android. Суперапп представляет собой мобильное приложение, объединяющее множество самостоятельных сервисов в единую платформу. Фреймворк на базе библиотеки React с использованием JavaScript Набор инструментов и сервисов на базе React Native. Flutter - платформа, а Dart - язык программирования. Язык программирования, стандарт для разработки под Android. Влиятельный язык, на котором уже давно пишут мобильные приложения. Язык для устройств экосистемы Apple. Progressive Web Apps.Мобильные приложения
Компоненты пользовательского интерфейса на Android
Сборка и развёртывание мобильных приложений
Отладка по USB на Android
Супераппы
React Native
Expo
Dart
Kotlin в мобильных приложениях
Java в мобильных приложениях
Swift в мобильных приложениях
PWA в мобильных приложениях