Cílení na více platforem z jednoho projektu .NET MAUI

Jednoúčelové uživatelské rozhraní aplikace .NET (.NET MAUI) využívá prostředí pro vývoj specifické pro platformu, se kterými se obvykle setkáte při vývoji aplikací, a abstrahuje je do jednoho sdíleného projektu, který může cílit na Android, iOS, macOS a Windows.

Jeden projekt .NET MAUI poskytuje zjednodušené a konzistentní prostředí pro vývoj pro různé platformy bez ohledu na cílové platformy. Jeden projekt .NET MAUI poskytuje následující funkce:

  • Jeden sdílený projekt, který může cílit na Android, iOS, macOS, Tizen a Windows.
  • Zjednodušený výběr cíle ladění pro spouštění aplikací .NET MAUI.
  • Sdílené soubory zdrojů v rámci jednoho projektu.
  • Jeden manifest aplikace, který určuje název, ID a verzi aplikace.
  • Přístup k rozhraním API a nástrojům pro konkrétní platformu v případě potřeby
  • Vstupní bod jedné multiplatformní aplikace.

Jeden projekt .NET MAUI je povolený pomocí cílení na více verzí a použití projektů ve stylu sady SDK.

Soubory prostředků

Správa prostředků pro vývoj multiplatformních aplikací byla tradičně problematická, protože každá platforma má svůj vlastní přístup ke správě prostředků. Každá platforma má například různé požadavky na image, které obvykle zahrnují vytváření více verzí jednotlivých imagí v různých rozlišeních. Proto musí být jeden obrázek obvykle duplikován vícekrát v různých rozlišeních, přičemž výsledné obrázky musí na každé platformě používat různé konvence názvů souborů a složek.

Jeden projekt .NET MAUI umožňuje ukládání souborů prostředků do jednoho umístění při využívání na jednotlivých platformách. To zahrnuje písma, obrázky, ikonu aplikace, úvodní obrazovku, nezpracované prostředky a soubory CSS pro stylování aplikací .NET MAUI. Každý soubor prostředků image se používá jako zdrojová image, ze které se generují obrázky požadovaných rozlišení pro každou platformu v době sestavení.

Poznámka:

Katalogy prostředků pro iOS se v současné době nepodporují v jednotlivých projektech .NET MAUI.

Soubory prostředků by se obvykle měly umístit do složky Zdroje projektu aplikace .NET MAUI nebo do podřízených složek složky Prostředky a musí mít správně nastavenou akci sestavení. Následující tabulka uvádí akce sestavení pro jednotlivé typy souborů prostředků:

Resource Akce sestavení
Ikona aplikace MauiIcon
Písma MauiFont
Obrázky MauiImage
Úvodní obrazovka MauiSplashScreen
Nezpracované prostředky MauiAsset
Soubory CSS MauiCss

Poznámka:

Soubory XAML se také ukládají do projektu aplikace .NET MAUI a při vytváření šablon projektů a položek se automaticky přiřadí akce sestavení MauiXaml . Do složky Zdroje projektu aplikace se ale obvykle umístí jenom slovníky prostředků XAML.

Při přidání souboru zdroje do projektu aplikace .NET MAUI se v souboru projektu vytvoří odpovídající položka zdroje s výjimkou souborů CSS. Následující snímek obrazovky ukazuje typickou složku Resources obsahující podřízené složky pro každý typ prostředku:

Image and font resources screenshot.

Akce sestavení pro soubor prostředků bude správně nastavena, pokud byl prostředek přidán do správné podřízené složky Resources .

Podřízené složky složky Zdroje lze určit pro každý typ zdroje úpravou souboru projektu pro vaši aplikaci:

<ItemGroup>
    <!-- Images -->
    <MauiImage Include="Resources\Images\*" />

    <!-- Fonts -->
    <MauiFont Include="Resources\Fonts\*" />

    <!-- Raw assets -->
    <MauiAsset Include="Resources\Raw\*" />
</ItemGroup>

Zástupný znak (*) označuje, že všechny soubory v rámci složky budou považovány za zadaný typ prostředku. Kromě toho je možné zahrnout všechny soubory z podřízených složek:

<ItemGroup>
    <!-- Images -->
    <MauiImage Include="Resources\Images\**\*" />
