HarmonyOS — собственная операционная система компании Huawei, построенная на распределённом микроядре с поддержкой кроссплатформенной архитектуры. Разработка приложений ведётся на ArkTS и C++ в среде DevEco Studio с фреймворком ArkUI. Система ориентирована на бесшовную интеграцию смартфонов, планшетов, часов и IoT-устройств. По данным Huawei, HarmonyOS установлена на более чем 700 млн устройств по всему миру.
Главное
HarmonyOS — распределённая операционная система, разработанная Huawei и впервые анонсированная в 2019 году как ответ на ограничение доступа к сервисам Google на новых устройствах компании. HarmonyOS построена на собственном микроядре, отличном от Linux, и ориентирована на бесшовную работу между устройствами: смартфоны, планшеты, умные часы, телевизоры, автомобильные системы и IoT-устройства.
По данным Huawei (HarmonyOS Ecosystem Report, 2026), система установлена на более чем 700 млн устройств, включая 300 млн смартфонов. Китайский рынок составляет 95% установок. Начиная с HarmonyOS 5.0 (NEXT, 2024), система полностью отказалась от совместимости с Android AOSP — все приложения должны быть написаны на ArkTS или C++ с использованием ArkUI.
Ключевая особенность HarmonyOS — распределённая архитектура: приложение может запускаться на нескольких устройствах одновременно, перемещая интерфейс между экранами. Например, пользователь запускает навигацию на телефоне, а интерфейс отображается на экране автомобиля — без перекомпиляции или дополнительного кода.
HarmonyOS 1.0 (2019) — первая версия для умных экранов (Smart Screen), не для смартфонов. HarmonyOS 2.0 (2021) — открыта для смартфонов, планшетов и часов, поддержка AOSP-приложений. HarmonyOS 3.0 (2022) — улучшена распределённая архитектура, Super Device, Multiscreen Collaboration. HarmonyOS 4.0 (2023) — ArkUI 3.0, Live View, улучшенная производительность. HarmonyOS NEXT (5.0, 2024) — полный отказ от AOSP, только нативные HarmonyOS-приложения.
| Версия HarmonyOS | Год | Ключевое нововведение |
|---|---|---|
| 1.0 | 2019 | Первая версия для Smart Screen TV |
| 2.0 | 2021 | Смартфоны, планшеты, AOSP-совместимость |
| 3.0 | 2022 | Super Device, Multiscreen Collaboration |
| 4.0 | 2023 | ArkUI 3.0, Live View, Celia Voice Assistant |
| NEXT (5.0) | 2024 | Полный отказ от AOSP, микроядро, ArkTS-only |
Архитектура HarmonyOS принципиально отличается от Android и iOS. Вместо монолитного ядра Linux HarmonyOS использует собственное микроядро, реализующее минимальный набор привилегированных функций: управление памятью, планирование процессов и межпроцессное взаимодействие. Все остальные службы работают в пользовательском пространстве.
Микроядро HarmonyOS насчитывает около 10 000 строк кода (ядро Linux — более 20 млн). Меньшая кодовая база означает меньше поверхность атаки. Система использует формальную верификацию — математическое доказательство корректности кода ядра. HarmonyOS поддерживает Trusted Execution Environment (TEE) на аппаратном уровне для биометрии, платежей и ключей шифрования. Межпроцессное взаимодействие реализовано через IPC, в 5 раз более производительный, чем Binder в Android.
Архитектура HarmonyOS состоит из четырёх слоёв: Kernel Subsystem (микроядро + драйверы), System Service Layer (системные службы: распределённые данные, файловая система, безопасность), Framework Layer (ArkUI, мультимедиа, телефония, AI-сервисы) и Application Layer (пользовательские приложения). Каждый слой изолирован от нижележащего через IPC.
HarmonyOS предоставляет Distributed File System (DFS), объединяющую хранилища всех устройств пользователя в единое виртуальное пространство. Приложение обращается к файлам по URI без указания устройства — система маршрутизирует запрос на устройство, где физически хранится файл. DFS поддерживает шифрование сквозным ключом (end-to-end) и автоматическую репликацию часто используемых данных.
// Работа с распределённой файловой системой HarmonyOS
#include <dfs/storage_manager.h>
#include <uri/uri_helper.h>
using namespace OHOS::Storage;
// Получение URI файла на распределённом устройстве
Uri GetDistributedFileUri(const std::string& localPath) {
DistributedFileManager manager;
auto deviceList = manager.GetOnlineDevices();
for (const auto& device : deviceList) {
Uri uri = manager.GetFileUri(device.deviceId, localPath);
if (uri.IsValid()) {
return uri; // Файл найден на одном из устройств
}
}
return Uri::Empty();
}
// Чтение данных с удалённого устройства
std::string ReadDistributedFile(const Uri& uri) {
DistributedFile file(uri);
if (!file.Open(OpenMode::READ_ONLY)) {
return "";
}
char buffer[4096];
size_t bytesRead = file.Read(buffer, sizeof(buffer));
file.Close();
return std::string(buffer, bytesRead);
}В примере DistributedFileManager ищет файл на всех онлайн-устройствах пользователя и возвращает распределённый URI. DistributedFile открывает файл физически на удалённом устройстве через IPC, прозрачно для приложения. Разработчику не нужно знать, где хранятся данные — система маршрутизирует запрос автоматически.
ArkUI — декларативный UI-фреймворк HarmonyOS, разработанный Huawei. Интерфейс описывается в виде иерархии компонентов с реактивным связыванием данных, аналогично SwiftUI (iOS) или Jetpack Compose (Android). ArkTS — язык разработки на базе TypeScript с дополнительной статической типизацией и интеграцией с ArkUI через декораторы @Component, @State, @Prop, @Link.
ArkTS расширяет TypeScript гармонизацией с UI-фреймворком: @Component — декоратор для объявления UI-компонента, build() — обязательный метод, возвращающий дерево UI-элементов, @State — реактивная переменная, изменение которой автоматически перерисовывает компонент, @Prop — входное свойство от родителя, @Link — двусторонняя привязка. Все компоненты ArkUI используют цепочечный синтаксис с модификаторами (.width, .height, .backgroundColor).
// ArkTS — экран профиля пользователя на ArkUI
@Component
struct ProfileScreen {
@State userName: string = "Анна Петрова";
@State avatarUrl: Resource = $r("media.avatar_default");
@State isLoading: boolean = false;
@Prop onEditClick: () => void;
aboutToAppear(): void {
this.loadUserData();
}
async loadUserData(): Promise<void> {
this.isLoading = true;
try {
const data = await UserService.getProfile();
this.userName = data.name;
this.avatarUrl = data.avatarUrl;
} catch (error) {
console.error("Ошибка загрузки", error);
} finally {
this.isLoading = false;
}
}
build(): void {
Column() {
if (this.isLoading) {
LoadingProgress()
.width('50%')
.height('50%');
} else {
Stack({ alignContent: Alignment.Center }) {
Image(this.avatarUrl)
.width('100%')
.height('100%')
.objectFit(ImageFit.Cover);
Column() {
Text(this.userName)
.fontSize('24fp')
.fontWeight(FontWeight.Bold)
.fontColor(Color.White);
Button("Редактировать", {
type: ButtonType.Capsule,
stateEffect: true
})
.onClick(() => {
this.onEditClick();
})
.margin({ top: '12vp' });
}
.alignItems(HorizontalAlign.Center)
.width('100%');
}
.width('100%')
.height('300vp');
}
}
.padding('16vp')
.width('100%')
.height('100%');
}
}
// Точка входа приложения
@Entry
@Component
struct MainApp {
build(): void {
Column() {
ProfileScreen({
onEditClick: () => {
console.info("Открыть редактор профиля");
}
});
}
.width('100%')
.height('100%');
}
}Компонент ProfileScreen на ArkTS демонстрирует: @State для реактивных переменных, @Prop для входного callback, Column/Stack/Text/Image/Button как базовые UI-компоненты, асинхронную загрузку данных через async/await. LoadingProgress отображается во время загрузки. Все размеры задаются в vp (virtual pixels) — адаптивных единицах, аналогичных pt в iOS или dp в Android.
ArkUI поддерживает responsive design через систему Breakpoints (xs, sm, md, lg, xl), соответствующих ширине экрана. Компоненты автоматически перестраиваются при переходе с телефона на планшет или часы. GridRow и GridCol — адаптивные контейнеры, меняющие количество колонок в зависимости от breakpoint. Размерные единицы: vp (виртуальные пиксели), fp (font pixels — масштабируются под настройки шрифта), lpx (логические пиксели для часов).
| Тип устройства | Breakpoint | Диагональ | Единица |
|---|---|---|---|
| Smartwatch | xs | 1.2"–2.0" | lpx |
| Смартфон | sm | 4.7"–6.9" | vp |
| Планшет | md | 7.0"–12.0" | vp |
| Ноутбук | lg | 13.0"–16.0" | vp |
| Монитор / TV | xl | 24.0"–65.0" | vp |
DevEco Studio — официальная интегрированная среда разработки (IDE) для HarmonyOS, основанная на IntelliJ IDEA Community Edition. Включает редактор кода с поддержкой ArkTS и C++, визуальный редактор ArkUI (drag-and-drop), эмулятор устройств HarmonyOS, Preview для мгновенного просмотра UI и Profiler для анализа производительности.
DevEco Studio включает эмулятор на базе QEMU, поддерживающий смартфоны (разные размеры экрана), планшеты, часы и телевизоры. Эмулятор симулирует распределённую среду: можно запустить несколько виртуальных устройств и тестировать across-устройственное взаимодействие. Эмулятор требует виртуализации (Hyper-V на Windows, KVM на Linux).
ArkUI Preview — функция мгновенного просмотра UI без сборки и запуска эмулятора. Изменения в коде отображаются в Preview за 1-2 секунды. Поддерживаются все стандартные компоненты и анимации. Preview работает с разными breakpoints для проверки адаптивности. Live Preview подключается к реальному устройству по USB или Wi-Fi для тестирования на железе.
HarmonyOS SDK включает: ArkUI (UI-компоненты), Multimedia Kit (аудио/видео захват и воспроизведение), Connectivity Kit (Bluetooth, Wi-Fi, NFC), Location Kit (геолокация), Sensor Kit (датчики), AI Kit (ML Kit с on-device инференсом на NPU Huawei). API версионированы: API 9 (HarmonyOS 3.x), API 10 (4.x), API 11 (NEXT).
// Инициализация камеры на HarmonyOS через Multimedia Kit
import multimedia.CameraManager;
import multimedia.CameraInput;
import multimedia.PreviewOutput;
@Component
struct CameraView {
@State isPreviewActive: boolean = false;
cameraManager: CameraManager = CameraManager.getInstance();
cameraInput?: CameraInput;
previewOutput?: PreviewOutput;
async startPreview(): Promise<void> {
try {
// Запрос разрешения на камеру
const granted = await Permissions.request("ohos.permission.CAMERA");
if (!granted) return;
// Получение камеры (0 — задняя, 1 — фронтальная)
const camera = await this.cameraManager.getCamera(0);
// Создание входа камеры
this.cameraInput = await this.cameraManager.createCameraInput(camera);
await this.cameraInput.open();
// Запуск превью на Surface (XComponent ArkUI)
this.previewOutput = await this.cameraManager.createPreviewOutput({
width: 1920,
height: 1080
});
await this.previewOutput.start();
this.isPreviewActive = true;
} catch (error) {
console.error("Camera error: " + error.message);
}
}
async stopPreview(): Promise<void> {
await this.previewOutput?.stop();
await this.cameraInput?.close();
this.isPreviewActive = false;
}
}Компонент CameraView демонстрирует работу с Multimedia Kit: запрос разрешения через Permissions.request, получение камеры через CameraManager, создание CameraInput и PreviewOutput. ArkUI Surface (через XComponent) отображает видеопоток. Все операции асинхронные с обработкой ошибок через try/catch.
Распределённая архитектура HarmonyOS — главное отличие от конкурентов. Приложение может состоять из нескольких атомарных сервисов (Atomic Services), каждый из которых запускается на оптимальном устройстве. Пользователь начинает задачу на одном устройстве и продолжает на другом без потери контекста.
Atomic Service — минимальная единица развёртывания на HarmonyOS. Каждый сервис реализует один или несколько Ability (аналог Activity в Android). Page Ability — экран с UI, Service Ability — фоновая задача, Data Ability — доступ к данным. Приложение может делегировать Ability другому устройству: например, UI отображается на планшете, а AI-обработка выполняется на телефоне с NPU.
Система управления распределёнными данными (DDM) синхронизирует состояние приложения между устройствами. DDM использует Distributed Data Objects — реактивные объекты, автоматически реплицирующиеся на все устройства пользователя. Изменение данных на одном устройстве мгновенно отражается на всех остальных. DDM поддерживает шифрование и учитывает сетевое соединение (Bluetooth, Wi-Fi, сотовые данные).
| Технология | Назначение | Аналог |
|---|---|---|
| Distributed Data Objects | Реактивная синхронизация данных между устройствами | iCloud / Firebase |
| Distributed File System | Единое файловое пространство across-устройств | iCloud Drive |
| Ability Distribute | Делегирование экрана на другое устройство | — |
| Super Device | Объединение устройств в единую систему | Apple Continuity |
| Multiscreen Collaboration | Работа с одним приложением на нескольких экранах | Sidecar (iPad + Mac) |
Super Device — функция HarmonyOS, позволяющая объединить до 7 устройств Huawei в единую вычислительную среду. Пользователь перетаскивает иконки устройств в интерфейсе Super Device: колонки становятся аудиовыходом, планшет — вторым экраном, часы — пульсометром для фитнес-приложения на телефоне. Все устройства синхронизируются через распределённую шину (Distributed Bus) с задержкой менее 5 мс.
Huawei AppGallery — официальный магазин приложений HarmonyOS, третий по величине в мире после Google Play и App Store. По данным Huawei (2026), AppGallery насчитывает более 580 млн активных пользователей в месяц. Регистрация разработчика бесплатна для физических лиц (в отличие от $99 Apple).
Разработчик собирает приложение в DevEco Studio (формат .hap — HarmonyOS Ability Package). Публикация через AppGallery Connect: загрузка HAP-файла, заполнение описания (название, иконка, скриншоты), настройка ценовой модели. Среднее время модерации — 1-3 рабочих дня. Huawei проверяет безопасность (статический анализ), совместимость с API и соответствие политикам.
AppGallery поддерживает: платные приложения (комиссия Huawei 15-30%), подписки (15% комиссия), рекламу через Huawei Ads Kit и in-app purchases через IAP Kit. Huawei Pay — платёжный шлюз для китайского рынка, поддерживающий Alipay и WeChat Pay. Международные разработчики получают выплаты через PayPal или банковский перевод.
| Требование | Описание |
|---|---|
| Формат | HAP (HarmonyOS Ability Package) или App Pack (несколько HAP) |
| Подпись | Цифровая подпись через DevEco Studio (Huawei Certificate) |
| Целевая API | API 9+ для HarmonyOS 3.x, API 11+ для HarmonyOS NEXT |
| Размер | До 4 ГБ для App Pack, до 200 МБ для базового HAP |
| Языки | Обязательная поддержка китайского (упрощённого) для Китая |
| Политика | Соответствие Rules for Developers Huawei и GDPR для ЕС |
HMS Core — набор сервисов, заменяющих Google Play Services на устройствах Huawei без Google. Включает: Push Kit (push-уведомления), Map Kit (карты с навигацией), Location Kit (геолокация), Ads Kit (реклама), Analytics Kit (аналитика), Account Kit (авторизация через Huawei ID). HMS Core доступен на устройствах с HarmonyOS и на Android-устройствах Huawei (через AppGallery).
Часто задаваемые вопросы
Основной язык — ArkTS, расширение TypeScript с интеграцией ArkUI. Для производительных модулей используется C++ через Native API (NAPI). Java поддерживается для легаси-приложений на HarmonyOS 3-4. ArkTS и C++ рекомендованы Huawei для всех новых проектов начиная с HarmonyOS NEXT.
HarmonyOS использует собственное микроядро (не Linux), распределённую архитектуру across-устройств, единую файловую систему DFS, реактивную синхронизацию DDM. HarmonyOS NEXT полностью отказался от совместимости с AOSP и не поддерживает APK-приложения. Все приложения пишутся на ArkTS или C++.
ArkUI — декларативный UI-фреймворк HarmonyOS на языках ArkTS и C++. Интерфейс описывается через @Component с build()-методом и реактивными переменными (@State). ArkUI поддерживает адаптивную вёрстку через Breakpoints (xs-xl), GridRow/GridCol и кастомную Canvas-отрисовку для GPU-вычислений.
Официальный магазин — Huawei AppGallery. Регистрация разработчика бесплатна. Приложение поставляется в формате HAP (HarmonyOS Ability Package) или App Pack. Модерация занимает 1-3 дня. Комиссия магазина — 15-30% в зависимости от модели монетизации. Для Китая обязательна поддержка упрощённого китайского языка.
DevEco Studio — официальная IDE для HarmonyOS на базе IntelliJ IDEA. Включает редактор ArkTS/C++, визуальный редактор ArkUI, эмулятор на QEMU, Preview для мгновенного просмотра UI, Profiler для CPU/памяти и интеграцию с AppGallery Connect для CI/CD. Поддерживает Windows, macOS и Linux.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также