HarmonyOS:什么是 HarmonyOS、系统架构和 ArkUI 开发

作者: IT Sectr 发布日期: 2026-02-07 阅读时间: 11 分钟

HarmonyOS 是华为专有的操作系统,建立在分布式微内核之上,支持跨平台架构。应用程序开发在 DevEco Studio 环境中使用 ArkUI 框架以 ArkTS 和 C++ 进行。该系统旨在无缝集成智能手机、平板电脑、手表和物联网设备。根据 华为 的数据,HarmonyOS 已安装在全球超过 7 亿台设备上。

要点

  • HarmonyOS — 华为分布式操作系统,拥有自己的微内核和多设备架构
  • ArkTS — 基于 TypeScript 的主要开发语言,用于 HarmonyOS 生态系统
  • ArkUI — 声明式 UI 框架,类似于 SwiftUI 和 Jetpack Compose
  • DevEco Studio — 基于 IntelliJ 的官方 IDE,带有模拟器和 Preview
  • 分布式架构 允许应用程序同时在多个设备上运行

什么是 HarmonyOS?

HarmonyOS 是一个分布式操作系统,由华为开发,于 2019 年首次发布,以应对公司新设备上 Google 服务访问受限的问题。HarmonyOS 建立在自有微内核上,不同于 Linux,旨在实现设备间的无缝操作:智能手机、平板电脑、智能手表、电视、汽车系统和物联网设备。

根据华为(HarmonyOS 生态系统报告,2026)的数据,该系统已安装在超过 7 亿台设备上,包括 3 亿部智能手机。中国市场占安装量的 95%。从 HarmonyOS 5.0(NEXT,2024)开始,系统完全放弃了对 Android AOSP 的兼容性——所有应用程序必须使用 ArkUI 以 ArkTS 或 C++ 编写。

HarmonyOS 的关键特性是其分布式架构:应用程序可以同时在多个设备上运行,在屏幕之间移动界面。例如,用户在手机上启动导航,而界面显示在汽车屏幕上——无需重新编译或额外代码。

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.02019首个版本用于 Smart Screen TV
2.02021智能手机、平板电脑、AOSP 兼容性
3.02022Super Device、Multiscreen Collaboration
4.02023ArkUI 3.0、Live View、Celia Voice Assistant
NEXT (5.0)2024完全放弃 AOSP、微内核、仅 ArkTS

HarmonyOS 架构:分布式微内核

HarmonyOS 的架构与 Android 和 iOS 有着根本的不同。HarmonyOS 没有采用宏内核 Linux,而是使用自己的微内核,实现最少量的特权功能:内存管理、进程调度和进程间通信。所有其他服务都在用户空间运行。

微内核与安全

HarmonyOS 微内核约有 10,000 行代码(Linux 内核超过 2000 万行)。更小的代码库意味着更小的攻击面。该系统使用形式化验证——对内核代码正确性的数学证明。HarmonyOS 在硬件级别支持可信执行环境(TEE),用于生物识别、支付和加密密钥。进程间通信通过 IPC 实现,性能比 Android 的 Binder 高 5 倍。

四层架构

HarmonyOS 架构由四层组成:Kernel Subsystem(微内核 + 驱动程序)、System Service Layer(系统服务:分布式数据、文件系统、安全)、Framework Layer(ArkUI、多媒体、电话、AI 服务)和 Application Layer(用户应用程序)。每层通过 IPC 与下层隔离。

分布式文件系统

HarmonyOS 提供分布式文件系统(DFS),将用户所有设备的存储统一为单个虚拟空间。应用程序通过 URI 访问文件,无需指定设备——系统将请求路由到文件实际存储的设备。DFS 支持端到端加密和常用数据的自动复制。

cpp
// 使用 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 和 ArkTS:界面开发

ArkUI 是华为开发的 HarmonyOS 声明式 UI 框架。界面被描述为具有响应式数据绑定的组件层次结构,类似于 SwiftUI(iOS)或 Jetpack Compose(Android)。ArkTS 是一种基于 TypeScript 的开发语言,具有额外的静态类型检查和通过 @Component、@State、@Prop、@Link 装饰器与 ArkUI 的集成。

ArkTS 核心概念

ArkTS 通过与 UI 框架协调来扩展 TypeScript:@Component——用于声明 UI 组件的装饰器,build()——返回 UI 元素树的必需方法,@State——其更改自动重绘组件的响应式变量,@Prop——来自父组件的输入属性,@Link——双向绑定。所有 ArkUI 组件都使用带有修饰符(.width、.height、.backgroundColor)的链式语法。