</ItemGroup>

V tomto příkladu dvojitý zástupný znak (***) určuje, že složka Obrázky může obsahovat podřízené složky. Proto určuje, <MauiImage Include="Resources\Images\**\*" /> že všechny soubory ve složce Resources\Images nebo všechny podřízené složky složky Obrázky se použijí jako zdrojové obrázky, ze kterých se generují obrázky požadovaného rozlišení pro každou platformu.

Prostředky specifické pro platformu přepíší své sdílené protějšky prostředků. Pokud máte například obrázek specifický pro Android umístěný na platformách\Android\Resources\drawable-xhdpi\logo.png a poskytnete také sdílený obrázek Resources\Images\logo.svg , použije se soubor SVG (Scalable Vector Graphics) k vygenerování požadovaných imagí Androidu s výjimkou obrázku XHDPI, který už existuje jako obrázek specifický pro platformu.

Ikony aplikací

Do projektu aplikace můžete přidat ikonu aplikace přetažením obrázku do složky Resources\AppIcon projektu, kde se akce sestavení automaticky nastaví na MauiIcon. Tím se vytvoří odpovídající položka v souboru projektu:

<MauiIcon Include="Resources\AppIcon\appicon.svg" />

V době sestavení se ikona aplikace změní na správné velikosti cílové platformy a zařízení. Ikony aplikace se změněnou velikostí se pak přidají do balíčku aplikace. Ikony aplikací se mění na několik rozlišení, protože mají více použití, včetně toho, že se používají k reprezentaci aplikace na zařízení a v App Storu.

Další informace najdete v tématu Přidání ikony aplikace do projektu aplikace .NET MAUI.

Obrázky

Obrázek můžete do projektu aplikace přidat přetažením do složky Resources\Images projektu, kde se její akce sestavení automaticky nastaví na MauiImage. Tím se vytvoří odpovídající položka v souboru projektu:

<MauiImage Include="Resources\Images\logo.svg" />

V době sestavení je možné změnit velikost obrázků na správné rozlišení cílové platformy a zařízení. Výsledné obrázky se pak přidají do balíčku aplikace.

Další informace najdete v tématu Přidání obrázků do projektu aplikace .NET MAUI.

Písma

Do projektu aplikace je možné přidat písmo skutečného typu (TTF) nebo písmo typu typu (OTF), a to tak, že ho přetáhnete do složky Resources\Fonts projektu, kde se akce sestavení automaticky nastaví na MauiFont. Tím se vytvoří odpovídající položka podle písma v souboru projektu:

<MauiFont Include="Resources\Fonts\OpenSans-Regular.ttf" />

V době sestavení se písma zkopírují do balíčku aplikace.

Další informace najdete v tématu Písma.

Úvodní obrazovka

Úvodní obrazovku můžete do projektu aplikace přidat přetažením obrázku do složky Resources\Splash projektu, kde se akce sestavení automaticky nastaví na MauiSplashScreen. Tím se vytvoří odpovídající položka v souboru projektu:

<ItemGroup>
  <MauiSplashScreen Include="Resources\Splash\splashscreen.svg" />
</ItemGroup>

V době sestavení se obrázek úvodní obrazovky změní na správnou velikost cílové platformy a zařízení. Do balíčku aplikace se pak přidá změněná úvodní obrazovka.

Další informace najdete v tématu Přidání úvodní obrazovky do projektu aplikace .NET MAUI.

Nezpracované prostředky

Do projektu aplikace můžete přidat nezpracovaný soubor assetu, například HTML, JSON a video, přetažením do složky Resources\Raw projektu, kde se akce sestavení automaticky nastaví na MauiAsset. Tím se v souboru projektu vytvoří odpovídající položka na prostředek:

<MauiAsset Include="Resources\Raw\index.html" />

Nezpracované prostředky pak můžou využívat ovládací prvky podle potřeby:

<WebView Source="index.html" />

V době sestavení se nezpracované prostředky zkopírují do balíčku aplikace. Informace o zakázání balení prostředků naleznete v tématu Zakázání balení souborů assetu.

Soubory CSS

