За последние 8 месяцев я создал реальное приложение с .NET MAUI, вот результат и мои мысли об инструменте MAUI.

.NET MAUI — новейший кроссплатформенный инструмент разработки Microsoft. Это дальнейшее развитие существующего Xamarin.Forms. С помощью MAUI вы можете разрабатывать приложения для iPhone, Android, Windows и iOS, используя единую кодовую базу. MAUI был официально запущен в мае 2022 года.

Приложение под названием WorkHorse доступно в Play Store, если вы хотите увидеть окончательный результат. Проверьте приложение MAUI в Play Store.

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

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

Разработка Android с MAUI

После большого количества тестов и отзывов от нескольких пользователей я бы сказал, что доволен результатом Android. Система XAML Grid воспринимается как гибкий инструмент для достижения более совершенных решений по размещению.

Дизайн Adobe XD, который я сделал:

Затем я воссоздал аналогичный дизайн в XAML:

На Android я доволен конечным результатом. Я не буду претендовать на то, что с первой попытки написал код XAML (язык дизайна) с передовым опытом, но теперь дизайн прошел через устранение неполадок и исправление ошибок на нескольких разных телефонах Android. В MAUI все файлы SVG компилируются в PNG во время сборки, поэтому использовать PNG в дизайне верхней панели было невозможно. Я решил эту проблему, используя комбинацию Grid и Paths, чтобы кривые выглядели плавно на всех размерах экрана.

Стоит отметить, что на некоторых телефонах Android были серьезные проблемы. Использование встроенных всплывающих окон для отображения окон предупреждение, подсказка и подтверждение приводило к сбою приложения MAUI на некоторых старых моделях Samsung и Motorola. На данный момент я создал свою собственную систему всплывающих окон, которая до сих пор работает хорошо.

Однако на iPhone/iOS…

Хотя я упомяну о некоторых проблемах, связанных с созданием версии приложения MAUI для iPhone, стоит отметить, что в MAUI могут быть и другие методы кодирования XAML, которые сделают разработку iOS более гладкой, чем мой опыт. Есть несколько реальных приложений, созданных с помощью MAUI, которые отлично работают на всех платформах. Однако я хочу, чтобы вы знали, если вы разрабатываете не только для Android и Windows, — это протестировать версию приложения MAUI для iPhone на ранней стадии процесса на Mac.

Отладка на iPhone с Windows с помощью горячего перезапуска — это хорошо?

Со своей стороны, у меня не было под рукой Mac, и поэтому я слишком долго ждал, чтобы протестировать на iPhone. Одной из первых вещей, которые я протестировал на iPhone, было использование системы горячего перезапуска. Здесь вы можете подключить физический iPhone через USB к Visual Studio 2022 в Windows. Самый важный опыт, который я получил здесь, состоял в том, чтобы не доверять тому, что я видел. В настоящее время это не настоящая сборка iOS, которая предоставляется iPhone, а в основном вставляется в виртуальный контейнер iPhone. Когда я построил его на настоящем Mac, это были определенно отличия.

Чтобы запустить симуляцию Hot Restart-build на iPhone, вам необходимо иметь учетную запись разработчика в Apple. Кроме того, мне пришлось потратить некоторое время на изучение проблем сборки, которые, как я думал, были связаны с пакетом Nuget, но которые оказались ограничениями, связанными с функциональностью горячего перезапуска. Горячий перезапуск — впечатляющая технология во многих отношениях, но, на мой взгляд, она не готова для профессионального использования в ее нынешнем виде. Итак, используйте Mac, если вы собираетесь протестировать приложение MAUI на iPhone.

В сети Mac с использованием Scaleway и Macincloud.com

На следующем этапе я попробовал Scaleway.com, который предлагает недорогую аренду компьютеров Mac онлайн, но в решении, которое я нашел, было много работы, связанной с выполнением всех необходимых установок самостоятельно, если только я не хотел иметь там фиксированную подписку. . Только сейчас, в январе 2023 года, я начал тестировать приложение с помощью онлайн-инструмента macincloud.com. Это был лучший опыт, но вы, вероятно, можете сразу отправить им билет, чтобы установить установки .NET и MAUI на назначенный вам сервер.

