Гид по технологиям

Создание мобильных приложений с Xamarin и .NET

8 min read Мобильная разработка Обновлено 27 Nov 2025
Xamarin: руководство по созданию мобильных приложений
Xamarin: руководство по созданию мобильных приложений

Обзор

Человек тестирует и разрабатывает мобильное приложение

Xamarin — это платформа, позволяющая создавать мобильные приложения на C# с использованием .NET. Проект открыт для сообщества и поддержан разработчиками по всему миру. Xamarin даёт возможность строить приложения для iOS, Android и Windows, сохраняя общую бизнес-логику и при необходимости — разделяя пользовательские интерфейсы.

Ключевые подходы:

  • Xamarin Native — писать UI под конкретную платформу (Xamarin.iOS, Xamarin.Android, Xamarin.Windows).
  • Xamarin.Forms — создавать общий UI, переиспользуемый на разных платформах.

Важно: Microsoft постепенно заменяет Xamarin на .NET MAUI (Multiplatform App UI) в рамках .NET 6 и выше. Одно из преимуществ MAUI — единый проект вместо набора проектов под каждую платформу.

Основные варианты: Xamarin Native vs Xamarin.Forms

Xamarin Native

  • Что это: набор SDK для создания UI, специфичных для платформы (iOS/Android/Windows).
  • Когда подходит: нужен нативный внешний вид и поведение, сложная платформа-специфичная логика, или когда требуется максимальная производительность.
  • Минусы: дублирование UI-кода между платформами, более долгая разработка.

Xamarin.Forms

  • Что это: система для декларативного описания общего UI (XAML) и переиспользования элементов на разных платформах.
  • Когда подходит: типичный бизнес-приложения с однообразным интерфейсом (кнопки, списки, формы). Быстрая разработка и поддержка одной базы кода.
  • Минусы: при очень кастомных интерфейсах может потребоваться платформа-специфичная настройка.

Контрпример/когда это не работает

  • Если вы разрабатываете графически насыщенную игру — лучше использовать движок (Unity) или нативные SDK.
  • Если приложение требует крайних платформенных оптимизаций — предпочтительнее нативная реализация.

Альтернативы

  • .NET MAUI — преемник Xamarin с поддержкой единого проекта.
  • React Native, Flutter — кроссплатформенные фреймворки с другими языками (JS, Dart).

Как установить Mobile Development for .NET (Visual Studio)

Перед началом разработки установите компонент Mobile Development for .NET в Visual Studio — он добавляет шаблоны Xamarin и эмуляторы.

Шаги установки:

  1. Откройте Visual Studio Installer.
  2. Выберите версию Visual Studio, которую хотите использовать, и нажмите «Изменить».

Visual Studio Editions with the option to modify

  1. В списке компонентов прокрутите до категории Mobile and Gaming.
  2. Отметьте компонент «Mobile development with .NET». В правой панели можно увидеть список включаемых элементов.

Mobile Development for .NET selected

  1. Внизу справа выберите «Install while downloading» (установить во время загрузки) и нажмите «Modify» (Изменить). Дождитесь завершения установки.

Visual Studio Loading Bar

Примечания:

  • На Windows потребуется включить Hyper‑V для некоторых эмуляторов. Настройка включается через «Включение или отключение компонентов Windows».
  • Для разработки под iOS потребуется macOS как билд‑сервер (или подключение к Mac) при сборке и деплое на устройство.

Создание нового проекта Xamarin в Visual Studio

После установки откройте Visual Studio и создайте проект:

  1. В верхнем меню Visual Studio откройте вкладку «Файл». Наведите на «Создать» и выберите «Проект».
  2. В строке поиска введите Xamarin. Появятся шаблоны проектов для Xamarin Native и Xamarin.Forms.

Window to create a new Xamarin project in Visual Studio

  1. Выберите шаблон Mobile App (Xamarin.Forms).
  2. Выберите шаблон «Blank» (Пустой). В опции «Platform» укажите платформы (Android, iOS и/или UWP).

Blank Xamarin project template selected

Советы:

  • Для быстрого прототипа используйте Xamarin.Forms и готовые контролы.
  • Для сложного UI комбинируйте Forms с платформенно-специфичными рендерами (Custom Renderers).

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

