# Uno Platform The Uno Platform is an Open-Source .NET platform for building single-codebase, cross-platform applications for mobile, web (using WebAssembly), desktop, and embedded apps quickly. Important notes: - The core framework is free and open-source under the Apache 2 license, since its release in 2018; optional enterprise support and advanced tooling (such as Hot Design) are offered under paid plans - Skia (using a full-screen canvas) and Native (using native elements) renderers are available - Uno Platform uses the WinUI (UI APIs) and WinRT (non-UI APIs) API definitions, but does not use WinAppSDK/WinUI. WinAppSDK is only used when running the `netX.0-windows` target, for the other targets, only Uno Platform code is used - Uno Platform uses official .NET mobile bindings directly, but does not use MAUI - Uno Platform offers a comprehensive C# and XAML Hot Reload support, under the free plan - Uno Platform apps can run on iOS/iPadOS, Android, macOS, Windows, Linux, and Browsers supporting WebAssembly ## Docs [Frequently Asked Questions](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/faq.md) [Getting Started](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/get-started.md) [how-uno-works](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/how-uno-works.md) [why-uno-platform](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/concepts/overview/why-uno-platform.md) [Uno Check](https://raw.githubusercontent.com/unoplatform/uno.check/refs/heads/main/doc/using-uno-check.md) [vs-create-an-app](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/create-an-app-vs2022.md) [VS Wizard - Get Started](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/get-started-wizard.md) [using-wizard](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/getting-started/wizard/using-wizard.md) [rider-create-an-app](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/create-an-app-rider.md) [Rider Get Started](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/get-started-rider.md) [Rider Support](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/get-started-rider.md) [Using Uno SDK](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-the-uno-sdk.md) [VSCode Mobile debug](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/create-an-app-vscode.md) [VSCode Support for omnisharp and C# devkit](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/get-started-vscode.md) [VS Code Extension](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/get-started-vscode.md) [dotnet new templates docs](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/get-started-dotnet-new.md) [Hot Reload Docs](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/studio/Hot Reload/hot-reload-overview.md) [account-access](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/get-started-licensing.md) [Release Migration](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/migrating-from-previous-releases.md) [Uno Upgrade packages](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/upgrading-nuget-packages.md) [Uno Platform Perf Tips](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/Uno-UI-Performance.md) [XAML Trimming](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/resources-trimming.md) [Uno Single TargetFramework Build](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/guides/solution-building-single-targetframework.md) [UI Markup](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-markup.md) [Uno CSharp Conditionals](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/platform-specific-csharp.md) [Uno Framebuffer](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-linux-framebuffer.md) [Uno WinRT](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-winrt.md) [using-uno-resizetizer](https://raw.githubusercontent.com/unoplatform/uno.resizetizer/refs/heads/main/doc/using-uno-resizetizer.md) [Uno XAML Conditionals](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/platform-specific-xaml.md) [xbind docs](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/windows-ui-xaml-xbind.md) [C# Markup](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Markup/Overview.md) [MAUI Embedding](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/MauiOverview.md) [Uno Native Renderer](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-native-rendering.md) [Uno Skia Desktop](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-skia-desktop.md) [Uno Skia Renderer](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-skia-rendering.md) [Skia Native Host support](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-skia-hosting-native-controls.md) [Skia Win32 Support](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-skia-desktop.md) [macOS Skia Metal](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-skia-macos.md) [Uno.UITest Official Doc](https://raw.githubusercontent.com/unoplatform/uno.uitest/refs/heads/master/doc/using-uno-uitest.md) [Markup Extensions](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/windows-ui-markup-extensions.md) [Custom Fonts](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/custom-fonts.md) [GLCanvasElement](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/controls/GLCanvasElement.md) [SKCanvasElement](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/controls/SKCanvasElement.md) [Uno Windowing](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/windows-ui-xaml-window.md) [mediaplayer](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/controls/MediaPlayerElement.md) [WebView2](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/controls/WebView.md) [uno-islands](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/guides/uno-islands.md) [Uno Feature CSharp Authentication](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Authentication/AuthenticationOverview.md) [Uno Feature Authentication MSAL](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Authentication/HowTo-MsalAuthentication.md) [Uno Feature Authentication OIDC](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Authentication/HowTo-OidcAuthentication.md) [Uno Feature Configuration](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Configuration/ConfigurationOverview.md) [Uno Feature CSharp Markup](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Markup/Overview.md) [Uno Feature Cupertino](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/cupertino-getting-started.md) [Uno Feature DSP](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/material-getting-started.md) [Uno Feature CSharp Extensions](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/ExtensionsOverview.md) [Uno Feature Extension Core](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/ExtensionsOverview.md) [Uno Feature Hosting](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Hosting/HostingOverview.md) [Uno Feature HTTP](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Http/HttpOverview.md) [Uno Feature Localization](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Localization/LocalizationOverview.md) [Uno Feature Loggin](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Logging/LoggingOverview.md) [Uno Feature Lottie](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/Lottie.md) [Uno Feature Material](https://raw.githubusercontent.com/unoplatform/uno.themes/refs/heads/master/doc/themes-overview.md) [Uno Feature MAUI Embedding](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/MauiOverview.md) [Uno Feature MediaElement](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/controls/MediaPlayerElement.md) [Uno Feature MVUX](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Mvux/Overview.md) [Uno Feature MVVM](https://raw.githubusercontent.com/unoplatform/workshops/refs/heads/master/simple-calc/modules/MVVM-XAML/04-App Architecture/README.md) [Uno Feature Navigation](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Navigation/NavigationOverview.md) [Uno Feature Serilog](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Logging/LoggingOverview.md) [Uno Feature Skia](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-skia-desktop.md) [Uno Feature Storage](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/ExtensionsOverview.md) [Uno Feature SVG](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/svg.md) [Uno Feature Toolkit](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/getting-started.md) [Uno App Publishing](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-publishing-overview.md) [MacOS publish dmg](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-publishing-desktop-macos.md) [MacOS publish pkg](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-publishing-desktop-macos.md) [MacOS publish signing](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-publishing-desktop-macos.md) [Linux Publish Snap](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-publishing-desktop.linux.md) [Uno Continuous Integration](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-publishing-overview.md) [Resources resw Trimming](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/upri-trimming.md) [Uno Apple Privacy Manifest](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-the-uno-sdk.md) [Extensions macOS missing entitlement](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Storage/HowTo-RequiredEntitlements.md) [Uno Single Project Features](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-the-uno-sdk.md) [Uno Single Project Upgrade](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/migrating-to-single-project.md) [Uno Single Project VS Reload](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-the-uno-sdk.md) [Custom Variable Fonts](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/custom-fonts.md) [Uno.WinUI / Uno.UI Conflict](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [Uno.UI in WinAppSDK Troubleshooting](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [Uno Issue Repro Sample](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-builds-troubleshooting.md) ## Troubleshooting [Common issues](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/common-issues-all-ides.md) [Uno Build Troubleshooting](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-builds-troubleshooting.md) [Uno Missing Lottie Package](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [X11 DBus troubleshooting](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-skia-desktop.md) ## Hot Design [hot-design](https://raw.githubusercontent.com/unoplatform/hd-docs/refs/heads/master/hot-design-overview.md) [hot-design-counter-tutorial](https://raw.githubusercontent.com/unoplatform/hd-docs/refs/heads/master/hot-design-getstarted-counter-tutorial.md) [hot-design-get-started](https://raw.githubusercontent.com/unoplatform/hd-docs/refs/heads/master/hot-design-getstarted-guide.md) [studio](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/studio/studio-overview.md) [studio-feedback](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/studio/hot-design-beta-feedback.md) ## Uno figma [uno-figma-doc-design-to-code](https://raw.githubusercontent.com/unoplatform/figma-docs/refs/heads/main/get-started/design-to-code.md) [Design-to-Code](https://raw.githubusercontent.com/unoplatform/figma-docs/refs/heads/main/get-started.md) ## Uno.WinRT (non-UI APIs) [Uno.WinRT](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-winrt.md): Overview of non-UI APIs provided by Uno Platform [application-data](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/applicationdata.md) ## How Tos [uno-samples-list](https://raw.githubusercontent.com/unoplatform/uno.samples/refs/heads/master/doc/samples.md) [how-to-localize](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/guides/localization.md) [how-to-consume-webservices](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/howto-consume-webservices.md) [how-to-hotswap-app-language](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/guides/hotswap-app-language.md) [how-to-manually-add-splashscreen](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/splash-screen.md) [how-to-update-status-bar-theme-color](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/guides/status-bar-theme-color.md) [how-to-use-native-frame-nav](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/guides/native-frame-nav-tutorial.md) [How-To: Display Item Details](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Navigation/HowTo-DisplayItem.md) [uno community toolkit install](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-community-toolkit.md) [How-To: Navigate in Code](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Navigation/HowTo-NavigateInCode.md) [How-To: Navigate in XAML](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Navigation/HowTo-NavigateInXAML.md) [How-To: Display a Message Dialog](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Navigation/HowTo-DisplayMessageDialog.md) [How-To: Display a Dialog (modal or flyout)](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Navigation/HowTo-ShowDialog.md) [How-To: Navigate Between Pages](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Navigation/HowTo-NavigateBetweenPages.md) [How-To: Select a Value](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Navigation/HowTo-SelectValue.md) [adjusting-windows-sdk-references](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/winapp-sdk-specifics.md) [UWP Upgrade Guide](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/updating-to-winui3.md) [Uno 5 WPF Host Migration](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/migrating-to-uno-5.md) ## Uno Themes [working-with-themes](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/working-with-themes.md) [material-colors](https://raw.githubusercontent.com/unoplatform/uno.themes/refs/heads/master/doc/material-colors.md) [material-getting-started](https://raw.githubusercontent.com/unoplatform/uno.themes/refs/heads/master/doc/material-getting-started.md) [Lightweight styling docs](https://raw.githubusercontent.com/unoplatform/uno.themes/refs/heads/master/doc/lightweight-styling.md) [uno-themes](https://raw.githubusercontent.com/unoplatform/uno.themes/refs/heads/master/doc/themes-overview.md) [Uno Material - Customize Colors](https://raw.githubusercontent.com/unoplatform/uno.themes/refs/heads/master/doc/material-getting-started.md) ## Uno Toolkit [toolkit-doc-tabbar-tabbaritem](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/controls/TabBarAndTabBarItem.md) [toolkit-material-getting-started](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/material-getting-started.md) [Toolkit Neumorphism](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/controls/ShadowContainer.md) [toolkit-responsive-extension](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/helpers/responsive-extension.md) [Toolkit Responsive Markup Extension](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/helpers/responsive-extension.md) [Toolkit ResponsiveView](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/controls/ResponsiveView.md) [Shadow Container](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/controls/ShadowContainer.md) [DSP Tooling](https://raw.githubusercontent.com/unoplatform/uno.themes/refs/heads/master/doc/material-dsp.md) [Uno Toolkit](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/getting-started.md) ## Samples [samples-tutorials](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/samples-tutorials-overview.md) [tubeplayer-workshop](https://raw.githubusercontent.com/unoplatform/workshops/refs/heads/master/tube-player/README.md) [tutorials-intro](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/tutorials-intro.md) [Calculator Try Uno](https://raw.githubusercontent.com/unoplatform/workshops/refs/heads/master/simple-calc/README.md) [chefs-recipebooks](https://raw.githubusercontent.com/unoplatform/uno.chefs/refs/heads/master/doc/RecipeBooksOverview.md) [chefs-sampleapp](https://raw.githubusercontent.com/unoplatform/uno.chefs/refs/heads/master/doc/Overview.md) [counter-tutorial](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/getting-started/counterapp/get-started-counter.md) [counter-tutorial-xaml-mvux](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/getting-started/counterapp/get-started-counter-xaml-mvux.md) [ReadMe - MAUI Embedding - ArcGIS Maps SDK for .NET](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-EsriMaps.md) [ReadMe - MAUI Embedding - DevExpress .NET MAUI Controls](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-DevExpress.md) [ReadMe - MAUI Embedding - GrapeCity ComponentOne .NET MAUI Controls ](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-GrapeCity.md) [ReadMe - MAUI Embedding - Grial UI Kit for .NET MAUI](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-GrialKit.md) [ReadMe - MAUI Embedding - .NET MAUI Community Toolkit](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-MauiCommunityToolkit.md) [ReadMe - MAUI Embedding - Syncfusion .NET MAUI Controls](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-Synfusion.md) [ReadMe - MAUI Embedding - Telerik UI for .NET MAUI](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-Telerik.md) [maui-embedding-tutorial-arcgis](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-EsriMaps.md) [maui-embedding-tutorial-devexpress](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-DevExpress.md) [maui-embedding-tutorial-grapecity](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-GrapeCity.md) [maui-embedding-tutorial-grialkit](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-GrialKit.md) [maui-embedding-tutorial-mauicommunitytoolkit](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-MauiCommunityToolkit.md) [maui-embedding-tutorial-syncfusion](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-Synfusion.md) [maui-embedding-tutorial-telerik](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Maui/ThirdParty-Telerik.md) [simplecalc-workshop](https://raw.githubusercontent.com/unoplatform/workshops/refs/heads/master/simple-calc/README.md) ## Uno WebAssembly [Bootstrap Jiterpreter](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/runtime-execution-modes.md) [Bootstrap SIMD](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/features-simd.md) [Bootstrapper Powershell RemoteSigned for Windows](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/runtime-execution-modes.md) [Wasm AOT builds](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/runtime-execution-modes.md) [Wasm AOT profile](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/runtime-execution-modes.md) [Wasm CSP](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/features-security.md) [Wasm Bootstrap Deep linking](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/features-deep-linking.md) [Wasm External Drag and Drop](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-il-linker-webassembly.md) [Wasm IDBFS Support](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/features-idbfs.md) [WebAssembly IL Linker](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-il-linker-webassembly.md) [Wasm Memory Profiling](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/features-profiling.md) [Wasm .NET 9 Upgrade](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/using-the-bootstrapper.md) [Linker Configuration](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/using-il-linker-webassembly.md) [WebAssembly Threading](https://raw.githubusercontent.com/unoplatform/uno.wasm.bootstrap/refs/heads/main/doc/features-threading.md) ## Uno.Extensions Docs [MVUX Docs](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Mvux/Overview.md) [uno extensions](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/ExtensionsOverview.md) [Ancestor Binding](https://raw.githubusercontent.com/unoplatform/uno.toolkit.ui/refs/heads/main/doc/helpers/ancestor-itemscontrol-binding.md) [extensions-http-kiota](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Http/HowTo-Kiota.md) [extensions-http-refit](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Http/HowTo-Refit.md) [How-To: Define Routes](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/Navigation/HowTo-DefineRoutes.md) [Reactive Upgrade v5](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/ExtensionsOverview.md) [auth-open-id-connect](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/guides/open-id-connect.md) [extensions-dependency-injection](https://raw.githubusercontent.com/unoplatform/uno.extensions/refs/heads/main/doc/Learn/DependencyInjection/DependencyInjectionOverview.md) ## Optional [UNO0002](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNO0006](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNO0007](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNO0008](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0004](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0008](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0009](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0010](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0011](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0012](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0013](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0014](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0015](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0016](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0017](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) [UNOB0018](https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/uno-build-error-codes.md) ## Uno.vscode.additional # Visual Studio Code Extension To get started on using VS Code, [head over to our guides](#Uno.GetStarted.vscode). In this page, you'll find other topics about VS Code support, such as code snippets or how to upgrade an existing app to use VS Code. ## Explore other features The Uno Platform extension provides additional features to help you develop your application. You can explore them by pressing `F1` or `Ctrl-Shift-P` and typing `Uno Platform` to see the list of available commands. ![vs-code-explore-other-features](Assets/quick-start/vs-code-explore-other-features.png) ## Using code snippets ### Adding a new Page 1. In the MyApp folder, create a new file named `Page2.xaml` 2. Type `page` then press the `tab` key to add the page markup 3. Adjust the name and namespaces as needed 4. In the MyApp folder, create a new file named `Page2.xaml.cs` 5. Type `page` then press the `tab` key to add the page code behind C# 6. Adjust the name and namespaces as needed ### Adding a new UserControl 1. In the MyApp folder, create a new file named `UserControl1.xaml` 2. Type `usercontrol` then press the `tab` key to add the page markup 3. Adjust the name and namespaces as needed 4. In the MyApp folder, create a new file named `UserControl1.xaml.cs` 5. Type `usercontrol` then press the `tab` key to add the page code behind C# 6. Adjust the name and namespaces as needed ### Adding a new ResourceDictionary 1. In the MyApp folder, create a new file named `ResourceDictionary1.xaml` 2. Type `resourcedict` then press the `tab` key to add the page markup ### Other snippets - `rd` creates a new `RowDefinition` - `cd` creates a new `ColumnDefinition` - `tag` creates a new XAML tag - `set` creates a new `Style` setter - `ctag` creates a new `TextBlock` close XAML tag ## Updating an existing application to work with VS Code An existing application needs additional changes to be debugged properly. 1. At the root of the workspace, create a folder named `.vscode` 2. Inside this folder, create a file named `launch.json` and copy the [contents of this file](https://github.com/unoplatform/uno.templates/blob/main/src/Uno.Templates/content/unoapp/.vscode/launch.json). 3. Replace all instances of `MyExtensionsApp._1` with your application's name in `launch.json`. 4. Inside this folder, create a file named `tasks.json` and copy the [contents of this file](https://github.com/unoplatform/uno.templates/blob/main/src/Uno.Templates/content/unoapp/.vscode/tasks.json). ## Advanced debugging You can find [advanced Code debugging topic here](#uno.vscode.mobile.advanced.debugging). ## Uno.Development.AndroidActivities # Managing activities in Android [Activities](https://developer.android.com/reference/android/app/Activity) are an integral element of the Android platform. By default your Uno Platform application runs in a single activity, but you might for example spawn a new activity when a user shares content, or picks an image from their device. This article covers Activity management in Uno. ## Android documentation links - [Introduction to Activities](https://developer.android.com/guide/components/activities/intro-activities) - [Understand the Activity Lifecycle](https://developer.android.com/guide/components/activities/activity-lifecycle) ## Creating/Using Android Activities At the root of every Android Uno app, lies a `BaseActivity` class that extends from `Android.Support.V7.App.AppCompatActivity` which is part of the [Android v7 `AppCompat` Support Library](https://developer.android.com/topic/libraries/support-library/features.html#v7-appcompat). If you ever need to create a new Activity within your app or within Uno, you must be sure to extend `BaseActivity` and, if you need to apply a Theme to the activity, ensure that the Theme you set is a `Theme.AppCompat` theme (or descendant). ## Accessing Android main activity events Uno Platform provides an API to get access to the events/overrides invoked in the main activity (commonly inheriting from `UI.Xaml.ApplicationActivity`) outside of the activity class. In order to get access to these events, you can write the following: ```csharp using Uno.UI.ViewManagement; App() { // ... ApplicationViewHelper.GetBaseActivityEvents().Create += OnCreateEvent; // ... } private void OnCreateEvent(Android.OS.Bundle savedInstanceState) { } ``` Note that some events are raised early during the application lifecycle and may need to be registered from the `App` constructor. ## Uno.Development.ApiDifferences # Differences between Uno.UI and WinUI Uno Platform strives to closely replicate the WinUI API on all platforms and ensure that existing WinUI code is 100% compatible with Uno. This article covers areas where Uno.UI's implementation differs, typically to better integrate with the native platform, or where the capabilities of .NET differ due to inherent limitations of the native platform. This article doesn't cover parts of the API that haven't been implemented yet. You can consult a [complete list of implemented and unimplemented controls here](implemented-views.md). For a practical guide to addressing differences between Uno Platform and WinUI, [read this article](migrating-guidance.md). ## API differences ### `FrameworkElement` inherits from native base view types (Android, iOS, macOS) As for WinUI, all visual elements in Uno.UI inherit from `FrameworkElement`, which inherits from `UIElement`. (At least, those that are publicly available.) On Windows, `UIElement` inherits from the `DependencyObject` class, which inherits from `System.Object`. On Android, iOS, and macOS, `UIElement` instead inherits from the native base view type for each platform, as exposed to .NET by Xamarin Native. So, `ViewGroup` for Android, `UIView` for iOS, and `NSView` for macOS. This allows native views (not defined by Uno.UI or inheriting from `FrameworkElement`) to be directly integrated into the visual tree, [in XAML markup or C# code](native-views.md). ### `DependencyObject` type is an interface (all non-Windows platforms) This API difference follows directly from the previous one. In order to support native view inheritance, Uno.UI defines `DependencyObject` as an interface, rather than a class. This is as transparent as possible to the application developer. For example, if a developer defines a class that inherits directly from `DependencyObject`, Uno.UI will automatically generate code that implements the `DependencyObject` interface methods. The only developer action required is to add the `partial` keyword to the class definition. ## Runtime differences ### iOS is AOT-only .NET code [must be Ahead-Of-Time (AOT) compiled to run on iOS](https://learn.microsoft.com/xamarin/ios/internals/limitations), as a fundamental platform limitation. As a result, a few APIs that require runtime code generation (eg `System.Reflection.Emit`) do not work. This includes code that uses the `dynamic` keyword. ### WebAssembly is single-threaded Currently, WebAssembly code in the browser executes on a single thread. This limitation is expected to be lifted in the future, but for now, code that expects additional threads to be available may not function as expected. [This GitHub issue](https://github.com/unoplatform/uno/issues/2302) tracks support for multi-threading on WebAssembly in Uno Platform. ## Uno.Development.BestPractices # Best practices for developing Uno Platform applications This article covers some basic best practices when developing cross-platform applications with Uno Platform. ## Questions to ask 1. Which [platforms](#Uno.GettingStarted.Requirements) do I plan to target? 2. What framework features do I plan to use? Are they supported on all of my planned target platforms? 3. Which major third-party dependencies will I use? Are they supported on all of my planned target platforms? ## Development workflow Testing and debugging your application is easier and more rapid on some platforms and trickier and more time-consuming on others. Depending on where you're at in your development cycle, it may make sense to test all platforms, or it may make sense to focus on the 'easiest' platform. 1. **At the beginning of the development cycle,** you should identify key features from the Uno Platform framework and 3rd-party dependencies that you plan to use. Check that the framework controls you plan to use [are implemented](implemented-views.md). Consider creating a simple proof-of-concept (POC) app covering the 'riskiest' features and testing it on all platforms you're targeting. 2. **In the middle of the development cycle,** once the major pieces are in place, when you're iterating on the UI and business logic of your application, most of your day-to-day development should focus on the easiest platform to develop on. Most of the time, this will be Windows, where you can take advantage of Microsoft's excellent tooling (Live Visual Tree, XAML Hot Reload, etc) and where build times are often shortest. For this reason, it's recommended to keep the Windows (WinUI 3) head project in your solution, even if you don't plan to publish your application to Windows. 3. **At the end of the development cycle,** as your attention shifts to testing and fixing bugs, you'll again distribute your time more equally across all of the platforms you plan to target, ensuring that the application looks and behaves consistently everywhere. ## Platform-specific code It's likely that some part of your application's code, be it C# code or XAML markup, will be specific to only one platform - perhaps because you want to access platform-specific APIs, implement a feature using native third-party libraries, or simply customize the experience to be more idiomatic to that particular platform. You can read more on the mechanics of platform-specific code [here for C#](#Uno.Development.PlatformSpecificCSharp) and [here for XAML](#Uno.Development.PlatformSpecificXaml). You should also make sure you understand [an Uno Platform App solution structure](#Uno.Development.AppStructure). The main goals where platform-specific code is concerned are to: * **Maximize maintainability by keeping as much code shared as possible.** * **Maximize readability by organizing your code in a consistent, legible way.** Here are some tips to achieve that: * **Use [partial class](platform-specific-csharp.md#partial-class-definitions) definitions to mix shared code and platform-specific code in a single class.** Separating all platform-specific code into a dedicated partial definition is usually more readable than interleaving platform-specific `#if` blocks with shared code, particularly if the amount of platform-specific code is significant. * **Give partial definition files a platform-specific suffix.** Eg, for a `FormHighlighter` class, the shared partial definition would go in `FormHighlighter.cs`, the iOS-specific partial definition would go in `FormHighlighter.iOS.cs`, etc. * **(Optional) Consider putting platform-agnostic application layers in a separate .NET Standard project.** 'Thinking multi-platform' adds to the cognitive burden of reading and writing code, as well as the testing effort of verifying that it runs the same way on every platform. For this reason, some people prefer to split out platform-agnostic parts of the application into a separate .NET Standard project, eg 'pure' business logic which doesn't interact with the UI or with non-visual platform APIs. This project builds once as a single binary used on all platforms, giving a stronger guarantee that it will behave consistently everywhere. Enforcing that platform-agnostic separation does impose an architectural burden too, so it's a matter of personal preference. ## Application architecture You have a lot of choice when choosing an architecture for an Uno Platform application. Since it uses the WinUI contract, Uno Platform supports several features which lend themselves to a [model/view/view-model (MVVM) approach](https://learn.microsoft.com/windows/uwp/data-binding/data-binding-and-mvvm), like data binding and dependency properties; but you're perfectly free to use any approach you like best. Sometimes so much freedom can be paralyzing. To help you get started, we've created several reference applications especially for Uno Platform. These are working, real-world applications utilizing simple but effective architectural patterns for cross-platform development. * [**Ch9**](https://github.com/unoplatform/Uno.Ch9): browse content from Microsoft's publicly-available Channel 9 video feed. * [**UADO**](https://github.com/unoplatform/uado): Universal Azure DevOps Organizer ## Performance See a checklist of performance-related best practices [here](Uno-UI-Performance.md). ## Uno.UI.CommonIssues # Troubleshooting The Uno Platform features and support are constantly evolving, yet you may encounter some of the issues while building your application, for which answers and details are available below. [!include[getting-help](includes/getting-help.md)] A better resource for high-level questions about Uno Platform is the [general FAQ](#Uno.Development.FAQ). ## Hot Reload When using Hot Reload, ensure you first review the [supported features](#Uno.Features.HotReload), [supported features per OS](#Uno.Features.HotReload), and [supported features per platform](#Uno.Features.HotReload). If issues persist, additional troubleshooting information is available in [this section](#Uno.Features.HotReload). ## Development Environments - [All Development Environments](#Uno.UI.CommonIssues.AllIDEs) - [Visual Studio 2022 for Windows](#Uno.UI.CommonIssues.vs2022) - [VS Code](#Uno.UI.CommonIssues.vscode) - [Rider](#Uno.UI.CommonIssues.rider) ## Platforms - [Common issues on WebAssembly](#Uno.UI.CommonIssues.Wasm) - [Common issues on Skia (X11/macOS/Framebuffer/Windows)](#Uno.UI.CommonIssues.Skia) - [Common issues on iOS](#Uno.UI.CommonIssues.Ios) - [Common issues on Android](#Uno.UI.CommonIssues.Android) ## Build Errors - [Troubleshooting build errors](#Uno.Development.Troubleshooting) - [Build error codes](#Build.Solution.error-codes) ## Next Steps Learn more about: - You can head to [How-tos and tutorials](#Uno.Tutorials.Intro) on how to work on your Uno Platform app. - [List of views implemented in Uno](implemented-views.md) for the set of available controls and their properties. ## Uno.UI.CommonIssues.AllIDEs # Issues related to all development environments ## Could not resolve SDK "Uno.Sdk" This error may happen for multiple reasons: - Make sure to update your [Uno Platform extension](https://aka.platform.uno/vs-extension-marketplace) in VS 2022 to 5.3.x or later. Earlier versions may automatically update to an incorrect version of the Uno.SDK. - Make sure to [re-run Uno.Check](#UnoCheck.UsingUnoCheck) to get all the latest dependencies. - Ensure that all [NuGet feeds are authenticated properly](https://learn.microsoft.com/nuget/consume-packages/consuming-packages-authenticated-feeds). When building on the command line, some enterprise NuGet feeds may not be authenticated properly. - Ensure that no global package mappings are interfering with nuget restore. To validate that no package mappings are set, on Windows for Visual Studio 2022: - Make a backup copy of `%AppData%\NuGet\NuGet.Config` - Open a visual studio instance that does not have any solution opened - Go to **Tools**, **Options**, **NuGet Package Manager**, then **Package Source Mappings** - If there are entries in the list, click then click **Remove All** - Delete the `Uno.Sdk` folder in your development environment's Nuget packages `global-packages` folder: - Windows: `%userprofile%\.nuget\packages` - Mac/Linux: `~/.nuget/packages` [This folder may be overridden](https://learn.microsoft.com/en-us/nuget/consume-packages/managing-the-global-packages-and-cache-folders) using the `NUGET_PACKAGES` environment variable, the `globalPackagesFolder` or `repositoryPath` configuration settings (when using PackageReference and `packages.config`, respectively), or the `RestorePackagesPath` MSBuild property (MSBuild only). The environment variable takes precedence over the configuration setting. Try building your project again. ## Runtime error `No parameterless constructor defined for XXXX` This error is generally caused by some missing [IL Linker](https://github.com/dotnet/runtime/tree/main/src/tools/illink) configuration on WebAssembly. You may need to add some of your application assemblies in the LinkerConfig.xml file of your project. You can find [additional information in the documentation](#uno.articles.features.illinker). Similar error messages using various libraries: - `Don't know how to detect when XXX is activated/deactivated, you may need to implement IActivationForViewFetcher` (ReactiveUI) ## `Layout cycle detected` exception Layout cycle means that the measuring of a specific part of the visual tree couldn't get stabilized. For example, during an element `Arrange` pass, its measure was invalidated, then it's measured again then arranged, and the app will fall into a layout cycle. Uno Platform and WinUI run this loop for 250 iterations. If the loop hasn't stabilized, the app will fail with an exception with the message `Layout cycle detected`. For more information, see also [LayoutCycleTracingLevel in Microsoft Docs](https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.debugsettings.layoutcycletracinglevel). Note that what Uno Platform logs may be quite different from what WinUI logs. This error is sometimes tricky to debug. To get more information, in your `App.OnLaunched` method, you can call `DebugSettings.LayoutCycleTracingLevel = Microsoft.UI.Xaml.LayoutCycleTracingLevel.High` in order to get additional troubleshooting information printed out in the app's logs. You will also need to update your logging to `.SetMinimumLevel(LogLevel.Trace)`, as well as add `builder.AddFilter("Microsoft.UI.Xaml.UIElement", LogLevel.Trace);` if you set the log level to high and want to get stack trace information. When the last 10 iterations out of 150 are reached, we will start logging some information as warnings. Those logs are prefixed with `[LayoutCycleTracing]` and include information such as when an element is measured or arranged, and when measure or arrange is invalidated. One possible cause of layout cycle is incorrect usage of `LayoutUpdated` event. This event isn't really tied to a specific `FrameworkElement` and is fired whenever any element changes its layout in the visual tree. So, using this event to add or remove an element to the visual tree can lead to layout cycle. The simplest example is having XAML similar to the following ```xaml ``` and code behind: ```csharp private void sp_LayoutUpdated(object sender, object e) { sp.Children.Add(new Button() { Content = "Button" }); } ``` In this case, when `LayoutUpdated` is first fired, you add a new child to the `StackPanel` which will cause visual tree root to have its measure invalidated, then `LayoutUpdated` gets fired again, causing visual tree root to have its measured invalidated again, and so on. This ends up causing a layout cycle. ## Cannot build with both Uno.WinUI and Uno.UI NuGet packages referenced This issue generally happens when referencing an Uno.UI (using WinUI APIs) NuGet package in an application that uses Uno.WinUI (Using WinAppSDK APIs). For instance, if your application has ` `Uno.WinUI` ## Abnormally long build times when using Roslyn analyzers It is a good practice to use Roslyn analyzers to validate your code during compilation, but some generators may have difficulty handling the source generated by the Uno Platform (one notable example is [GCop](https://github.com/Geeksltd/GCop)). You may need to disable those for Uno projects or get an update from the analyzer's vendor. ## Uno.UI.CommonIssues.Android # Issues related to Android projects ## Insets not working when using WebView There is a known issue on Android with the [Edge-to-Edge](https://developer.android.com/develop/ui/views/layout/edge-to-edge) feature, where the bottom Insets do not function correctly when using a WebView. This flaw prevents the inputs from being shifted upward, which results in the keyboard covering them. > [!IMPORTANT] > Edge-to-Edge is enforced on devices running Android 15 with a Target SDK of 35 or higher. A workaround for this issue is to navigate to the `MainActivity.Android.cs` file in your Uno Platform application, override the `OnCreate` method, and call `WindowCompat.SetDecorFitsSystemWindows()`, setting the second parameter, decorFitsSystemWindows, to true. Your code should be structured as follows: ```csharp public class MainActivity : Microsoft.UI.Xaml.ApplicationActivity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); WindowCompat.SetDecorFitsSystemWindows(Window, true); } } ``` Learn more about this issue [on Google's issues tracker](https://issuetracker.google.com/issues/311256305?pli=1) website. > [!IMPORTANT] > Using the workaround mentioned above will deactivate some benefits of the Edge-To-Edge feature. For instance, your top navigation bar will no longer be "invisible," which removes the immersive appearance associated with edge-to-edge design. ## ADB0020 - The package does not support the CPU architecture of this device This error may occur when deploying an application to a physical device with ARM architecture. To resolve this issue, you will need to add the following to your csproj anywhere inside the `` tag: ```xml android-arm;android-arm64;android-x86;android-x64 ``` ## Deploying an Android app takes a long time Android deployment requires a few considerations: - Android physical device - Make sure to have a good cable (USB 3 or C) to have a good connection - Avoid debugging through wifi - Android Emulators - Use an Android x86_64 emulator. If not, [create a new one](https://learn.microsoft.com/dotnet/maui/android/emulator/device-manager). - Ensure that you have either Hyper-V or AEHD enabled. (See [Microsoft's documentation](https://learn.microsoft.com/dotnet/maui/android/emulator/hardware-acceleration)) - Try disabling `Fast Deployment` in your app configuration 1. Open your project properties 1. In the Android section, search for `Fast Deployment` 1. Uncheck all target platforms - Try setting `false` in the debug configuration of your `.csproj`. ## Android Warning XA4218 When building for Android, the following messages may happen: ```text obj\Debug\net8.0-android\android\AndroidManifest.xml : warning XA4218: Unable to find //manifest/application/uses-library at path: C:\Program Files (x86)\Android\android-sdk\platforms\android-34\optional\androidx.window.extensions.jar obj\Debug\net8.0-android\android\AndroidManifest.xml : warning XA4218: Unable to find //manifest/application/uses-library at path: C:\Program Files (x86)\Android\android-sdk\platforms\android-34\optional\androidx.window.sidecar.jar ``` Those messages are from a [known .NET for Android issue](https://github.com/xamarin/xamarin-android/issues/6809) and can be ignored as they are not impacting the build output. ## Additional troubleshooting You can get additional build [troubleshooting information here](#Uno.Development.Troubleshooting). ## Uno.UI.CommonIssues.Ios # Issues related to iOS projects ## Developing on older Mac hardware The latest macOS release and Xcode version are required to develop with Uno Platform for iOS. However, if you have an older Mac that does not support the latest macOS release, you can use a third-party tool to upgrade it, such as [OpenCore Legacy Patcher](https://dortania.github.io/OpenCore-Legacy-Patcher/). While not ideal, this can extend the use of older hardware by installing the latest macOS release on it. Please note that this method is not required when developing for other targets such as Android, Skia, WebAssembly, or Windows. ## `Don't know how to marshal a return value of type 'System.IntPtr'` [This issue](https://github.com/unoplatform/uno/issues/9430) may happen for Uno.UI 4.4.20 and later, when deploying an application using the iOS Simulator, when the application contains a `TextBox`. In order to fix this, add the following to your `.csproj`: ```xml $(MtouchExtraArgs) --registrar=static ``` ## Error while retrieving iOS device in VS code When switching to an iOS debugging target in VS Code, you might encounter an error stating that the iOS device could not be retrieved. The error message may appear as follows: ```error [Info]: Project reload forced to switch to net8.0-ios | Debug [Error] Could not retrieve ios devices within 10 seconds. Aborting... ``` To resolve this issue, download [Xcodes](https://www.xcodes.app). Inside Xcodes.app, select the correct version of Xcode and click the **Make Active** button to make it the default Xcode for your Mac. After completing this step, you can speed up the process and use the new default Xcode for simulators. On VS Code, open the Command Palette and select `Developer: Reload Window`. This should resolve the error when switching to an iOS debugging target in VS Code. ## Build stops with `Verification of iOS environment is running. Please try again in a moment` When building for an iOS physical device, the following error may happen in your build `Verification of iOS environment is running. Please try again in a moment.`. If this happens and your Visual Studio is connected to your Mac, you may need to ensure that you have selected a provisioning profile. Make sure to [configure your Apple account](https://learn.microsoft.com/en-us/dotnet/maui/ios/device-provisioning/automatic-provisioning?view=net-maui-9.0#enable-automatic-provisioning), or in some cases, selecting the development team and provisioning profile is required. ## Debugging takes a long time when connecting from a Windows machine In case your debugging experience is slow when connecting from a Windows VS environment to a Mac machine, make sure that you're not connected through Wifi on either end. Try pinging your Mac from your Windows machine and ensure it's lower than 5ms. ## Additional troubleshooting You can get additional build [troubleshooting information here](uno-builds-troubleshooting.md). ## Uno.UI.CommonIssues.rider # Issues related to Rider You can view the [list of known issues in Rider's bug tracker](https://github.com/unoplatform/uno/issues/15226). ## Uno.UI.CommonIssues.Skia # Issues related to Skia-based projects ## System.DllNotFoundException: Gtk: libgtk-3-0.dll When running the Skia.GTK project head, the following error may happen: ```console Unhandled exception. System.TypeInitializationException: The type initializer for 'Gtk.Application' threw an exception. ---> System.DllNotFoundException: Gtk: libgtk-3-0.dll, libgtk-3.so.0, libgtk-3.0.dylib, gtk-3.dll ``` ## Linux [!include[linux-setup](includes/additional-linux-setup-inline.md)] ## Additional troubleshooting You can get additional build [troubleshooting information here](uno-builds-troubleshooting.md). ## Uno.UI.CommonIssues.vs2022 # Issues related to Visual Studio 2022 for Windows ## Unable to select the `MyApp (Unpackaged WinAppSDK)` profile A [Visual Studio issue](https://developercommunity.visualstudio.com/t/WinAppSDK-Unpackaged-profile-cannot-be-s/10643735) is preventing the Unpackaged profile if iOS/Android target frameworks are present in the project. In order for the unpackaged profile to be selected, you'll need to edit the `Properties/launchSettings.json` file to remove the `MyApp (Packaged WinAppSDK)` entry. Once it is removed, select the `MyApp (Unpackaged WinAppSDK)` then start the debugging of your app. ## An iOS fails to run with `No class inheriting from a valid Application Delegate found` When using iOS Hot Restart on Visual Studio 2022, a [limitation of the environment](https://developercommunity.visualstudio.com/t/iOS-Hot-Restart-does-not-work-for-non-MA/10714660) prevents an Uno Platform app from starting properly when MAUI Embedding is referenced. A workaround is to disable MAUI Embedding in the [`UnoFeatures` of your project](#Uno.Features.Uno.Sdk). ## App builds in Visual Studio 2022 are taking a long time Take a [look at our article](#Build.Solution.TargetFramework-override) in order to ensure that your solution is building and showing intellisense as fast as possible, and to avoid [this Visual Studio issue](https://developercommunity.visualstudio.com/t/Building-a-cross-targeted-project-with-m/651372?space=8&q=building-a-cross-targeted-project-with-many-target) (help the community by upvoting it!) where multi-targeted project libraries always build their full set of targets. ## My app is not running as fast as I want There could be many reasons for being in this situation, but we've built a list of performance tips in [this article](#Uno.Development.Performance) that you can apply to your app. If you haven't found your answer, open a [discussion](https://github.com/unoplatform/uno/discussions) to tell us about it! ## C# Hot Reload troubleshooting C# Hot Reload is provided by Visual Studio 2022, and there may be occasions where updates are not applied, or the modified code is incorrectly reported as not compiling. If that is the case: - Make sure that the top left selector in the C# editor is showing the project head being debugged. For instance, if debugging with `net9.0-desktop`, select the `net9.0-desktop` project. - Try recompiling the application completely (with the `Rebuild` command) More troubleshooting information is available [in this section](#Uno.Features.HotReload). ## error NETSDK1148: A referenced assembly was compiled using a newer version of Microsoft.Windows.SDK.NET.dll See [this article](features/winapp-sdk-specifics.md#adjusting-windows-sdk-references) to solve this issue. ### My application does not start under WSL Your application may fail to run under WSL for multiple reasons: - Your app is in a path that contains spaces and/or characters such as `[` or `]` - [WSLg](#Uno.GetStarted.vs2022) has not been installed - [X11 dependencies](#Uno.GetStarted.vs2022) have not been installed ## Legacy issues ### The XAML editor shows `The type 'page' does not support direct content` message This issue has been fixed in Visual Studio 17.8 and later. If you're using an earlier version, XAML Intellisense [is not working properly](https://developercommunity.visualstudio.com/content/problem/587980/xaml-intellisense-does-not-use-contentpropertyattr.html) in Visual Studio when the active target framework is not the WinAppSDK one. To work around this issue, close all XAML editors, open a C# file and select the '[MyApp].Windows' in the top-left drop-down list of the text editor sector. Once selected, re-open the XAML file. ### `InitializeComponent` or `x:Name` variable is not available in code-behind This issue has been fixed in Visual Studio 17.8 and later. If you're using an earlier version, Visual Studio [does not refresh the intellisense cache](https://developercommunity.visualstudio.com/content/problem/588021/the-compile-itemgroup-intellisense-cache-is-not-re.html) properly, causing variables to be incorrectly defined. To fix this issue, build your project once, close the solution and reopen it. It is also important to note that Uno Platform uses a multi-project structure, for which each project has to be build individually for errors to disappear from the **Error List** window (notice the **Project** column values). In order to clear the **Error List** window, build the whole solution completely once. Thereafter, build a specific project and prefer the use of the **Output** tool window (in the menu **View** -> **Output**), taking build messages by order of appearance. ### Event handler cannot be added automatically Event handlers [cannot be automatically](https://github.com/unoplatform/uno/issues/1348#issuecomment-520300471) added using the XAML editor. A workaround is to use the [`x:Bind` to events feature](features/windows-ui-xaml-xbind.md#examples). This feature allows to use a simpler syntax like `