Lekce 2 - První .NET MAUI aplikace Nové
V minulé lekci, Úvod do .NET MAUI, jsme si představili .NET MAUI a připravili jsme si Visual Studio.
V dnešním .NET MAUI tutoriálu si vytvoříme svou první multiplatformní aplikaci. Mimo jiné si ukážeme, jak tuto aplikaci spustit na platformách Android, iOS a Windows, a seznámíme se s výchozí strukturou .NET MAUI projektu.
Založení první multiplatformní aplikace
Jako první .NET MAUI aplikaci si vytvoříme klasickou "Hello world"
aplikaci, jejímž jediným účelem bude vypsání textu. Otevřeme si Visual
Studio a založíme si nový projekt typu .NET MAUI App
:
Jako název zadáme třeba HelloMaui
:
Framework vybereme ten nejnovější možný a potvrdíme vytvoření projektu:
Vygeneroval se nám .NET MAUI projekt s poměrně jednoduchou ukázkovou aplikací.
Spuštění aplikace
Tím, že tuto aplikaci vyvíjíme na Windows, můžeme ji sestavit a spustit na následujících platformách:
- Android – v emulátoru nebo na fyzickém zařízení,
- iOS – pokud máme k dispozici zařízení s macOS nebo iOS,
- Windows.
Níže jsou uvedeny postupy přípravy prostředí a spuštění aplikace na těchto platformách. Aplikace se vždy sestavuje samostatně pro konkrétní platformu, tedy bez závislosti na ostatních platformách. Aplikaci tak můžeme vyvíjet jen pro ty platformy, které nás zajímají.
Pro spuštění aplikace na macOS musíme vyvíjet přímo na macOS.
-
Android emulátor
Začneme s přípravou Android emulátoru, který nám umožní spouštět systém Android v rámci Windows (nebo klidně i macOS). Daný systém se pak bude zvenčí chovat, jako by běžel samostatně na fyzickém zařízení. Díky emulátoru tak nemusíme mít k dispozici žádné fyzické Android zařízení.
Hardwarová akcelerace
Pro co nejvyšší výkon emulátoru je vhodné mít ve funkcích Windows povolenou hardwarovou akceleraci, pokud ji náš počítač podporuje. Ve Windows vyhledávání si najdeme Zapnout nebo vypnout funkce systému Windows (Turn Windows features on or off) a vybereme tuto možnost. Dále zaškrtneme Platforma hypervisoru Windows (Windows Hypervisor Platform) a potvrdíme:
Počítač bude vyžadovat restartování.
Bližší informace k hardwarové akceleraci nalezneme v oficiální dokumentaci.
Vytvoření Android emulátoru
V horní liště Visual Studia nejprve vybereme cílový framework
android
:Dále vybereme jako cílové zařízení
Android Emulator
:Nyní klikneme na tlačítko Start . Pravděpodobně se nám zobrazí dialog pro potvrzení licenčních podmínek Android SDK (sada knihoven pro vývoj na platformě Android). Podmínky potvrdíme:
Případné následující dialogy o povolení změn na zařízení taktéž potvrdíme. Po potvrzení všech dialogů se nám otevře Android Device Manager s možností vytvoření výchozího emulátoru:
Pokud se Android Device Manager neotevřel, znovu klikneme na tlačítko Start .
Vytvoření emulátoru potvrdíme a počkáme, až se emulátor stáhne a nainstaluje:
Po dokončení instalace můžeme Android Device Manager zavřít.
Emulátorů s různými konfiguracemi si můžeme přes Android Device Manager vytvořit libovolné množství. Po instalaci prvního emulátoru otevřeme Android Device Manager volbou Tools → Android → Android Device Manager ve Visual Studiu.
Spuštění aplikace v Android emulátoru
Nyní si již můžeme v našem emulátoru spustit aplikaci. Ujistíme se, že máme vybraný Android jako cílový framework a zároveň náš emulátor jako cílové zařízení:
Po stisknutí tlačítka Start se aplikace sestaví a spustí na emulátoru. První sestavení aplikace bude chvíli trvat:
Aplikaci ukončíme klasicky tlačítkem Stop Debugging ve Visual Studiu.
Fyzické Android zařízení
Pokud máme k dispozici fyzické Android zařízení, můžeme aplikaci spustit i na něm.
Povolení debuggování
Ze všeho nejdříve musíme na našem zařízení povolit ladění (debuggování) přes USB. Přejdeme proto do nastavení zařízení a v sekci O telefonu (About phone) si najdeme Číslo sestavení (Build number). Několikrát na něj klikneme (počet kliknutí se může lišit podle verze Androidu). Systém nás upozorní hláškou, že jsme se stali vývojáři.
V nastavení nově budeme mít k dispozici sekci Možnosti pro vývojáře (Developer options). Otevřeme ji a aktivujeme Ladění USB (USB debugging):
Spuštění aplikace na fyzickém Android zařízení
Nyní již můžeme zařízení připojit USB kabelem k počítači a případně potvrdit dodatečný dialog o povolení debuggování přes USB. Naše zařízení se zobrazí mezi dostupnými zařízeními ve Visual Studiu:
Pokud se nám zařízení ve Visual Studiu nezobrazuje, pravděpodobně nemáme v počítači nainstalované USB ovladače pro naše zařízení. Ovladače získáme na webu výrobce zařízení. Více informací případně nalezneme v oficiální dokumentaci.
Aplikace se sestaví a spustí na našem Android zařízení, když jej vybereme a stiskneme tlačítko Start :
Aplikaci ukončíme tlačítkem Stop Debugging ve Visual Studiu.
-
Spárovaný Mac
V případě, že chceme vyvíjet aplikace pro iOS, potřebujeme mít k dispozici nějaké Mac zařízení se systémem macOS. Mac potřebujeme k tomu, abychom na něm mohli aplikace spouštět a publikovat na App Store. Jelikož používáme Visual Studio na Windows, musíme si s ním náš Mac tzv. spárovat.
Na macOS se iOS aplikace spouští v tzv. iOS simulátoru, který nám umožňuje spouštět systém iOS v rámci macOS. Daný systém se pak zvenčí chová, jako by běžel samostatně na fyzickém zařízení. Díky simulátoru tak nemusíme mít k dispozici žádné fyzické iOS zařízení.
Příprava Macu
Než s párováním začneme, musíme mít naše Windows zařízení a Mac připojené ke stejné síti. Na Mac si pak musíme nainstalovat:
- Mono – Zvolíme nejnovější verzi.
- Vývojové prostředí Xcode – .NET
MAUI ne vždy vyžaduje jeho nejnovější verzi. Jakou verzi Xcode máme zvolit
k námi používané verzi .NET, zjistíme na GitHub wiki .NET MAUI v sekci Release
Versions. Pro instalaci konkrétní verze Xcode doporučujeme použít
aplikaci Xcodes, která značně
zjednodušuje správu více instalací Xcode na jednom Macu. Alternativně lze
konkrétní verzi Xcode stáhnout na xcodereleases.com.
- Nainstalované Xcode musíme nakonec ještě spustit, aby se doinstalovaly všechny komponenty. V nastavení Xcode v sekci Platforms může být případně nutné doinstalovat iOS simulátory:
Dále musíme mít v macOS ještě povolenou funkci vzdáleného přihlášení (remote login). V předvolbách systému (System Preferences) přejdeme do sekce Sdílení (Sharing), kde zaškrtneme Vzdálené přihlášení (Remote Login) spolu s plným přístupem a povolíme jej všem uživatelům:
Všimněme si IP adresy našeho Macu, tu budeme později potřebovat.
Spárování macOS s Visual Studiem
Nyní se již můžeme vrátit zpět do Visual Studia na Windows. V horním menu vybereme Tools → iOS → Pair to Mac. V nově otevřeném okně buď zvolíme náš Mac a klikneme na Connect…, anebo klikneme na Add Mac… a připojíme se k němu pomocí jeho IP adresy:
Budeme vyzváni k zadání přihlašovacích údajů k našemu účtu na Macu:
Po přihlášení se nám na Mac doinstalují potřebné knihovny a nástroje, což může chvíli trvat. Zda jsme se úspěšně přihlásili, poznáme podle ikony u našeho Macu:
Při každém dalším spuštění Visual Studia stačí pro opětovné spárování zopakovat tento postup.
Automatické spárování
V nastavení Visual Studia pak případně můžeme povolit automatické spárování při spuštění Visual Studia. V horním menu vybereme Tools → Options… a přejdeme do sekce Xamarin → iOS Settings. Zde můžeme zaškrtnout možnost Enable auto connection to known Macs. Taktéž se ujistíme, že máme zaškrtnutou možnost Remote Simulator to Windows, díky níž budeme moci ovládat iOS simulátor přímo z Windows:
Podrobný a vždy aktuální návod ke spárování macOS s Visual Studiem nalezneme v oficiální dokumentaci.
Spuštění aplikace v iOS simulátoru
Nyní si můžeme aplikaci konečně spustit. V horní liště Visual Studia nejprve vybereme cílový framework
ios
:Dále vybereme jako cílové zařízení některý z dostupných iOS simulátorů:
Po stisknutí tlačítka Start se aplikace sestaví a spustí na simulátoru. První sestavení aplikace bude chvíli trvat:
iOS simulátor je možné si zobrazit i přímo na Macu, stačí jen vyhledat a spustit aplikaci
Simulator.app
:Aplikaci ukončíme klasicky tlačítkem Stop Debugging ve Visual Studiu.
Hot restart
Pokud máme k dispozici fyzické iOS zařízení, můžeme na něj naši aplikaci nahrát pomocí technologie hot restart. Tato technologie má však jistá omezení a navíc vyžaduje placený Apple Developer účet. Více informací nalezneme v oficiální dokumentaci.
-
Spuštění aplikace na Windows
Spuštění aplikace na Windows je poměrně přímočaré. V horní liště Visual Studia nejprve vybereme cílový framework
windows
:Po stisknutí tlačítka Start se aplikace sestaví, nainstaluje a spustí. První sestavení aplikace bude chvíli trvat:
Vývojářský režim
Ještě před instalací aplikace pravděpodobně budeme vyzváni k povolení vývojářského režimu, pokud jsme tak ještě neučinili. V nastavení Windows stačí přejít do sekce Systém (System) → Pro vývojáře (For developers) a povolit Vývojářský režim (Developer Mode):
.NET MAUI je poměrně složitou technologií. Snaží se totiž propojit množství různých komponent, které jsou vyvíjeny nezávisle na sobě různými společnostmi. Není proto překvapením, že se jednou začas mohou objevit nějaké chyby a problémy. Vždy aktuální postup sestavení a spuštění .NET MAUI aplikace nalezneme v oficiální dokumentaci. Pokud máme s čímkoli problém, nahlédneme nejprve tam. Mimo jiné se tam nachází i přehled nejčastěji se vyskytujících problémů a jejich řešení. Přehled uživateli nahlášených chyb a potenciálních řešení nalezneme případně v GitHub repozitáři .NET MAUI.
Struktura .NET MAUI projektu
Když už víme, jak projekt sestavit a spustit, můžeme se podívat, jakými adresáři a soubory je ve výchozím stavu tvořen:
Pro nás jsou nejzajímavější:
Platforms/
– Adresář pro soubory s kódem specifickým pro konkrétní platformu.Resources/
– Adresář pro obrázky, ikony, fonty, styly a další soubory, které chceme v aplikaci používat.App.xaml
aApp.xaml.cs
– Soubory, jejichž obsah reprezentuje celou aplikaci.AppShell.xaml
aAppShell.xaml.cs
– Soubory, jejichž obsah reprezentuje navigaci aplikace.MainPage.xaml
aMainPage.xaml.cs
– Soubory, jejichž obsah reprezentuje hlavní stránku aplikace.MauiProgram.cs
– Vstupní bod aplikace.
Hlavní stránka MainPage
V .NET MAUI jsou všechny komponenty aplikace typicky tvořeny dvěma soubory:
- XAML souborem popisujícím vzhled a obsah komponenty pomocí značkovacího jazyka XAML. Tento soubor tedy představuje prezentační část dané komponenty.
- C# souborem obsahujícím třídu s logikou komponenty – tato třída a její kód se též označují jako code behind.
Každá komponenta je vždy tvořena C# třídou a případně nepovinně ještě jedním XAML souborem.
Code behind
Podívejme se do souboru MainPage.xaml.cs
, tedy na code behind
hlavní stránky aplikace:
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ódu je hlavní stránka aplikace reprezentována třídou
MainPage
, která dědí od třídy ContentPage
. S code
behind budeme pracovat až v budoucích lekcích. Zatím zde pouze smažeme
metodu OnCounterClicked()
a atribut count
obsahující
počet kliknutí:
namespace HelloMaui { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } } }
Metoda OnCounterClicked()
řeší změnu obsahu tlačítka při
kliknutí. Tlačítko ani tuto metodu však nebudeme potřebovat.
XAML
Nyní si otevřeme soubor MainPage.xaml
s XAML kódem
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 zde elementy:
<ContentPage>
– samotná stránka,<ScrollView>
– umožňuje scrollovat svým obsahem,<VerticalStackLayout>
– slouží ke vkládání obsahu pod sebe,<Image>
– obrázek,<Label>
– textový popisek,<Button>
– tlačítko.
XAML a tyto elementy si blíže popíšeme dále v kurzu. Jak již bylo
řečeno, v naší jednoduché "Hello world" aplikaci budeme chtít vypsat pouze
krátký text Pozdrav z .NET MAUI aplikace
. Využijeme k
tomu element <Label>
, jímž nahradíme výchozí 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ýsledek
Aplikaci spusťme, bude vypadat následovně:
Máme hotovou svou první .NET MAUI aplikaci, gratulujeme! Zdrojové kódy této aplikace máte případně k dispozici níže ke stažení.
V příští lekci, Jazyk XAML v .NET MAUI, se blíže podíváme na jazyk XAML, který se používá k návrhu komponent v .NET MAUI. Zmíníme elementy, jmenné prostory a entity.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 4x (226.81 kB)
Aplikace je včetně zdrojových kódů v jazyce C#