Первое приложение на Android

Последнее обновление: 01.12.2023

Рассмотрим запуск простейшего проекта по умолчанию на ОС 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);

            // определяем графический интерфейс окна приложения
			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.

Тестирование приложения 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, а также опции для публикации приложения.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850