java
// ArkTS — ArkUI 上的用户资料屏幕
@Component
struct ProfileScreen {
    @State userName: string = "Anna Petrova";
    @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%');
    }
}

ArkTS 中的 ProfileScreen 组件演示了:@State 用于响应式变量,@Prop 用于输入回调,Column/Stack/Text/Image/Button 作为基本 UI 组件,通过 async/await 进行异步数据加载。加载期间显示 LoadingProgress。所有大小以 vp(虚拟像素)指定——自适应单位,类似于 iOS 中的 pt 或 Android 中的 dp。

针对不同设备的适配

ArkUI 通过 断点系统(xs、sm、md、lg、xl)支持响应式设计,这些断点对应屏幕宽度。从手机切换到平板电脑或手表时,组件会自动重新排列。GridRow 和 GridCol 是自适应容器,根据断点更改列数。尺寸单位:vp(虚拟像素)、fp(字体像素——随字体设置缩放)、lpx(手表的逻辑像素)。

设备类型断点对角线单位
智能手表xs1.2"–2.0"lpx
智能手机sm4.7"–6.9"vp
平板电脑md7.0"–12.0"vp
笔记本电脑lg13.0"–16.0"vp
显示器 / 电视xl24.0"–65.0"vp

DevEco Studio 和开发工具

DevEco Studio 是 HarmonyOS 的官方集成开发环境(IDE),基于 IntelliJ IDEA Community Edition。它包括支持 ArkTS 和 C++ 的代码编辑器、可视化的 ArkUI 编辑器(拖放)、HarmonyOS 设备模拟器、用于即时 UI 预览的 Preview 和用于性能分析的 Profiler。

HarmonyOS 模拟器

DevEco Studio 包含基于 QEMU 的模拟器,支持智能手机(不同屏幕尺寸)、平板电脑、手表和电视。模拟器模拟分布式环境:您可以运行多个虚拟设备并测试跨设备交互。模拟器需要虚拟化(Windows 上的 Hyper-V,Linux 上的 KVM)。

Preview 和 Live Preview

ArkUI Preview 是一项无需构建或启动模拟器即可即时查看 UI 的功能。代码更改在 1-2 秒内显示在 Preview 中。所有标准组件和动画都受支持。Preview 使用不同的断点来测试适应性。Live Preview 通过 USB 或 Wi-Fi 连接到真实设备,以在硬件上进行测试。

HarmonyOS SDK 和 API

HarmonyOS SDK 包括:ArkUI(UI 组件)、Multimedia Kit(音频/视频采集和播放)、Connectivity Kit(蓝牙、Wi-Fi、NFC)、Location Kit(地理位置)、Sensor Kit(传感器)、AI Kit(ML Kit,支持在华为 NPU 上进行设备端推理)。API 版本:API 9(HarmonyOS 3.x)、API 10(4.x)、API 11(NEXT)。

java
// 通过 Multimedia Kit 在 HarmonyOS 上初始化相机
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 上启动预览(ArkUI XComponent)
            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 Services 和 Ability

Atomic Service 是 HarmonyOS 上的最小部署单元。每个服务实现一个或多个 Ability(类似于 Android 中的 Activity)。Page Ability —— 带有 UI 的屏幕,Service Ability —— 后台任务,Data Ability —— 数据访问。应用程序可以将 Ability 委托给另一个设备:例如,UI 在平板电脑上显示,而 AI 处理在带有 NPU 的手机上运行。

分布式数据管理

分布式数据管理(DDM)系统在设备之间同步应用程序状态。DDM 使用分布式数据对象——自动复制到用户所有设备的响应式对象。一个设备上的数据更改会立即反映到所有其他设备上。DDM 支持加密,并考虑网络连接(蓝牙、Wi-Fi、蜂窝数据)。

技术目的类似产品
Distributed Data Objects设备间的响应式数据同步iCloud / Firebase
Distributed File System跨设备的统一文件空间iCloud Drive
Ability Distribute将屏幕委派给其他设备
Super Device将设备统一为单一系统Apple Continuity
Multiscreen Collaboration在多个屏幕上使用一个应用程序Sidecar(iPad + Mac)

Super Device

Super Device —— 一项 HarmonyOS 功能,可将最多 7 台华为设备统一到单个计算环境中。用户在 Super Device 界面中拖拽设备图标:扬声器变成音频输出,平板电脑变成第二个屏幕,手表变成手机上健身应用的心率监测器。所有设备通过分布式总线(Distributed Bus)同步,延迟小于 5 毫秒。

AppGallery 和应用发布

