Міграція мобільного додатку з Xamarin на .NET MAUI

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

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

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

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Міграція мобільного застосунку з Xamarin на .NET MAUI

Microsoft припинила підтримку Xamarin.iOS та Xamarin.Android у травні 2024. Xamarin.Forms отримала extended support до кінця 2024 року. Це означає: немає оновлень безпеки, немає підтримки нових версій iOS та Android SDK, немає виправлення багів. Застосунок на Xamarin — це накопичуючийся технічний борг з конкретною датою завершення.

.NET MAUI — офіційний наступник Xamarin.Forms. Архітектурно це еволюція, а не революція. Але «просто оновити NuGet-пакети» не вийде.

Що ломається при міграції

Структура проекту. У Xamarin.Forms три проекти: спільний PCL/Shared + iOS head project + Android head project. У MAUI — єдиний multi-target проект: один .csproj з <TargetFrameworks>net8.0-ios;net8.0-android</TargetFrameworks>. Нативні ресурси (іконки, шрифти, Assets) переносяться в Resources/ у корені єдиного проекту. Вся структура AppDelegate.cs, MainActivity.cs пересобирається.

Namespace-и та API. Xamarin.FormsMicrosoft.Maui. Це стосується кожного using-а в проекті. Частина класів переименована: Device.BeginInvokeOnMainThreadMainThread.BeginInvokeOnMainThread, Application.Current.MainPageApplication.Current?.Windows[0].Page. Renderers замінені на Handlers — принципово інша модель кастомізації нативних контролів.

Renderers → Handlers. Це найбільш болісне. У Xamarin.Forms кастомний рендерер для Entry — це клас, що наслідує EntryRenderer, переопеределяє OnElementChanged. У MAUI Handler — це маппінг властивостей через PropertyMapper та CommandMapper. Кожен кастомний рендерер потрібно переписати. Якщо в проекті 5–10 кастомних рендереорів — це серйозний обсяг роботи.

Залежності та плагіни. Деякі Xamarin-плагіни (особливо з Xamarin.Essentials, який тепер вбудований у MAUI) просто зникли або були переименовані. Сторонні плагіни — перевіряємо на NuGet сумісність з net8.0-ios / net8.0-android. Плагіни, які не оновилися до MAUI, потрібно замінювати альтернативами або писати свої.

Як проводимо міграцію

Аудит залежностей — перший та найважливіший крок. Збираємо повний список NuGet-пакетів, перевіряємо кожен на MAUI-сумісність. Для Xamarin.Essentials залежностей — хороша новина: більшість API вбудовано в MAUI нативно. Для кастомних рендереорів складаємо список з оцінкою трудомісткості переписування на Handlers.

Upgrade Assistant. Microsoft випустила dotnet-maui-check та .NET Upgrade Assistant з підтримкою Xamarin → MAUI. Інструмент робить частину механічної роботи: обновляє .csproj, змінює target frameworks, переносить ресурси. Але це ~30–40% роботи. Решта — ручна правка.

Shell navigation. Якщо проект використовував Xamarin.Forms Shell — це хороша новина: MAUI Shell сумісний концептуально. AppShell.xaml з <TabBar>, <FlyoutItem>, route-реєстрація через Routing.RegisterRoute — переїжджає з мінімальними змінами.

Dependency Injection. У Xamarin.Forms DI не був вбудований — використовували Autofac, DryIoc, TinyIoC. MAUI має вбудований MauiAppBuilder з Microsoft.Extensions.DependencyInjection. Це стандартний .NET DI, добре знайомий розробникам ASP.NET. Реєстрація сервісів переносяться в MauiProgram.cs.

Тестування. MAUI підтримує xUnit та NUnit для unit-тестів. Для UI-тестування — Appium з dotnet-appium-driver або MAUI UI Testing-сумісні підходи. Покриття бізнес-логіки тестами до міграції — страховка від регресій.

Після міграції обов'язкові: ручне тестування на фізичних пристроях iOS та Android (емулятора недостатньо для перевірки нативної поведінки), прогон через TestFlight та Firebase App Distribution до релізу.

Терміни

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

Вартість розраховується після аудиту проекту: аналізу .csproj, списку NuGet-залежностей та кількості кастомних рендереорів.