По умолчанию приложение Xamarin состоит из нескольких проектов:

  • Общая библиотека (обычно имяXamarinProject) — содержит общие UI и логику, включая MainPage.xaml.
  • Проект Android — содержит MainActivity.xaml и платформенную реализацию.
  • Проект iOS — содержит Main.cs и iOS‑специфичные настройки и ресурсы.
  • Папка Dependencies/NuGet — содержит пакеты и зависимости.

File structure of a new Xamarin project

Ключевые файлы:

  • MainPage.xaml — общий XAML для Xamarin.Forms.
  • MainPage.xaml.cs — «код‑за» (code‑behind) с логикой страницы.
  • MainActivity.xaml (Android) и AppDelegate (iOS) — точки входа на платформах.

Критерии приёмки

  • Проект компилируется без ошибок для целевых платформ.
  • На эмуляторе отображается MainPage с ожидаемым контентом.
  • Обработчик кнопки корректно обновляет UI и не вызывает исключений.

Как добавить контент в приложение (XAML и code-behind)

Xamarin.Forms предоставляет стандартные элементы: Label, Button, Entry, ListView и т. д. Каждый элемент имеет атрибуты (Text, Color, FontSize и т. п.), похожие на HTML‑теги по синтаксису.

Пример: простой Label и Button в MainPage.xaml


  

Пример обработчика в MainPage.xaml.cs:

async void ClickButton(object sender, EventArgs e)
{
    // Изменяем текст кнопки при нажатии
    Button button = (Button)sender;
    button.Text = "Кнопка была нажата!";
}

Советы по дизайну и доступности:

  • Используйте семантические названия x:Name для удобства тестирования.
  • Поддерживайте масштаб шрифтов и контрастность для доступности.

Тестовые случаи / критерии приёмки

  • Кнопка отображается и реагирует на нажатие.
  • Текст кнопки меняется после клика.
  • Нет утечек памяти при многократных навигациях.

Запуск приложения в Android-эмуляторе

Чтобы запустить приложение в эмуляторе:

  1. В верхней части Visual Studio выберите проект Android в выпадающем списке (например, XamarinProject.Android).
  2. Выберите нужный эмулятор или устройство.
  3. Нажмите зелёную кнопку запуска (Play).

Visual Studio with dropdown selecting Android

Если используется Windows и требуется Hyper‑V, вам предложат включить Hyper‑V через «Включение или отключение компонентов Windows».

Turn windows features on and off settings - with HyperV selected

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

Emulator with default Android home page

Когда проект соберётся, эмулятор покажет главное окно приложения.

Emulator with mobile application running

Для тестирования на iOS требуется выбрать проект iOS и, как правило, подключение к Mac (macOS build host).

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

Рекомендации по отладке:

  • Устанавливайте отладочные точки (breakpoints) в коде и используйте панель Output/Debug.
  • Для UI‑ошибок применяйте Live Visual Tree / Live Property Explorer (когда доступно).
  • Покрытие тестами: пишите юнит‑тесты для бизнес‑логики (PCL/Shared проект), используйте UI‑тестирование (Xamarin.UITest) для сценариев.

Инцидентный план / откат

  • Если при обновлении NuGet-пакетов приложение перестало собираться, откатите версии через сохранённый NuGet.config или через контролируемый коммит.
  • Если возникла регрессия, используйте build artifacts для развертывания предыдущей стабильной сборки.

Миграция на .NET MAUI: когда и как планировать

.NET MAUI — логическое развитие Xamarin.Forms. Переход на MAUI даёт единый проект, улучшенную структуру и поддержку современных версий .NET.

Ментальная модель для решения:

  • Короткие проекты/прототипы: продолжайте с Xamarin.Forms, если сроки критичны.
  • Долгосрочные проекты: планируйте миграцию на MAUI, чтобы избежать технического долга.

Меры по миграции:

  • Оцените зависимости NuGet — многие пакеты получают MAUI‑версии.
  • Разработайте поэтапный план: сначала общая логика, затем UI‑адаптации.

Таблица совместимости и советы:

  • Проверьте, поддерживает ли ваш CI/CD сборку .NET 6+/MAUI.
  • На iOS остаётся требование macOS для финальной сборки и подписания.

