Рассмотрим запуск простейшего проекта по умолчанию на ОС Android. Но вначале рассмотрим, как приложение вообще запускается на Android. Для этого обратимся к проекте к папке Platforms/Android/, которая содержит файлы для взаимодействия с ОС Android.
Здесь нас будут интересовать два файла: MainActivity.cs и MainApplication.cs.
Одним из основных понятий приложения на 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); // определяем графический интерфейс окна приложения if (IPlatformApplication.Current?.Application is not null) { this.CreatePlatformWindow(IPlatformApplication.Current.Application, savedInstanceState); } } //........................... } }
Все классы MAUI, предназначенные для взаимодействия с платформой Android, можно найти на github по адресу https://github.com/dotnet/maui/tree/main/src/Core/src/Platform/Android
Класс MauiAppCompatActivity в методе OnCreate, который вызывается ОС Android при старте приложения, вызывает метод CreatePlatformWindow
, который определен для одного из
родительских классах (класс Activity) и в котором фактически и определяется графический интерфейс окна.
Для установки интерфейса применяется свойство IPlatformApplication.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.
Если же все настроено правильно, то в панели инструментов Visual Studio отобразит подключенное устройство. В моем случае это устройство Nexus 5X. Попутно в списке могут отображаться и другие подключенные устройства и эмуляторы.
И после запуска проекта на выполнение на мобильном устройстве отобразится интерфейс нашего приложения:
Если необходимо установить какую-то новую версию Android API или какие-то компоненты из Android SDK, которые должны применяться с приложением, необходимо перейти к меню Tools -> Android -> Android SDK Manager
Для управления настройками Android проекта можно перейти в свойства проекта. Здесь есть ряд опций для настройки. Прежде всего в секции Android Targets можно настроить целевую применяемую и минимальную версии Android API:
В частности, здесь нам доступны следующие опции:
Target the Android platform: при установке этого флажка .NET MAUI при построении проекта будет также создавать версию приложения для Android.
Target .NET Runtime: применяемая версия .NET
Target Android Framework: целевая версия Android
Minimum Target Android Framework: минимальная версия Android, под которую создается приложение
Кроме того, в секции Android можно установить параметры манифеста Android, а также опции для публикации приложения.