Skip to content

Commit

Permalink
Small refresh of homepage + updated Samples page
Browse files Browse the repository at this point in the history
  • Loading branch information
MikeCodesDotNET committed Dec 30, 2024
1 parent cb1d77e commit 80f3fe9
Show file tree
Hide file tree
Showing 10 changed files with 616 additions and 16 deletions.
105 changes: 105 additions & 0 deletions docs/overview/supported-platforms.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
id: supported-platforms
title: Supported Platforms
---

Avalonia apps can be written for the following platforms:

| Platform | Supported |
|-------------|-----------|
| `Windows` | ✔️ |
| `macOS ` | ✔️ |
| `Linux` | ✔️ |
| `iOS` | ✔️ |
| `Android` | ✔️ |
| `WebAssembly` | ✔️ |

## Windows

* Windows 8.1
* Windows 10
* Windows 11

While Avalonia apps will successfully run on Windows 7, this legacy platform receives limited support. We no longer provide bug fixes for Windows 7-specific issues.

## macOS

* macOS 10.14 (Mojave)
* macOS 10.15 (Catalina)
* macOS 11 (Big Sur)
* macOS 12 (Monterey)
* macOS 13 (Ventura)
* macOS 14 (Sonoma)
* macOS 15 (Sequoia)

Avalonia also runs on macOS 10.13 (High Sierra), but we are in the process of migrating to the Metal GPU API, which is currently disabled by default. It is planned to be enabled during one of minor updates.

:::important
It is possible to develop for macOS on Windows, macOS and Linux using Avalonia. If you plan to sign and notarize your macOS application for distribution, you will require a Mac with XCode installed.
:::

## Linux

* Debian 9+
* Ubuntu 16.04+
* Fedora 30+

Avalonia works reliably on most Linux distributions as long as they support the .NET SDK and have either X11 or framebuffer capabilities. While we officially support Debian 9+, Ubuntu 16.04+, and Fedora 30+, many other distributions run Avalonia applications without issues, and we actively work to ensure broad Linux compatibility.