Чек-листы по ролям

Разработчик

  • Настроил Mobile Development for .NET в Visual Studio.
  • Собрал проект на эмуляторе и на реальном устройстве.
  • Написал юнит‑тесты для бизнес-логики.
  • Прогнал статический анализ кода.

Тестировщик / QA

  • Проверил базовые сценарии работы кнопок и навигации.
  • Проверил поведение при смене ориентации и при низком уровне памяти.
  • Протестировал доступность (контраст, масштаб шрифта).

Продакт-менеджер

  • Подтвердил поддерживаемые платформы и приоритеты UX.
  • Утвердил список критичных метрик для релиза (время запуска, частота падений).

Методология быстрой проверки (mini‑methodology)

  1. Сгенерировать пустой проект Xamarin.Forms.
  2. Добавить минимальную страницу с Label и Button.
  3. Запустить на Android‑эмуляторе и на реальном устройстве.
  4. Написать 1–2 юнит‑теста для логики.
  5. Зафиксировать результаты в таск‑системе.

Диаграмма принятия решения (Mermaid)

flowchart TD
  A[Нужно ли нативное UI?] -->|Да| B[Xamarin Native]
  A -->|Нет, общий UI| C[Xamarin.Forms]
  B --> D{Планируете поддержку >3 лет?}
  C --> D
  D -->|Да| E[Рассмотреть миграцию на .NET MAUI]
  D -->|Нет| F[Оставаться на выбранной платформе]

Отладочные ошибки и способы их решения (troubleshooting)

  • Проблема: приложение не запускается в эмуляторе — проверьте, включён ли Hyper‑V и корректна ли настройка AVD.
  • Проблема: NuGet‑пакет конфликтует — очистите папку paket, восстановите пакеты и проверьте версии в файлах csproj.
  • Проблема: отличия в поведении на iOS/Android — создайте платформенно-специфичный код через DependencyService или Custom Renderers.

Сравнение подходов (кратко)

  • Xamarin.Forms: быстрее MVP, общая кодовая база.
  • Xamarin Native: максимум контроля и нативный UX.
  • .NET MAUI: будущее Xamarin, единый проект и современный стек.
  • React Native / Flutter: альтернативы с разными языками и сообществами.

1‑строчный глоссарий

  • XAML — декларативный язык разметки интерфейса для Xamarin.Forms.
  • MainPage.xaml — основная страница приложения в проекте Forms.
  • MainActivity — точка входа приложения на Android.
  • AppDelegate / Main.cs — точка входа для iOS.
  • NuGet — менеджер пакетов .NET.

Риски и меры смягчения

  • Риск: устаревание Xamarin — План: миграция на .NET MAUI при планировании долгосрочной поддержки.
  • Риск: зависимость от нативных библиотек — План: оценивать наличие MAUI/Forms альтернатив и изолировать платформенно-специфичный код.

Локальные особенности и советы для России

  • Для сборки iOS в российских командах часто используют удалённый Mac в облаке или собственный Mac‑хост в офисе.
  • Обратите внимание на правила подписания приложений и настройки сертифікатов при публикации в App Store / Google Play.

Ресурсы для обучения

  • Официальная документация Microsoft по Xamarin и .NET MAUI.
  • Курсы по мобильной разработке на C# и .NET.
  • Сообщества и форумы (Stack Overflow, GitHub issues) для конкретных багов.

Итоги

Xamarin остаётся жизнеспособным инструментом для кроссплатформенной разработки, особенно если у команды есть опыт на C#/.NET. Для новых долгосрочных проектов рассматривайте .NET MAUI как приоритетную цель миграции. Выбирайте Xamarin Native для сложных нативных интерфейсов и Xamarin.Forms для быстрой реализации и общей кодовой базы.

Ключевые выводы:

  • Xamarin даёт баланс между переиспользуемой логикой и нативным доступом.
  • Xamarin.Forms ускоряет разработку, но может требовать платформенных настроек для кастомного UI.
  • Планируйте миграцию на .NET MAUI для долгосрочной поддержки и обновлений.

Примечание: следите за обновлениями экосистемы .NET и за совместимостью используемых NuGet‑пакетов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство