HarmonyOS 是华为专有的操作系统,建立在分布式微内核之上,支持跨平台架构。应用程序开发在 DevEco Studio 环境中使用 ArkUI 框架以 ArkTS 和 C++ 进行。该系统旨在无缝集成智能手机、平板电脑、手表和物联网设备。根据 华为 的数据,HarmonyOS 已安装在全球超过 7 亿台设备上。
要点
HarmonyOS 是一个分布式操作系统,由华为开发,于 2019 年首次发布,以应对公司新设备上 Google 服务访问受限的问题。HarmonyOS 建立在自有微内核上,不同于 Linux,旨在实现设备间的无缝操作:智能手机、平板电脑、智能手表、电视、汽车系统和物联网设备。
根据华为(HarmonyOS 生态系统报告,2026)的数据,该系统已安装在超过 7 亿台设备上,包括 3 亿部智能手机。中国市场占安装量的 95%。从 HarmonyOS 5.0(NEXT,2024)开始,系统完全放弃了对 Android AOSP 的兼容性——所有应用程序必须使用 ArkUI 以 ArkTS 或 C++ 编写。
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 |
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 支持端到端加密和常用数据的自动复制。
// 使用 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 是华为开发的 HarmonyOS 声明式 UI 框架。界面被描述为具有响应式数据绑定的组件层次结构,类似于 SwiftUI(iOS)或 Jetpack Compose(Android)。ArkTS 是一种基于 TypeScript 的开发语言,具有额外的静态类型检查和通过 @Component、@State、@Prop、@Link 装饰器与 ArkUI 的集成。
ArkTS 通过与 UI 框架协调来扩展 TypeScript:@Component——用于声明 UI 组件的装饰器,build()——返回 UI 元素树的必需方法,@State——其更改自动重绘组件的响应式变量,@Prop——来自父组件的输入属性,@Link——双向绑定。所有 ArkUI 组件都使用带有修饰符(.width、.height、.backgroundColor)的链式语法。
// 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(手表的逻辑像素)。
| 设备类型 | 断点 | 对角线 | 单位 |
|---|---|---|---|
| 智能手表 | xs | 1.2"–2.0" | lpx |
| 智能手机 | sm | 4.7"–6.9" | vp |
| 平板电脑 | md | 7.0"–12.0" | vp |
| 笔记本电脑 | lg | 13.0"–16.0" | vp |
| 显示器 / 电视 | xl | 24.0"–65.0" | vp |
DevEco Studio 是 HarmonyOS 的官方集成开发环境(IDE),基于 IntelliJ IDEA Community Edition。它包括支持 ArkTS 和 C++ 的代码编辑器、可视化的 ArkUI 编辑器(拖放)、HarmonyOS 设备模拟器、用于即时 UI 预览的 Preview 和用于性能分析的 Profiler。
DevEco Studio 包含基于 QEMU 的模拟器,支持智能手机(不同屏幕尺寸)、平板电脑、手表和电视。模拟器模拟分布式环境:您可以运行多个虚拟设备并测试跨设备交互。模拟器需要虚拟化(Windows 上的 Hyper-V,Linux 上的 KVM)。
ArkUI Preview 是一项无需构建或启动模拟器即可即时查看 UI 的功能。代码更改在 1-2 秒内显示在 Preview 中。所有标准组件和动画都受支持。Preview 使用不同的断点来测试适应性。Live Preview 通过 USB 或 Wi-Fi 连接到真实设备,以在硬件上进行测试。
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)。
// 通过 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 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 —— 一项 HarmonyOS 功能,可将最多 7 台华为设备统一到单个计算环境中。用户在 Super Device 界面中拖拽设备图标:扬声器变成音频输出,平板电脑变成第二个屏幕,手表变成手机上健身应用的心率监测器。所有设备通过分布式总线(Distributed Bus)同步,延迟小于 5 毫秒。
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 的数字签名(华为证书) |
| 目标 API | HarmonyOS 3.x 使用 API 9+,HarmonyOS NEXT 使用 API 11+ |
| 大小 | App Pack 最大 4 GB,基础 HAP 最大 200 MB |
| 语言 | 必须支持简体中文(面向中国) |
| 政策 | 遵守华为开发者规则和欧盟 GDPR |
HMS Core 是一组服务,用于在没有 Google 的华为设备上替代 Google Play Services。包括:Push Kit(推送通知)、Map Kit(带导航的地图)、Location Kit(地理位置)、Ads Kit(广告)、Analytics Kit(分析)、Account Kit(通过华为 ID 授权)。HMS Core 可在搭载 HarmonyOS 的设备上和华为 Android 设备上(通过 AppGallery)使用。
常见问题
主要语言是 ArkTS,它是 TypeScript 的扩展,集成了 ArkUI。对于性能关键模块,通过 Native API (NAPI) 使用 C++。Java 在 HarmonyOS 3-4 上支持旧版应用。华为建议从 HarmonyOS NEXT 开始的所有新项目使用 ArkTS 和 C++。
HarmonyOS 使用自己的微内核(而非 Linux)、分布式跨设备架构、统一的 DFS 文件系统和响应式 DDM 同步。HarmonyOS NEXT 已完全放弃对 AOSP 的兼容性,并且不支持 APK 应用程序。所有应用程序都使用 ArkTS 或 C++ 编写。
ArkUI 是一个用于 HarmonyOS 的声明式 UI 框架,使用 ArkTS 和 C++ 编写。界面通过 @Component 使用 build() 方法和响应式变量 (@State) 来描述。ArkUI 通过断点 (xs-xl)、GridRow/GridCol 和用于 GPU 计算的自定义 Canvas 渲染来支持自适应布局。
官方商店是 Huawei AppGallery。开发人员注册免费。应用程序以 HAP(HarmonyOS Ability Package)或 App Pack 格式分发。审核需要 1-3 天。商店佣金为 15-30%,具体取决于盈利模式。面向中国市场的应用必须支持简体中文。
DevEco Studio 是基于 IntelliJ IDEA 的 HarmonyOS 官方 IDE。它包括 ArkTS/C++ 编辑器、可视化 ArkUI 编辑器、基于 QEMU 的模拟器、用于即时 UI 预览的 Preview、用于 CPU/内存分析的 Profiler 以及用于 CI/CD 的 AppGallery Connect 集成。支持 Windows、macOS 和 Linux。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。