Си шарп мобильные приложения

Введение в .NET MAUI

.NET Multi-platform App UI или сокращенно MAUI представляет кроссплатформенный фреймворк от компании Microsoft для создания нативных мобильных и десктопных приложений с использованием языка программирования C# и языка разметки XAML. С помощью .NET MAUI можно разрабатывать приложения под такие операционные системы как Android, iOS, macOS и Windows, используя при этом один и тот же код.

кроссплатформенная разработка приложений на .NET Multi-platform App UI или MAUI

Первая версия MAUI вышла в мае 2022 года, далее в ноябре 2022 года вышли обновления для .NET 7. Однако стоит отметить, что сам фреймворк .NET Multi-platform App UI фактически представляет эволюцию другого фреймворка — Xamarin Forms , который имеет более чем 10-летнюю историю и который с 2016 года был куплен и развивался компанией Microsoft. Поэтому, имя опыт работы с Xamarin Forms, не составит больших проблем перейти на .NET MAUI.

Также стоит отметить, что .NET MAUI — это opensource-фреймворк, код которого можно найти в репозитории на github по адресу https://github.com/dotnet/maui

Зачем использовать .NET Multi-platform App UI, какие преимущества она несет? При разработке приложения сразу под несколько платформ (iOS, Android, Windows, macOS) разработчики сталкиваются со следующими трудностями:

  • различие в подходах построение графического интерфейса так или иначе влияет на разработку. Разработчики вынуждены подстраивать приложение под требования к интерфейсу на конкретной платформе
  • разные API — различие в программных интерфейсах и реализациях тех или иных функциональностей также требует от программиста учет этих специфических особенностей
  • разные платформы для разработки. Например, чтобы создавать приложения для iOS нам необходима соответствующая среда — Mac OS X и ряд специальных инструментов, типа XCode. А в качестве языка программирования выбирается Objective-C или Swift. Для Android мы можем использовать самый разный набор сред — Android Studio, Intellij IDEA, Eclipse и т.д. Но здесь для подавляющего большинства приложений применяется Java или Kotlin. А для создания приложений под Windows используется Visual Studio, а в качестве языков — C#, F#, VB.NET, C++
Читайте также:  Html редактор для чтения

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

Преимущества разработки на MAUI:

  • В процессе разработки создается единый проект, который использует общий код для всех платформ
  • MAUI предоставляет прямой доступ к нативным API каждой платформы, в том числе к аппаратным возможностям платформ
  • При создании приложений мы можем использовать платформу .NET и язык программирования C# (а также F#), который является достаточно производительным, и в тоже время ясным и простым для освоения и применения
  • Богатая коллекция встроенных элементов управления
  • Поддержка привязки данных
  • Возможности настройки поведения визуального интерфейса и встроенного функционала
  • Богатые возможности по работе с графикой
  • Наличие hot reload, что упрощает разработку

Поддерживаемые платформы

На момент написания данной статьи .NET Multi-platform App UI (.NET MAUI) официально поддерживает следующие платформы:

  • Android 5.0 (API 21) и выше
  • iOS 10 и выше
  • macOS 10.13 и выше (с помощью Mac Catalyst)
  • Windows 11 and Windows 10 версии 1809 и выше (с использованием WinUI 3).

Кроме того, подсистема .NET MAUI Blazor часть выше поднимает планку поддерживаемых версий:

  • Android 7.0 (API 24) и выше
  • iOS 14 и выше
  • macOS 11 и выше (с помощью Mac Catalyst)

Также неофициально сообществом поддерживается Linux — проект maui-linux. Кроме того, компания Samsung осуществляет поддержку для ОС Tizen.

Как работает MAUI

.NET MAUI объединяет API операционных систем Android, iOS, macOS и Windows в один единый API, который позволяет написать один общий код для всех поддерживаемых операционных систем и при необходимости добавлять для каждой отдельной платформы специфические для нее функциональности. Схематически работу .NET MAUI можно представить следующим образом:

Как работает .NET MAUI в C#

.NET MAUI предоставляет единый фреймворк для создания приложений. Однако в процессе работы он опирается на ряд субплатформ, через которые идет взаимодействие с каждой отдельной операционной системой: .NET for Android, .NET for iOS, .NET for macOS и Windows UI 3 (WinUI 3). И в общем случае код приложения сначала обращается к платформе .NET MAUI, а та затем обращается к субплатформе для конкретной ОС. Хотя фреймворк также позволяет напрямую обращаться коду приложения к этим субплатформам.

Все эти субплатформы работают поверх библиотеки классов .NET 6 Base Class Library (BCL). Эта библиотека позволяет абстрагироваться от деталей реализации конкретной платформы и зависит от среды выполнения .NET, в которой выполняется код. Для Android, iOS и macOS среду выполнения для приложения предоставляет фреймворк Mono (реализация .NET). На Windows среда выполнения предоставляется Win32.

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

Инструменты разработки

Разрабатывать приложения формально можно на Windows и MacOS. Однако если стоит задача разрабатывать приложения под iOS и MacOS, то для этого необходим MacOS.

В качестве среды разработки используется Visual Studio 2022 и выше. На MacOS в этом случае используется Visual Studio for Mac. При большом желании также можно использовать Visual Studio Code.

Установка .NET MAUI