Huawei AppGallery 是 HarmonyOS 的官方应用商店,是全球第三大应用商店,仅次于 Google Play 和 App Store。根据华为(2026 年)的数据,AppGallery 拥有超过 5.8 亿月活跃用户。开发人员注册对个人免费(与苹果的 99 美元不同)。

发布流程

开发人员在 DevEco Studio 中构建应用程序(.hap 格式 —— HarmonyOS Ability Package)。通过 AppGallery Connect 发布:上传 HAP 文件、填写描述(名称、图标、截图)、配置定价模型。平均审核时间为 1-3 个工作日。华为检查安全性(静态分析)、API 兼容性和政策合规性。

盈利模式

AppGallery 支持:付费应用(华为佣金 15-30%)、订阅(15% 佣金)、通过 Huawei Ads Kit 进行广告投放和通过 IAP Kit 进行应用内购买。Huawei Pay 是面向中国市场的支付网关,支持支付宝和微信支付。国际开发人员通过 PayPal 或银行转账收款。

要求描述
格式HAP(HarmonyOS Ability Package)或 App Pack(多个 HAP)
签名通过 DevEco Studio 的数字签名(华为证书)
目标 APIHarmonyOS 3.x 使用 API 9+,HarmonyOS NEXT 使用 API 11+
大小App Pack 最大 4 GB,基础 HAP 最大 200 MB
语言必须支持简体中文(面向中国)
政策遵守华为开发者规则和欧盟 GDPR

Huawei Mobile Services (HMS)

HMS Core 是一组服务,用于在没有 Google 的华为设备上替代 Google Play Services。包括:Push Kit(推送通知)、Map Kit(带导航的地图)、Location Kit(地理位置)、Ads Kit(广告)、Analytics Kit(分析)、Account Kit(通过华为 ID 授权)。HMS Core 可在搭载 HarmonyOS 的设备上和华为 Android 设备上(通过 AppGallery)使用。

常见问题

HarmonyOS 开发使用哪些语言?

主要语言是 ArkTS,它是 TypeScript 的扩展,集成了 ArkUI。对于性能关键模块,通过 Native API (NAPI) 使用 C++。Java 在 HarmonyOS 3-4 上支持旧版应用。华为建议从 HarmonyOS NEXT 开始的所有新项目使用 ArkTS 和 C++。

HarmonyOS 与 Android 有何不同?

HarmonyOS 使用自己的微内核(而非 Linux)、分布式跨设备架构、统一的 DFS 文件系统和响应式 DDM 同步。HarmonyOS NEXT 已完全放弃对 AOSP 的兼容性,并且不支持 APK 应用程序。所有应用程序都使用 ArkTS 或 C++ 编写。

什么是 ArkUI?

ArkUI 是一个用于 HarmonyOS 的声明式 UI 框架,使用 ArkTS 和 C++ 编写。界面通过 @Component 使用 build() 方法和响应式变量 (@State) 来描述。ArkUI 通过断点 (xs-xl)、GridRow/GridCol 和用于 GPU 计算的自定义 Canvas 渲染来支持自适应布局。

HarmonyOS 应用如何分发?

官方商店是 Huawei AppGallery。开发人员注册免费。应用程序以 HAP(HarmonyOS Ability Package)或 App Pack 格式分发。审核需要 1-3 天。商店佣金为 15-30%,具体取决于盈利模式。面向中国市场的应用必须支持简体中文。

什么是 DevEco Studio?

DevEco Studio 是基于 IntelliJ IDEA 的 HarmonyOS 官方 IDE。它包括 ArkTS/C++ 编辑器、可视化 ArkUI 编辑器、基于 QEMU 的模拟器、用于即时 UI 预览的 Preview、用于 CPU/内存分析的 Profiler 以及用于 CI/CD 的 AppGallery Connect 集成。支持 Windows、macOS 和 Linux。

总结

  • HarmonyOS — 华为分布式操作系统,采用微内核,在 NEXT 中放弃 AOSP,支持跨设备
  • ArkTS — 基于 TypeScript 的主要开发语言,带有 @Component、@State、@Prop 装饰器
  • ArkUI — 声明式框架,通过断点和 GridRow/GridCol 实现自适应布局
  • DevEco Studio — IntelliJ 上的 IDE,带有模拟器、Preview 和 AppGallery Connect 集成
  • 分布式架构 包括 DFS、DDM、Ability Distribute 和最多 7 台设备的 Super Device
  • AppGallery — 官方商店,免费注册、HAP 格式、15-30% 佣金
  • HMS Core 提供 Push Kit、Map Kit、Location Kit、Ads Kit、Analytics Kit 和 Account Kit

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读