Сравнение дизайна Android и iPhone

Давайте подробнее рассмотрим физические результаты Android и iPhone. Как мы видим на сравнительном изображении 1, главный экран в обеих системах выглядит примерно одинаково. Однако очевидно, что в XAML нет такой же настройки для разработки круглых кнопок для iPhone, как для Android. На снимке экрана эмулятора дизайн выглядит не так гладко, но он дает вероятное представление о том, как он будет выглядеть на практике.

📷Скриншот из эмуляторов, показывающий сравнение дизайна Android и iPhone.

На изображении выше мы видим, что система FlexLayout не работает на iPhone так же, как на Android (даты с почасовым отображением). Количество рабочих часов не отображается на iPhone. Кажется, я где-то читал, что Flex пока не рекомендуется использовать в MAUI.

Проблемы навигации в оболочке на iPhone и iOS

(Обновление от 7 марта: это может быть проблема, которая каким-то образом вызвана моей собственной настройкой кода! Потому что я сделал несколько простых тестов в приложении hello world, и маршрутизация там работала нормально. Но все равно странно, что моя навигация по приложению работает хорошо на Android, но не на iOS. Я буду исследовать это дальше). Итак, мы видим, что есть несколько вещей, которые следует учитывать при разработке более сложных макетов для нескольких платформ. Тем не менее, мой самый большой недостаток в том, что я еще не завершил версию для iPhone, заключается в том, что навигационная система здесь еще не полностью функциональна. Я настроил страницы с навигацией оболочки. Отправка страниц работала нормально, но, к сожалению, полностью останавливала приложение на iPhone и iOS при использовании «абсолютной маршрутизации», такой как await Shell.Current.GoToAsync("//Dashboard/ProjectSessions"). Хотя это прекрасно работает на Android.

Что бы я сделал, если бы мог начать сначала

Если бы мне пришлось начинать сначала, зная о проблемах, упомянутых выше, я бы определенно протестировал приложение на Mac намного раньше. И с точки зрения программирования, и с точки зрения дизайна, чтобы я мог с самого начала приспособиться к правильным обходным путям/правильным практикам. Учитывая, что это приложение создано на основе хобби, я бы подумал о том, чтобы написать его с помощью инструмента, с помощью которого пользователи могли бы тестировать функциональность в браузере, не проходя через весь процесс разработки в Play Store и App Store, прежде чем приложение даже покажет признаки того, что живой. Ранее я написал приложение на Ionic с Vue, которое имело свои преимущества в этом отношении. В то же время я считаю, что приложение MAUI обеспечивает более «премиальный» и «родной» опыт.

Если я хочу использовать C# для создания приложений для веб-страниц, которые можно преобразовать в приложение, Microsoft Blazor кажется очень многообещающим инструментом. Вы можете создавать SPA с хорошей автономной совместимостью (Blazor WebAssembly). Он также предназначен для простой реализации Blazor в MAUI с гибридом Blazor (.NET MAUI Blazor). Если кто-то заинтересован в изучении Dart, Flutter также кажется многообещающим из того немногого, что я видел о нем.

Должны ли мы все перейти к «настоящей» нативной разработке?

Есть много мнений о кроссплатформенной и нативной разработке приложений. Я не эксперт в этом, но, наверное, скучный ответ: это зависит. Для продвинутых приложений или приложений с особыми функциональными потребностями, которые кроссплатформенность не покрывает, было бы естественно использовать Java/Kotlin для Android и Swift для iOS. Но для других приложений кроссплатформенность определенно может быть полезна, как мне кажется.

Сводка

Подводя итог этому посту, уместно процитировать комментарий разработчика .NET Тобиаса Мо Торстенсена от ноября 2022 года: «MAUI, вероятно, нужно немного больше любви». Несмотря на некоторые болезни роста и проблемы с iPhone, я все равно рад, что создал приложение с MAUI.

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

Хотите протестировать полнофункциональную разработку MAUI с синхронизацией офлайн-онлайн? Посмотрите мой полный тур по MAUI здесь. Для более конкретного и подробного контента я предпочитаю MAUI-вещи на YouTube Джеральда Верслуиса.

Также взгляните на мои другие разработки на моей веб-странице, если вам интересно.