Чтобы разрабтывать в Visual Studio приложения на платформе .NET MAUI в программе для установщика Visual Studio необходимо выбрать и установить элемент Разработка с помощью .NET Multi-Platform App UI «Разработка мобильных приложений на .NET»:

Установка .NET Multi-Platform App UI в Visual Studio

Аналогично eсли мы хотим в Visual Studio for Mac создавать проекты под MAUI, то при установке необходимо отметить соответствующий пункт:

Источник

Си шарп мобильные приложения

Рассмотрим запуск простейшего проекта по умолчанию на ОС Android. Но вначале рассмотрим, как приложение вообще запускается на Android. Для этого обратимся к проекте к папке Platforms/Android/ , которая содержит файлы для взаимодействия с ОС Android.

Android Platform в проекте MAUI и C#

Здесь нас будут интересовать два файла: MainActivity.cs и MainApplication.cs .

Взаимодействие с MAUI с Android

Одним из основных понятий приложения на Android является activity , которая обычно представляет отдельный экран. То есть то, что видим на экране мобильного устройства Android, как правило, представляет activity. И для определения интерфейса приложения Android в данной папке по умолчанию создается файл MainActivity.cs :

using Android.App; using Android.Content.PM; using Android.OS; namespace HelloApp; [Activity(Theme = «@style/Maui.SplashTheme», MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] public class MainActivity : MauiAppCompatActivity

Здесь видно, что по умолчанию код класса MainActivity ничего не определяет, просто наследуется от другого класса MauiAppCompatActivity. Однако если мы обратимся к классу MauiAppCompatActivity:

using Android.OS; using AndroidX.AppCompat.App; using Microsoft.Maui.LifecycleEvents; using Microsoft.Maui.Platform; namespace Microsoft.Maui < public partial class MauiAppCompatActivity : AppCompatActivity < protected virtual bool AllowFragmentRestore =>false; protected override void OnCreate(Bundle? savedInstanceState) < // содержимое опущено для краткости base.OnCreate(savedInstanceState); // определяем графический интерфейс окна приложения this.CreatePlatformWindow(MauiApplication.Current.Application, savedInstanceState); >> >

Все классы MAUI, предназначенные для взаимодействия с платформой Android, можно найти на github по адресу https://github.com/dotnet/maui/tree/main/src/Core/src/Platform/Android

Класс MauiAppCompatActivity в методе OnCreate, который вызывается ОС Android при старте приложения, вызывает метод CreatePlatformWindow , который определен для одного из родительских классах (класс Activity) и в котором фактически и определяется графический интерфейс окна.

Для установки интерфейса применяется свойство MauiApplication.Current.Application , то есть что хранится в этом свойстве, то и будет фактически представлять интерфейс приложения. Значение этого свойства представляет объект класса MainApplication , который определяется в файле MainApplication.cs :

using Android.App; using Android.Runtime; namespace HelloApp; [Application] public class MainApplication : MauiApplication < public MainApplication(IntPtr handle, JniHandleOwnership ownership) : base(handle, ownership) < >protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); >

Для определения интерфейса переопределяется абстрактный метод CreateMauiApp() , в котором вызывается метод MauiProgram.CreateMauiApp() (из файла MauiProgram.cs ), который создает объект MauiApp и является точкой входа в приложение MAUI.

Таким образом, главный класс, который для ОС Android определяет визуальное содержимое — MainActivity использует класс MainApplication, а тот — класс MauiApp.

Запуск проекта

Если рабочая машина, на которой ведется разработка, поддерживает виртуализацию, то мы можем для отладки приложений использовать эмуляторы: эмулятор Android от Microsoft или Android Player.

Если у нас есть устройство с ОС Android, то мы можем его использовать для тестирования. Для этого надо подключить это устройство к компьютеру с помощью USB-кабеля. А на самом мобильном устройстве установить режим разработчика в параметрах.

Для установки устройства перейдем в Visual Studio в поле устройств запуска и в выпадающем списке выберем пункт Android local Devices и в подменю для этого пункта выберем подключенное устройство с Android.

Тестирование приложения MAUI на C# на смартфоне Android

Если же все настроено правильно, то в панели инструментов Visual Studio отобразит подключенное устройство. В моем случае это устройство Nexus 5X. Попутно в списке могут отображаться и другие подключенные устройства и эмуляторы.

И после запуска проекта на выполнение на мобильном устройстве отобразится интерфейс нашего приложения:

Первое приложение на MAUI и C# на смартфоне Android

Управление настройками проекта и SDK

Если необходимо установить какую-то новую версию Android API или какие-то компоненты из Android SDK, которые должны применяться с приложением, необходимо перейти к меню Tools -> Android -> Android SDK Manager

Android SDK Manager в Visual Studio Первое приложение на Xamarin под Android

Для управления настройками Android проекта можно перейти в свойства проекта. Здесь есть ряд опций для настройки. Прежде всего в секции Android Targets можно настроить целевую применяемую и минимальную версии Android API:

настройка Android API для проекта Maui на C# в visual Studio

В частности, здесь нам доступны следующие опции:

  • Target the Android platform : при установке этого флажка .NET MAUI при построении проекта будет также создавать версию приложения для Android.
  • Target .NET Runtime : применяемая версия .NET
  • Target Android Framework : целевая версия Android
  • Minimum Target Android Framework : минимальная версия Android, под которую создается приложение

Кроме того, в секции Android можно установить параметры манифеста Android, а также опции для публикации приложения.

Источник

Оцените статью