Aplikace .NET MAUI můžou být částečně stylované pomocí souborů CSS (Cascading Style Sheet). Soubory CSS můžete do projektu aplikace přidat tak, že je přetáhnete do libovolné složky projektu a nastavíte akci sestavení na MauiCss v okně Vlastnosti .

Soubory CSS musí být načteny StyleSheet třídou před přidáním do :ResourceDictionary

<Application ...>
    <Application.Resources>
        <StyleSheet Source="/Resources/styles.css" />
    </Application.Resources>
</Application>

Další informace najdete v tématu Aplikace stylu pomocí šablon stylů CSS.

Manifest aplikace

Každá platforma používá vlastní soubor manifestu nativní aplikace k určení informací, jako je název aplikace, ID, verze a další. Jeden projekt .NET MAUI umožňuje zadat tato běžná data aplikace v jednom umístění v souboru projektu.

Pokud chcete zadat data manifestu sdílené aplikace pro projekt, otevřete místní nabídku projektu v Průzkumník řešení a pak zvolte Vlastnosti. Název aplikace, ID a verze je pak možné zadat v MAUI Shared > General:

.NET MAUI app manifest screenshot.

V době sestavení se data manifestu sdílené aplikace sloučí s daty specifických pro platformu v souboru manifestu nativní aplikace, aby se vytvořil soubor manifestu balíčku aplikace. Další informace najdete v tématu Konfigurace projektu v .NET MAUI – MAUI Sdílené.

Kód specifický pro platformu

Projekt aplikace .NET MAUI obsahuje složku Platformy s každou podřízenou složkou představující platformu, na kterou může .NET MAUI cílit:

Platform folders screenshot.

Složky pro každou platformu obsahují prostředky specifické pro platformu a kód, který spustí aplikaci na každé platformě:

Platform-specific code screenshot.

V době sestavení systém sestavení obsahuje kód pouze z každé složky při sestavování pro danou konkrétní platformu. Když například sestavíte soubory pro Android ve složce Platformy\Android , budou součástí balíčku aplikace, ale soubory v ostatních složkách Platformy nebudou. Tento přístup používá více cílení na více platforem z jednoho projektu. Cílení na více platforem lze kombinovat s částečnými třídami a částečnými metodami pro vyvolání nativních funkcí platformy z kódu napříč platformami. Další informace najdete v tématu Vyvolání kódu platformy.

Kromě tohoto výchozího přístupu pro cílení na více adres můžou být aplikace .NET MAUI také více cílené na základě vlastních kritérií názvu souboru a složky. Díky tomu můžete projekt aplikace .NET MAUI strukturovat tak, abyste nemuseli kód platformy umístit do podřízených složek složky Platformy . Další informace najdete v tématu Konfigurace cílení na více verzí.

Cílení na více platforem lze také kombinovat s podmíněnou kompilací, aby byl kód cílený na konkrétní platformy:

#if ANDROID
                  handler.NativeView.SetBackgroundColor(Colors.Red.ToNative());
#elif IOS
                  handler.NativeView.BackgroundColor = Colors.Red.ToNative();
                  handler.NativeView.BorderStyle = UIKit.UITextBorderStyle.Line;
#elif WINDOWS
                  handler.NativeView.Background = Colors.Red.ToNative();
#endif

Další informace o podmíněné kompilaci naleznete v tématu Podmíněné kompilace.

Vstupní bod aplikace

Složky Platformy obsahují kód specifický pro platformu, který aplikaci spouští na každé platformě, ale aplikace .NET MAUI mají jeden vstupní bod aplikace pro různé platformy. Každý vstupní bod platformy volá metodu CreateMauiApp statické MauiProgram třídy v projektu aplikace a vrátí vstupní MauiAppbod , což je vstupní bod pro vaši aplikaci.

Třída MauiProgram musí minimálně poskytnout aplikaci, která se má spustit:

namespace MyMauiApp;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>();

        return builder.Build();
    }
}  

Třída App je odvozena od Application třídy:

namespace MyMauiApp;

public class App : Application
{
    public App()
    {
        InitializeComponent();

        MainPage = new AppShell();
    }
}

V předchozím příkladu MainPage je vlastnost nastavena na AppShell objekt. AppShell je podtříděná Shell třída, která popisuje vizuální hierarchii aplikace. Další informace najdete v tématu Vytvoření aplikace .NET MAUI Shell.