Миграция мобильного приложения с Xamarin на .NET MAUI

Почему миграция с Xamarin на .NET MAUI неизбежна? Представьте: ваше мобильное приложение на Xamarin.Forms внезапно перестаёт запускаться на iOS 17 — система уведомляет о несовместимости с новым SDK. Поддержка Xamarin.iOS, Xamarin.Android и Xamarin.Forms официально прекращена Microsoft: нет обновл

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Миграция мобильного приложения с Xamarin на .NET MAUI
Сложный
от 2 недель до 3 месяцев

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Почему миграция с Xamarin на .NET MAUI неизбежна?

Представьте: ваше мобильное приложение на Xamarin.Forms внезапно перестаёт запускаться на iOS 17 — система уведомляет о несовместимости с новым SDK. Поддержка Xamarin.iOS, Xamarin.Android и Xamarin.Forms официально прекращена Microsoft: нет обновлений безопасности, исправлений багов, совместимости с новыми API. Приложение на Xamarin — накапливающийся технический долг с чётким крайним сроком. .NET MAUI — единственный преемник, стабильный для продакшена. Наша команда с 8-летним опытом в .NET-экосистеме провела 20+ успешных миграций. Мы минимизируем риски на каждом этапе и гарантируем, что ваше приложение будет работать на последних версиях iOS и Android.

Что конкретно ломается при миграции?

Структура проекта

В Xamarin.Forms три отдельных проекта: общий PCL/Shared, iOS head и Android head. В MAUI — единый multi-target проект: один .csproj с <TargetFrameworks>net8.0-ios;net8.0-android</TargetFrameworks>. Нативные ресурсы (иконки, шрифты, Assets) переносятся в Resources/ в корне. AppDelegate.cs и MainActivity.cs пересобираются автоматически, но требуют проверки.

Namespace и API

Xamarin.FormsMicrosoft.Maui. Это касается каждого using-а. Простой find & replace сработает лишь частично: Device.BeginInvokeOnMainThreadMainThread.BeginInvokeOnMainThread, Application.Current.MainPageApplication.Current?.Windows[0].Page. Renderers целиком заменяются на Handlers — принципиально другая модель кастомизации нативных контролов.

Renderers → Handlers

Самый болезненный участок. Каждый кастомный рендерер для Entry — это класс, наследующий EntryRenderer с переопределением OnElementChanged. В MAUI Handler — маппинг свойств через PropertyMapper и CommandMapper. На проекте с 5–10 кастомными рендерерами это 2–3 недели чистой работы. Мы переписываем их с нуля, используя встроенные Handler’ы MAUI, что часто уменьшает объём кода на 30–50%.

Зависимости и плагины

Часть Xamarin-плагинов (например, из Xamarin.Essentials — теперь встроена в MAUI) просто исчезла. Сторонние пакеты проверяем на NuGet на совместимость с net8.0-ios и net8.0-android. Несовместимые заменяем аналогами или пишем обёртки.

Как мы проводим миграцию?

Процесс состоит из следующих этапов:

  1. Аудит зависимостей и рендереров — собираем полный список NuGet-пакетов, проверяем каждый на MAUI-совместимость; составляем реестр кастомных рендереров с трудоёмкостью перехода на Handlers.
  2. Автоматическая конвертация с помощью Upgrade Assistant — инструмент механически обновляет .csproj, target frameworks, переносит ресурсы. Это ~30–40% работы.
  3. Ручная доработка — правка рендереров, навигации, DI, обновление XAML-разметки. Для Shell-навигации MAUI концептуально идентичен Xamarin.Forms, поэтому AppShell.xaml переезжает с минимальными правками. Dependency Injection переносится на встроенный MauiAppBuilder на Microsoft.Extensions.DependencyInjection.
  4. Тестирование — покрытие бизнес-логики unit-тестами (xUnit, NUnit) до миграции; после — UI-тесты на Appium + MAUI UI Testing и ручное тестирование на физических устройствах iOS и Android. Сборки распространяем через TestFlight и Firebase App Distribution.
  5. Деплой в сторах — настройка CI/CD (Azure DevOps, GitHub Actions), развёртывание в App Store Connect и Google Play Console, настройка push-уведомлений (APNs/FCM) и deep linking (Universal Links / App Links).

Почему MAUI лучше Xamarin?

MAUI ускоряет сборку в 2 раза и сокращает размер установочного файла на 30% по сравнению с Xamarin.Forms. Вот ключевые различия:

Характеристика Xamarin.Forms .NET MAUI
Архитектура проекта 3 отдельных head-проекта Единый multi-target проект
Модель рендеринга Renderers (наследование) Handlers (PropertyMapper)
Dependency Injection Сторонние DI-контейнеры Встроенный MauiAppBuilder
Производительность при запуске ~2–4 секунды ~1–2 секунды
Размер IPA/APK ~30 MB iOS, ~20 MB Android ~25 MB iOS, ~15 MB Android
Типичные ошибки при самостоятельной миграции
  • Забывают проверить все using-и, что приводит к ошибкам компиляции.
  • Не учитывают изменения в API: Device.BeginInvokeOnMainThread не заменяют на MainThread.BeginInvokeOnMainThread.
  • Пытаются запустить старый Xamarin-плагин без проверки совместимости — получают runtime-краш.
  • Используют устаревший Application.Current.MainPage вместо Application.Current?.Windows[0].Page.

Что входит в наш сервис?

  • Аудит текущего приложения: .csproj, NuGet, рендереры, навигация, кастомные библиотеки.
  • План миграции с пошаговым расписанием и оценкой рисков.
  • Автоматическая конвертация через Upgrade Assistant с последующей ручной доводкой.
  • Переписывание всех кастомных рендереров на Handlers.
  • Обновление DI, навигации, сервисов, ресурсов.
  • Настройка CI/CD (Azure DevOps, GitHub Actions) для сборки под iOS и Android.
  • Тестирование: unit, integration, UI, ручное на устройствах.
  • Развёртывание в App Store Connect и Google Play Console, включая push-уведомления и deep linking.
  • Обучение вашей команды работе с MAUI (1–2 дня воркшопа).
  • Пост-миграционная поддержка 1 месяц.

Сроки и ориентиры

Размер проекта Кастомные рендереры Ориентир
До 20 экранов Нет / 1–3 3–5 недель
20–50 экранов 3–10 6–10 недель
50+ экранов 10+ 12+ недель

Стоимость рассчитывается индивидуально после аудита вашего проекта. Закажите бесплатный аудит вашего Xamarin-приложения — мы оценим объём работ и подберём оптимальный формат сотрудничества.

Наш опыт: 8+ лет разработки мобильных приложений на .NET, 20+ успешных миграций с Xamarin на MAUI. Гарантируем результат — ваше приложение будет работать на новых версиях iOS и Android без потери функциональности.

Свяжитесь с нами, чтобы обсудить детали.