2. diel - Prvý .NET MAUI aplikácie Nové
V minulej lekcii, Úvod do .NET MAUI , sme si predstavili .NET MAUI a pripravili Visual Studio.
V dnešnom .NET MAUI tutoriále si vytvoríme svoju prvú multiplatformnú aplikáciu. Okrem iného si ukážeme, ako túto aplikáciu spustiť na platformách Android, iOS a Windows, a zoznámime sa s predvolenou štruktúrou.NET MAUI projektu.
Založenie prvej multiplatformnej aplikácie
Ako prvú .NET MAUI aplikáciu si vytvoríme klasickú "Hello world"
aplikáciu, ktorej jediným účelom bude vypísanie textu. Otvoríme si Visual
Studio a založíme si nový projekt typu .NET MAUI App
:
Ako názov zadáme napríklad HelloMaui
:
Framework vyberieme ten najnovší možný a potvrdíme vytvorenie projektu:
Vygeneroval sa nám .NET MAUI projekt s pomerne jednoduchou ukážkovou aplikáciou.
Spustenie aplikácie
Tým, že vyvíjame na Windows, tak túto aplikáciu môžeme zostaviť a spustiť na nasledujúcich platformách:
- Android – v emulátore alebo na fyzickom zariadení,
- iOS – ak máme k dispozícii zariadenia s macOS alebo iOS,
- Windows.
Na spustenie aplikácie na macOS musíme vyvíjať priamo na macOS.
-
Android emulátor
Začneme s prípravou Android emulátora, ktorý nám umožní spúšťať systém Android v rámci Windows (alebo pokojne aj macOS). Daný systém sa potom bude zvonku správať ako by bežal samostatne na fyzickom zariadení. Vďaka emulátoru tak nemusíme mať k dispozícii žiadne fyzické Android zariadenie.
Hardvérová akcelerácia
Pre čo najvyšší výkon emulátora je vhodné mať vo funkciách Windows povolenú hardvérovú akceleráciu, pokiaľ ju náš počítač podporuje. Vo Windows vyhľadávaní si nájdeme Zapnúť alebo vypnúť funkcie systému Windows ( Turn Windows features on or off) a vyberieme túto možnosť. Ďalej zaškrtneme Platforma hypervízora Windows (Windows Hypervisor Platform) a potvrdíme:
Počítač bude vyžadovať reštartovanie.
Bližšie informácie k hardvérovej akcelerácii nájdeme v oficiálnej dokumentácii.
Vytvorenie Android emulátora
V hornej lište Visual Studio najprv vyberieme cieľový framework
android
:Ďalej vyberieme ako cieľové zariadenie
Android Emulator
:Teraz klikneme na tlačidlo Štart
. Pravdepodobne sa nám zobrazí dialóg na potvrdenie licenčných podmienok Android SDK (sada knižníc pre vývoj na Android). Podmienky potvrdíme:Prípadné nasledujúce dialógy o povolení zmien na zariadení taktiež potvrdíme. Po potvrdení všetkých dialógov sa nám otvorí Android Device Manager s možnosťou vytvorenia východiskového emulátora:
Ak sa Android Device Manager neotvoril, znova klikneme na tlačidlo Štart
.Vytvorenie emulátora potvrdíme a počkáme až sa emulátor stiahne a nainštaluje:
Po dokončení inštalácie môžeme Android Device Manager zavrieť.
Emulátorov s rôznymi konfiguráciami si môžeme cez Android Device Manager vytvoriť ľubovoľné množstvo. Po inštalácii prvého emulátora Android Device Manager otvoríme voľbou Tools → Android → Android Device Manager vo Visual Studio.
Spustenie aplikácie v Android emulátore
Teraz si už môžeme aplikáciu v našom emulátore spustiť. Uistíme sa, že máme vybraný Android ako cieľový framework a zároveň náš emulátor ako cieľové zariadenie:
Po stlačení tlačidla Štart
sa aplikácia zostaví a spustí na emulátore. Prvé zostavenie aplikácie bude chvíľu trvať:Aplikáciu ukončíme klasicky tlačidlom Stop Debugging
vo Visual Studio.Fyzické Android zariadenia
Pokiaľ máme k dispozícii fyzické Android zariadenie, môžeme aplikáciu spustiť aj na ňom.
Povolenie debuggovanie
Zo všetkého najskôr musíme na našom zariadení povoliť ladenie (debuggovanie) cez USB. Prejdeme preto do nastavenia zariadenia av sekcii O telefóne ( About phone) si nájdeme Číslo zostavenia (Build number). Niekoľkokrát naň klikneme (počet kliknutí sa môže líšiť podľa verzie Android). Systém nás upozorní hláškou, že sme sa stali vývojármi.
V nastavení nanovo budeme mať k dispozícii sekciu Možnosti pre vývojárov (Developer options). Otvoríme ju a aktivujeme Ladenie USB (USB debugging):
Spustenie aplikácie na fyzickom Android zariadení
Teraz už môžeme zariadenie pripojiť USB káblom k počítaču a prípadne potvrdiť dodatočný dialóg o povolení debuggovania cez USB. Naše zariadenie sa zobrazí medzi dostupnými zariadeniami vo Visual Studio:
Ak sa nám zariadenie vo Visual Studio nezobrazuje, pravdepodobne nemáme v počítači nainštalované USB ovládače pre naše zariadenia. Ovládače získame na webe výrobcu zariadenia. Viac informácií prípadne nájdeme v oficiálnej dokumentácii.
Aplikácia sa zostaví a spustí na našom Android zariadení, keď ho vyberieme a stlačíme tlačidlo Štart
:Aplikáciu ukončíme tlačidlom Stop Debugging
vo Visual Studio. -
Spárovaný Mac
V prípade, že chceme vyvíjať aplikácie pre iOS, tak potrebujeme mať k dispozícii nejaké Mac zariadenia so systémom macOS. Mac potrebujeme na to, aby sme na ňom mohli aplikácie spúšťať a publikovať na App Store. Keďže používame Visual Studio na Windows, musíme si s ním náš Mac tzv. spárovať.
Na macOS sa iOS aplikácia spúšťa v tzv. iOS simulátore, ktorý nám umožňuje spúšťať systém iOS v rámci macOS. Daný systém sa potom zvonku chová ako by bežal samostatne na fyzickom zariadení. Vďaka simulátoru tak nemusíme mať k dispozícii žiadne fyzické iOS zariadenie.
Príprava Macu
Než s párovaním začneme, musíme mať naše Windows zariadenie a Mac pripojené k rovnakej sieti. Na Mac si potom musíme nainštalovať:
- Mono – Zvolíme najnovšiu verziu.
- Vývojové prostredie Xcode – .NET MAUI nie vždy vyžaduje jeho najnovšiu verziu. Akú verziu Xcode zvoliť k nami používanej verzii .NET zistíme na GitHub wiki MAUI v sekcii Release Versions. Pre inštaláciu konkrétnej verzie Xcode odporúčam použiť aplikáciu Xcodes, ktorá značne zjednodušuje správu viacerých inštalácií Xcode na jednom Macu. Alternatívne je možné konkrétnu verziu Xcode stiahnuť na xcodereleases.com Nainštalovaný Xcode musíme nakoniec ešte spustiť, aby sa doinštalovali všetky komponenty, av nastavení Xcode v sekcii Platforms prípadne doinštalovať iOS simulátory:
Ďalej musíme mať v macOS ešte povolenú funkciu vzdialeného prihlásenia (remote login). V predvoľbách systému (System Preferences) prejdeme do sekcie Zdieľanie (Sharing), kde zaškrtneme Vzdialené prihlásenie (Remote Login) spolu s plným prístupom a povolíme ho všetkým užívateľom:
Všimnime si IP adresy nášho Macu, tú budeme neskôr potrebovať.
Spárovanie macOS s Visual Studio
Teraz sa už môžeme vrátiť späť do Visual Studio na Windows. V hornom menu vyberieme Tools → iOS → Pair to Mac. V novo otvorenom okne buď zvolíme náš Mac a klikneme na Connect…, alebo klikneme na Add Mac… a pripojíme sa k nemu pomocou jeho IP adresy:
Budeme vyzvaní na zadanie prihlasovacích údajov k nášmu účtu na Macu:
Po prihlásení sa nám na Mac doinštalujú potrebné knižnice a nástroje, môže to chvíľu trvať. Ak sme sa úspešne prihlásili, spoznáme podľa ikony u nášho Macu:
Pri každom ďalšom spustení Visual Studio stačí pre opätovné spárovanie zopakovať tento postup.
Automatické spárovanie
V nastavení Visual Studio potom prípadne môžeme povoliť automatické spárovanie pri spustení Visual Studio. V hornom menu vyberieme Tools → Options… a prejdeme do sekcie Xamarin → iOS Settings. Tu môžeme zaškrtnúť možnosť Enable auto connection to known Macs. Taktiež sa uistíme, že máme zaškrtnutú možnosť Remote Simulator to Windows, vďaka ktorej budeme môcť ovládať iOS Simulátor priamo z Windows:
Podrobný a vždy aktuálny návod na spárovanie macOS s Visual Studio nájdeme v oficiálnej dokumentácii.
Spustenie aplikácie v iOS simulátore
Teraz si môžeme aplikáciu konečne spustiť. V hornej lište Visual Studio najprv vyberieme cieľový framework
ios
:Ďalej vyberieme ako cieľové zariadenie niektorý z dostupných iOS simulátorov:
Po stlačení tlačidla Štart
sa aplikácia zostaví a spustí na simulátore. Prvé zostavenie aplikácie bude chvíľu trvať:iOS simulátor je možné si zobraziť aj priamo na Mace, stačí len vyhľadať a spustiť aplikáciu
Simulator.app
:Aplikáciu ukončíme klasicky tlačidlom Stop Debugging
vo Visual Studio.Hot reštart
Pokiaľ máme k dispozícii fyzické iOS zariadenie, môžeme naň našu aplikáciu nahrať pomocou technológie hot restart. Táto technológia má však isté obmedzenia a navyše vyžaduje platený Apple Developer účet. Viac informácií nájdeme v oficiálnej dokumentácii.
-
Spustenie aplikácie na Windows
Spustenie aplikácie na Windows je pomerne priamočiare. V hornej lište Visual Studio najprv vyberieme cieľový framework
windows
:Po stlačení tlačidla Štart
sa aplikácia zostaví, nainštaluje a spustí. Prvé zostavenie aplikácie bude chvíľu trvať:Vývojársky režim
Ešte pred inštaláciou aplikácie pravdepodobne budete vyzvaní na povolenie vývojárskeho režimu, ak ste tak ešte neurobili. V nastavení Windows stačí prejsť do sekcie Systém (System) → Pre vývojárov (For developers) a povoliť Vývojársky režim (Developer Mode):
Štruktúra .NET MAUI projektu
Keď už vieme, ako projekt zostaviť a spustiť, tak sa môžeme pozrieť akými adresármi a súbormi je v predvolenom stave tvorený:
Pre nás sú najzaujímavejšie:
Platforms/
– Adresár pre súbory s kódom špecifickým pre konkrétnu platformu.Resources/
– Adresár pre obrázky, ikony, fonty, štýly a ďalšie súbory, ktoré chceme v aplikácii používať.App.xaml
aApp.xaml.cs
– Súbory, ktorých obsah reprezentuje celú aplikáciu.AppShell.xaml
aAppShell.xaml.cs
– Súbory, ktorých obsah reprezentuje navigáciu aplikácie.MainPage.xaml
aMainPage.xaml.cs
– Súbory, ktorých obsah reprezentuje hlavnú stránku aplikácie.MauiProgram.cs
– Vstupný bod aplikácie.
MainPage
V .NET MAUI sú všetky komponenty aplikácie typicky tvorené dvoma súbormi:
- XAML súborom popisujúcim vzhľad a obsah komponentu pomocou značkovacieho jazyka XAML. Tento súbor teda predstavuje prezentačnú časť daného komponentu.
- C# súborom obsahujúcim triedu s logikou komponentu – táto trieda a jej kód sa tiež označujú ako code behind.
Code behind
Pozrime sa do súboru MainPage.xaml.cs
, teda na code behind
hlavnej stránky aplikácie:
namespace HelloMaui { public partial class MainPage : ContentPage { int count = 0; public MainPage() { InitializeComponent(); } private void OnCounterClicked(object sender, EventArgs e) { count++; if (count == 1) CounterBtn.Text = $"Clicked {count} time"; else CounterBtn.Text = $"Clicked {count} times"; SemanticScreenReader.Announce(CounterBtn.Text); } } }
Vidíme, že v C# kóde je hlavná stránka aplikácie reprezentovaná
triedou MainPage
, ktorá dedí od triedy ContentPage
.
S code behind budeme pracovať až v budúcich lekciách. Zatiaľ tu iba
vymažeme metódu OnCounterClicked()
a atribút count
obsahujúci počet kliknutí:
namespace HelloMaui { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } } }
Metóda OnCounterClicked()
rieši zmenu obsahu tlačidla pri
kliknutí. Tlačidlo ani túto metódu však nebudeme potrebovať.
XAML
Teraz si otvoríme súbor MainWindow.xaml
so XAML kódom
stránky:
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="HelloMaui.MainPage"> <ScrollView> <VerticalStackLayout Padding="30,0" Spacing="25"> <Image Source="dotnet_bot.png" HeightRequest="185" Aspect="AspectFit" SemanticProperties.Description="dot net bot in a race car number eight" /> <Label Text="Hello, World!" Style="{StaticResource Headline}" SemanticProperties.HeadingLevel="Level1" /> <Label Text="Welcome to .NET Multi-platform App UI" Style="{StaticResource SubHeadline}" SemanticProperties.HeadingLevel="Level2" SemanticProperties.Description="Welcome to dot net Multi platform App U I" /> <Button x:Name="CounterBtn" Text="Click me" SemanticProperties.Hint="Counts the number of times you click" Clicked="OnCounterClicked" HorizontalOptions="Fill" /> </VerticalStackLayout> </ScrollView> </ContentPage>
Vidíme tu elementy:
<ContentPage>
– samotná stránka,<ScrollView>
– umožňuje scrollovať svojim obsahom,<VerticalStackLayout>
– slúži na vkladanie obsahu pod seba,<Image>
– obrázok,<Label>
– textový popisok,<Button>
– tlačidlo.
Pozdrav z .NET MAUI aplikácie
.
Využijeme na to element <Label>
, ktorým nahradíme
východiskový obsah stránky:
<?xml version="1.0" encoding="utf-8"?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="HelloMaui.MainPage"> <ScrollView> <VerticalStackLayout Padding="30,0" Spacing="25"> <Label> Pozdrav z .NET MAUI aplikace </Label> </VerticalStackLayout> </ScrollView> </ContentPage>
Výsledok
Aplikáciu spustíme, bude vyzerať nasledovne:
- .<>
- .<>
- .<>
V budúcej lekcii, Pozíciovanie v .NET MAUI , sa naučíme pozíciovať ovládacie prvky na stránke. Spomenieme layouty, absolútnu a relatívnu pozíciu, vonkajšie a vnútorné okraje a veľkosť.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 4x (226.81 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#