Axion Платформа Скачать
Documentation · Engine · 05

Платформенные адаптеры

Как одна и та же модель приложения работает на Windows, macOS, Linux, Android и iOS.

05 Платформенные адаптеры

Кроссплатформенность Axion строится на модели общий Core + platform-specific adapters. Одна и та же модель приложения работает на всех целевых платформах, тогда как реализация WebView и системных возможностей адаптируется под ОС.

5.1Platform Layer

               AXION ENGINE
                    │
            Cross-platform Core
                    │
      ┌─────────────┼─────────────┐
      │             │             │
    Desktop       Mobile       ...
      │             │
 ┌────┼────┐     ┌──┴───┐
 ▼    ▼    ▼     ▼      ▼
Win  Mac Linux Android iOS

Структура каталога platform/:

platform/
├── windows/
├── macos/
├── linux/
├── android/
└── ios/

Основная логика при этом остаётся общей. Адаптеры реализуют только системно-зависимые части.

5.2Desktop

На десктопных платформах WebView реализуется через системные компоненты:

ПлатформаWebViewПроцессСеть
WindowsWebView2 (Chromium)std::process::Command✅ TCP / HTTP
macOSWKWebView
LinuxWebKitGTK

Capabilities process.execute и network.connect доступны на всех десктопных платформах. Приложение может проверить доступность:

const canExec = await axion.capabilities.has('process.execute');
const canNetwork = await axion.capabilities.check('network.connect', 'api.github.com');

5.3Mobile

На мобильных платформах доступны не все capabilities:

ПлатформаWebViewProcessСетьФайлы
AndroidAndroid WebViewApp storage / Document picker
iOSWKWebViewApp storage / Document picker
Platform-specific capabilities. Одна и та же capability может иметь разную реализацию на разных ОС. Например, filesystem.read на desktop даёт доступ к workspace, а на mobile — к app storage и document picker. Некоторые capabilities (например, process.execute) могут отсутствовать на iOS.

5.4Проверка capabilities

Приложение не должно предполагать, что каждая capability доступна на каждой платформе. Используйте:

// Есть ли capability у приложения (заявлена в manifest)?
const has = await axion.capabilities.has('process.execute');

// Покрывает ли capability конкретный target?
const ok = await axion.capabilities.check('network.connect', 'api.example.com');
Соберите рантайм под свою платформу
Сборка