For customers with [support agreements](https://avaloniaui.net/support), we offer expanded Linux distribution coverage and can assist with specific distribution requirements. Wayland support is currently in private preview and will be available in an upcoming release.

WSL 2 distros are supported as well, but `libice6`, `libsm6` and `libfontconfig1` dependencies must be installed individually.

:::info
Skia is built against glibc 2.17. If your distro uses something else instead, you need to build your own libSkiaSharp.so at [SkiaSharp](https://github.com/mono/SkiaSharp). You also can visit SkiaSharp home page for more information about supported versions.
:::

## iOS

* iOS 13
* iOS 14
* iOS 15
* iOS 16
* iOS 17
* iOS 18

:::note
.NET 7 is required for iOS support.
:::

## Android

| Name | Version Number | API Level |
|---------------------|---------|-----|
| Android Lollipop | 5.0 | 21 |
| Android Lollipop | 5.1 | 22 |
| Android Marshmallow | 6.0 | 23 |
| Android Nougat | 7.0 | 24 |
| Android Nougat | 7.1 | 25 |
| Android Oreo | 8.0 | 26 |
| Android Oreo | 8.1 | 27 |
| Android Pie | 9 | 28 |
| Android 10 | 10 | 29 |
| Android 11 | 11 | 30 |
| Android 12 | 12 | 31 |
| Android 12L | 12.1 | 32 |
| Android 13 | 13 | 33 |
| Android 14 | 14 | 34 |
| Android 15 | 15 | 35 |
| Android 16 | 16 | 36 |

:::note
.NET 7 is required for Android support.
:::

## WebAssemnly (Browser)
Any browser with full WebAssembly support technically should work - https://caniuse.com/wasm.

For the best performance and support we recommend latest Chrome or Safari versions.

:::note
.NET 7 is required for Browser support. Starting with 11.0.6 we recommend .NET 8.
:::

## Additional platform support
Avalonia also supports Tizen and tvOS, though this is provided by the community.
95 changes: 95 additions & 0 deletions docs/overview/what-is-avalonia.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
---
id: what-is-avalonia
title: What is Avalonia?
---

import AvaloniaArchitecture from '/img/overview/Architecture.png';
import MauiComparision from '/img/overview/MAUI-Comparision.png';

Avalonia is an open-source, cross-platform UI framework that enables developers to create application using .NET for Windows, macOS, Linux, iOS, Android and WebAssembly.

It uses its own rendering engine to draw UI controls, ensuring consistent appearance and behavior across all supported platforms. This means that developers can share their UI code and maintain a uniform look and feel regardless of the target platform.

<p><img className="image-zoom-medium" src={AvaloniaArchitecture} alt="" /></p>


## Who Avalonia is for?

Avalonia is for developers who want to:

* Write cross-platform apps in XAML and C#, from a single shared code-base.
* Share UI, layout and design across multiple platforms.
* Share code, tests, and business logic across platforms.


## How does Avalonia work?
Avalonia unifies desktop, mobile, and web platforms through a unique approach that differs from traditional cross-platform frameworks. Rather than wrapping native UI controls, Avalonia implements its own cross-platform rendering engine that ensures pixel-perfect consistency across all supported platforms.

### Architecture Overview
Avalonia is built on .NET Standard 2.0, allowing it to run on any platform that supports .NET. The framework consists of several key layers:

#### Core Platform-Agnostic Layer
The majority of Avalonia's functionality resides in a platform-agnostic core layer that handles:

* UI Controls and Layout
* Visual Tree Management
* Styling System
* Data Binding
* Input Handling
* Animation Framework

This core layer is completely platform-independent, meaning it behaves identically regardless of the operating system or device.

#### Rendering Engine
Unlike frameworks that rely on native UI controls, Avalonia uses its own rendering engine powered by either Skia or Direct2D. This approach means that:

* Applications look and behave identically across platforms
* Custom controls and visual effects can be implemented once and work everywhere
* The framework isn't limited by platform-specific UI capabilities

#### Platform Integration Layer
Avalonia requires minimal platform-specific code to integrate with each supported platform. This layer handles:

* Window Management
* Input Events
* Clipboard Operations
* Native Dialogs
* Hardware Acceleration
* Platform-Specific Features

#### Runtime Environment
Avalonia applications run on the .NET runtime, whether that's .NET Core, or Mono.

#### Comparison with Native Approaches
While frameworks like .NET MAUI abstract over native UI controls, Avalonia takes a different approach:

<p><img className="image-zoom-medium" src={MauiComparision} alt="" /></p>

This architectural difference provides several benefits:

* Consistent behavior across platforms
* Pixel-perfect rendering
* Full control over the UI stack
* Simplified platform support
* Reduced maintenance overhead
* Better performance on resource-constrained devices

### Integration with Native Platforms

While Avalonia uses its own rendering engine, it still integrates seamlessly with native platform capabilities:

* **Windows**: Supports Win32 APIs and modern Windows features
* **Linux**: Works with X11, Wayland, and framebuffer rendering
* **macOS**: Integrates with Cocoa and platform services
* **Mobile**: Provides native lifecycle management and platform integration
* **Web**: Runs via WebAssembly with full browser integration

### Platform Support Requirements
At its core, Avalonia requires just two fundamental capabilities to support a new platform:

1. The ability to draw pixels on a screen
2. The ability to receive input events

This minimal requirement set is what allows Avalonia to support such a wide range of platforms, from desktop operating systems to embedded devices, and even unusual platforms like VNC servers.

This architecture enables Avalonia to deliver on its promise of "One codebase, infinite possibilities" while maintaining high performance and native platform integration where it matters most.
Loading

0 comments on commit 80f3fe9

Please sign in to comment.