IT개발

.NET MAUI: 크로스플랫폼 앱 개발의 미래

HyochulLab 2025. 3. 11. 08:45

.NET MAUI: 크로스플랫폼 앱 개발의 미래

1. .NET MAUI란?

**.NET MAUI (Multi-platform App UI)**는 마이크로소프트에서 개발한 크로스플랫폼 애플리케이션 프레임워크로, 하나의 코드베이스로 iOS, Android, Windows, macOS에서 실행되는 애플리케이션을 만들 수 있습니다.

주요 특징

  • 단일 코드베이스: 하나의 코드로 여러 플랫폼 지원
  • 네이티브 UI: 각 플랫폼의 네이티브 UI 컨트롤을 활용
  • .NET 기반: C#과 .NET 기술을 사용
  • MVU 및 MVVM 패턴 지원
  • 핫 리로드 지원: UI 변경 시 즉시 반영
  • 강력한 성능 및 최적화

2. .NET MAUI 개발 환경 설정

필수 도구

운영체제 필수 소프트웨어

Windows Visual Studio 2022, .NET SDK 6 이상
Mac Visual Studio for Mac, .NET SDK 6 이상, Xcode

프로젝트 생성 방법

Visual Studio에서 생성

  1. Visual Studio 2022 실행
  2. "새 프로젝트 만들기" 선택
  3. .NET MAUI 앱 템플릿 선택
  4. 프로젝트 이름 및 경로 설정 후 생성

명령어로 생성

dotnet new maui -n MyMauiApp
cd MyMauiApp
dotnet build
dotnet run

3. .NET MAUI 프로젝트 구조

📂 MyMauiApp
 ├── 📂 Platforms  # Android, iOS, macOS, Windows 코드
 ├── 📂 Resources  # 이미지, 폰트, 스타일 등
 ├── 📂 Views      # XAML UI 코드
 ├── 📂 Models     # 데이터 모델
 ├── 📂 ViewModels # MVVM 패턴을 위한 ViewModel
 ├── App.xaml      # 전역 스타일 및 테마
 ├── MainPage.xaml # 메인 페이지 UI
 ├── MauiProgram.cs # 앱 초기 설정

4. 기본 UI 개발 (XAML & C#)

XAML UI 코드 예제

MainPage.xaml

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyMauiApp.MainPage">
    <VerticalStackLayout>
        <Label Text="Hello, .NET MAUI!" FontSize="24" HorizontalOptions="Center"/>
        <Button Text="Click Me!" Clicked="OnButtonClicked"/>
    </VerticalStackLayout>
</ContentPage>

C# 이벤트 핸들러 예제

MainPage.xaml.cs

public partial class MainPage : ContentPage
{
    int count = 0;
    
    public MainPage()
    {
        InitializeComponent();
    }

    private void OnButtonClicked(object sender, EventArgs e)
    {
        count++;
        (sender as Button).Text = $"Clicked {count} times!";
    }
}

5. MVVM 패턴 적용

MVVM (Model-View-ViewModel) 패턴을 사용하면 UI와 로직을 분리하여 유지보수를 용이하게 할 수 있습니다.

Model (데이터 모델)

public class TodoItem
{
    public string Title { get; set; }
    public bool IsCompleted { get; set; }
}

ViewModel (비즈니스 로직)

using System.Collections.ObjectModel;
using System.ComponentModel;

public class TodoViewModel : INotifyPropertyChanged
{
    public ObservableCollection<TodoItem> TodoItems { get; set; }

    public TodoViewModel()
    {
        TodoItems = new ObservableCollection<TodoItem>
        {
            new TodoItem { Title = "Buy groceries", IsCompleted = false },
            new TodoItem { Title = "Read a book", IsCompleted = true }
        };
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

View (XAML)

<ListView ItemsSource="{Binding TodoItems}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextCell Text="{Binding Title}" Detail="{Binding IsCompleted}"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

ViewModel 연결

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
        BindingContext = new TodoViewModel();
    }
}

6. 네이티브 API 활용 예제

디바이스 정보 가져오기

string model = DeviceInfo.Model;
string manufacturer = DeviceInfo.Manufacturer;
string osVersion = DeviceInfo.VersionString;

위치 정보 가져오기

var location = await Geolocation.GetLocationAsync();
Console.WriteLine($"Latitude: {location.Latitude}, Longitude: {location.Longitude}");

7. 빌드 및 배포

Android 빌드

dotnet publish -c Release -f net7.0-android

iOS 빌드

dotnet build -c Release -f net7.0-ios

Windows 빌드

dotnet publish -c Release -f net7.0-windows10.0.19041.0

8. .NET MAUI 학습 자료

마무리

.NET MAUI는 강력한 크로스플랫폼 지원과 성능 최적화를 제공하는 .NET 기반의 최신 앱 개발 프레임워크입니다. Xamarin을 사용하던 개발자나 .NET 개발자라면 MAUI를 통해 모바일, 데스크톱, 웹을 아우르는 애플리케이션을 손쉽게 개발할 수 있습니다.

지금 바로 .NET MAUI를 시작해보세요!