HarmonyOS应用开发实战:基础篇

978-7-115-68017-4
作者: 李高峰李世军邵勇强李林锋
译者:
编辑: 张涛

图书目录:

详情

本书是一本系统性的鸿蒙开发教材,旨在帮助开发者快速掌握鸿蒙应用开发的核心技术与实战方 法。本书内容丰富,涵盖从基础理论到高级应用的全方位知识,适合不同层次的开发者阅读和参考。 全书分 5 篇,主要内容如下: 鸿蒙生态概述篇介绍了 HarmonyOS 的诞生背景、发展历程和设计理念等理论知识及开发环境的搭 建,为读者开发应用打下基础;应用开发基础与框架篇不仅介绍了 HarmonyOS 提供的丰富的开放能力, 还介绍了 UI 开发、Web 组件开发、多媒体开发、 AI 开发、“一次开发,多端部署”等开发技术,让开 发者逐步提升多场景开发的能力;应用开发进阶篇聚焦于应用安全能力构建和应用并发的效率提升,通 过强化应用防护与运行效率,为用户提供更安全和更流畅的应用体验;应用服务接入篇聚焦于华为提供 的各种开放服务,如账号一键登录、在线支付、通知和实况窗、跨应用拉起及广告服务等, 通过真实案 例的演示,帮助开发者在应用中无缝集成这些系统级服务能力,助力开发者打造高质量、功能丰富的鸿 蒙应用,应用发布篇通过对应用测试、应用上架、数据运营、运维设计的介绍, 帮助开发者快速上架应用。 本书的读者对象广泛,包括鸿蒙新手开发者、有一定开发经验的开发者(如 Android/iOS 开发者)、 应用开发团队、对鸿蒙生态感兴趣的行业人士,以及高等院校的师生。无论是从零开始构建鸿蒙应用, 还是将现有项目迁移到鸿蒙平台,本书都能提供全面的指导。通过阅读本书, 读者不仅能够学会“如何 编写代码”,更能理解“为什么这样设计”和“如何构建真正的分布式应用”,在万物互联的鸿蒙生态 中,开启属于自己的开发之旅。

图书摘要

版权信息

书名:HarmonyOS应用开发实战(基础篇)

ISBN:978-7-115-68017-4

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

版  权

主  编 李高峰

副 主 编 李世军 邵勇强 李林锋

责任编辑 张 涛

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内 容 提 要

本书是一本系统性的鸿蒙开发教材,旨在帮助开发者快速掌握鸿蒙应用开发的核心技术与实战方法。本书内容丰富,涵盖从基础理论到高级应用的全方位知识,适合不同层次的开发者阅读和参考。

全书分5篇,主要内容如下:鸿蒙生态概述篇介绍了HarmonyOS的诞生背景、发展历程和设计理念等理论知识及开发环境的搭建,为读者开发鸿蒙应用打下基础;应用开发基础与框架篇不仅介绍了HarmonyOS提供的丰富的开放能力,还介绍了UI开发、Web组件开发、多媒体开发、AI开发、“一次开发,多端部署”等开发技术,逐步提升开发者多场景开发的能力;应用开发进阶篇聚焦于应用安全能力构建和应用并发的效率提升,通过强化应用防护与运行效率,为用户提供更安全和更流畅的应用体验;应用服务接入篇聚焦于华为提供的各种开放服务,如账号一键登录、在线支付、通知和实况窗、跨应用拉起及广告服务等,通过真实案例的演示,帮助开发者在应用中无缝集成这些系统级服务能力,助力开发者打造高质量、功能丰富的鸿蒙应用;应用发布篇通过对应用测试、应用上架、数据运营、运维设计的介绍,帮助开发者快速上架应用。

本书的读者对象广泛,包括鸿蒙新手开发者、有一定开发经验的开发者(如Android/iOS 开发者)、应用开发团队、对鸿蒙生态感兴趣的行业人士,以及高等院校的师生。无论是从零开始构建鸿蒙应用,还是将现有项目迁移到鸿蒙平台,本书都能提供全面的指导。通过阅读本书,读者不仅能够学会“如何编写代码”,更能理解“为什么这样设计”和“如何构建真正的分布式应用”,在万物互联的鸿蒙生态中,开启属于自己的开发之旅。

推荐序——周红

鸿蒙初辟,万象更新。

我们正经历一场深刻的技术变革。这并非简单的技术迭代,而是数字世界与物理世界的深度融合,是迈向万物互联与万物智能时代的关键转折。基于此理念发展的鸿蒙系统,正成为驱动这场变革的核心引擎。本书正是立足这一时代坐标而写,旨在为开发者提供一把解锁未来的钥匙。

从“鸿蒙初辟”的哲学意象,到“万物智联”的现实图景,鸿蒙操作系统的诞生不止于对单一技术的突破,而是重塑了产业生态的基础设施。鸿蒙所构建的是一套覆盖从芯片到应用、从硬件到服务的全栈生态体系,提供全新的“智能操作系统”——它不仅是智能终端与IoT(Internet of Things,物联网)设备的操作系统,更是智能社会的协同操作系统。它以微内核架构重塑产业生态,构建起安全、流畅、弹性的全场景体验。相较于传统的宏内核架构,鸿蒙采用的微内核架构将操作系统的核心功能和服务模块化,从而具备更高的安全性和更强的灵活性,降低了开发成本并缩短了开发周期,为设备提供了坚不可摧的数字铠甲。

值得一提的是,华为面向全场景、全连接、全智能时代,正通过开源共建的模式,打造开源鸿蒙操作系统平台,赋能更多伙伴共同构建可持续、繁荣的鸿蒙生态。

从基础开发逻辑到复杂场景落地,本书层层递进,呈现了完整的知识图谱。无论是解析分布式能力如何打破设备壁垒,还是阐释元服务如何重构用户体验,本书都致力于让读者看清技术的本质与细节。建议读者在阅读本书时,首先通读各篇的理论部分,深入理解其技术框架与实现要点,进而结合实战案例,体会其在真实开发场景中的应用价值,通过将理论知识与实际开发相结合,在实践中验证并沉淀所学,最终构建完整的技能体系。

通过“原理—案例—实践”的多阶设计,本书将鸿蒙开发知识系统化、结构化、具象化,深度融合“产学协同”理念,将产业需求、行业知识转化为学习素材。书中关于AI开发、数据安全等前沿技术的讲解,不仅能帮助读者学会开发,更能促进读者理解技术在产业中的运用逻辑和原理,从而提升就业竞争力,培养面向未来的创新能力。

作为开发者的入门手册,本书无论是对初涉开发的新人,还是对寻求转型的资深工程师,都能使其循着“理论—实战”的路径快速学以致用。通过本书,读者可以轻松迈出从理论学习到实际开发的关键一步,并最终具备独立设计与完成应用开发的能力。

作为企业开发指南,本书聚焦实战落地,从“一次开发,多端部署”到开放服务的接入,提供了完整的技术路径与实操步骤,有助于企业提升开发效率,促进降本增效,从而在生态竞争中抢占先机。

在我看来,本书的价值远不止于技术传授。

在数字文明加速演进的今天,鸿蒙是“用”出来的,而非“做”出来的——它是在无数用户的实际使用中蓬勃成长起来的。

如今,鸿蒙生态和用户体验进入双向加速的全新阶段,正引领着一场技术革新和产业升级。截至2025年6月,有超过3万个鸿蒙应用和元服务在持续加速开发与更新,其中累计9000多个应用参与了70多种系统级创新体验的联合打造,覆盖政务民生、金融理财、商务办公、购物、教育、旅游等18个垂直领域。在商务办公领域,已有超100家通用办公平台接入鸿蒙,5万多个工作台支持快应用,服务覆盖3800多万家企业。目前,搭载开源鸿蒙操作系统的产品超1200种,搭载鸿蒙操作系统5的终端设备总量超1200万台,鸿蒙开发者超800万人。

虽然鸿蒙生态已覆盖消费者日常生活和办公所需的主要应用,但“行百里者半九十”,相比业界已有的成熟操作系统生态,它仍有完善空间。鸿蒙操作系统将持续提升全场景分布式能力、超级终端和智慧生活服务,让设备间协同更高效、更便捷,从而全面提升用户的智慧生活体验。我们致力于以科技创新推动无障碍技术发展,通过持续创新和负责任行动,让更多人受益于科技进步,将创意转化为跨越设备边界的服务,将智慧融入人类衣食住行的每个场景。我们所见证与共建的,将是一个更高效、更有温度、更具韧性的智能世界。

这便是作者编写此书的初心:不仅要教会读者“如何开发”,更要启发大家“为何而开发”。

鸿蒙的星辰大海,从来不是某一家企业的征途,而是所有参与者共同的事业。鸿蒙的成长,需要千行百业的伙伴同心聚力,需要更多开发者汇集智慧、不断创新。期待本书能成为一叶扁舟,载着每一位读者驶入这片充满可能的蓝海。让我们以鸿蒙为起点,共同绘制数字文明的新图景,在万物互联的时代浪潮中,锚定方向,破浪前行。

周红

华为战略研究院院长

推荐序——陈海波

为了更好地支持开发者、高校师生和第三方培训机构深入学习和掌握鸿蒙应用开发技术,我很高兴向大家推荐我的同事们撰写的这本书。本书既凝聚了许多资深的HarmonyOS专家的宝贵经验,也汇聚了广大鸿蒙应用生态伙伴的智慧。

HarmonyOS为开发者提供了丰富的系统能力和SDK,以及涵盖设计、开发、调试、调优、发布等全生命周期的开发套件和工具链,赋能开发者高效开发鸿蒙应用。本书内容由浅入深、层层递进,为开发者构建了一条清晰、系统的学习路径。全书结构严谨、内容丰富,覆盖了鸿蒙应用开发各方面的知识点,讲解深入细致,并提供了大量实战案例和代码示例,具有很强的可操作性和指导性。通过阅读本书,开发者不仅能深入理解鸿蒙系统的设计理念,还能熟练掌握其应用方法,从而开发出更具创新性与市场竞争力的智能应用。这种能力的积累,不仅有助于开发者在技术层面实现突破,也能让他们在未来行业竞争中赢得先机。

通过本书,开发者还可以了解到面向万物智联时代的创新理念和技术。鸿蒙的研发初衷并不是替代某种产品,而是希望实现面向万物智联时代的新跨越。回顾过去几十年信息技术产业的发展历程,可以发现,不同的时代需要不同特质的操作系统,主机时代、PC互联网时代、移动互联网时代无不如此。世界正朝着万物智联的方向迈进,鸿蒙自问世以来,以面向万物智联时代的技术创新为基石,以开源开放为理念,得到了广大用户和开发者的青睐与支持。鸿蒙凝聚了产、学、研、用各界的智慧,从而迅速崛起,打破了移动操作系统的两极格局。它不仅为广大用户提供了更流畅、更智能、更安全的操作系统,也为广大开发者面向万物智联时代进行新应用开发提供了新的架构与技术。

开发者掌握了鸿蒙应用开发的知识后,不仅可以开发面向华为全场景终端设备的应用,还可以开发基于OpenHarmony的其他行业智能终端应用。鸿蒙的生态是开源、统一的。华为公司在2020年将HarmonyOS的基础能力贡献给开放原子开源基金会,成立了OpenHarmony开源项目,并作为最大的社区贡献者持续完善OpenHarmony的能力。不仅是华为,业界还有许多厂商基于OpenHarmony发布其终端操作系统,赋能千行百业。开发者可以基于统一的技术底座打通消费终端和各行业终端,使能千行百业数智化升级。

每一名读者、每一位开发者都是鸿蒙生态的共建者。让我们携手共建面向万物智联时代的鸿蒙新生态,见证鸿蒙生态系统的发展壮大!

陈海波

华为公司Fellow、鸿蒙首席科学家

前  言

在万物互联、智能协同的时代浪潮中,操作系统作为连接硬件与软件生态的核心枢纽,正日益成为科技竞争的关键高地。2019年,鸿蒙操作系统1.0版正式发布,经过数年的快速发展,鸿蒙操作系统(以下简称鸿蒙系统)已从最初的物联网设备平台,演进为覆盖手机、平板电脑(也称平板计算机)、智慧屏、可穿戴设备等多终端的全场景操作系统,并构建起日益完善的开发者生态。

随着鸿蒙系统的持续升级和用户基数的迅速扩大,越来越多的开发者希望深入掌握其核心应用开发技术,以应对新一代应用开发跨设备、高性能、低延迟等的挑战。然而,当前市面上关于鸿蒙应用开发的图书仍以入门教程为主,缺乏对关键技术的深度剖析与真实项目经验的系统总结。因此,我们组织华为公司内部的技术专家团队,联合编写了《HarmonyOS应用开发实战(基础篇)》。

本书阐述了鸿蒙生态的发展历程与其独特优势,从基础环境搭建到应用开发的关键技术,层层递进,帮助开发者真正掌握鸿蒙应用开发的精髓。本书通过丰富的实战案例与深度技术解析,不仅讲解了如何开发功能完善、性能优异的应用程序,还系统地指导读者完成从应用开发、调试到上架的完整流程,是一本真正意义上的“一站式”鸿蒙应用开发指南。

全书分为5篇,结构清晰、内容实用。

第1篇 鸿蒙生态概述

本篇从宏观视角出发,梳理鸿蒙操作系统的诞生背景、发展历程、核心技术理念,帮助读者建立对鸿蒙生态的整体认知,并理解其在万物互联时代的重要战略意义;还介绍了开发鸿蒙应用的基础知识,包括ArkTS语言基础、DevEco Studio开发环境及如何使用真机运行应用。

第2篇 应用开发基础与框架

本篇不仅介绍了鸿蒙开放能力、UI开发、Web组件开发、方舟数据管理和文件基础服务等内容,帮助读者了解鸿蒙开发框架;还介绍了进行鸿蒙应用开发的基础能力,包括多媒体开发、AI开发、“一次开发,多端部署”等能力。这部分内容不仅体现了鸿蒙系统作为新一代智能终端操作系统的开放性和扩展性,也为未来的研究者和技术开发者提供了丰富的探索空间。无论是初入鸿蒙生态的开发者,还是希望进一步提升开发能力的资深工程师,本篇都能为其提供有价值的指导和启发。本篇的特色在于其实践性和案例驱动性,通过丰富的实际案例帮助开发者在学习过程中快速上手,并解决实际开发中遇到的问题。

第3篇 应用开发进阶

本篇旨在帮助开发者掌握鸿蒙应用开发进阶技术与复杂场景功能实现的关键技术。通过学习应用安全与隐私保护、端云一体化开发及高效并发设计等内容,开发者将能够构建更安全、更具竞争力的应用。这些内容能帮助开发者应对复杂场景下的技术挑战,提升应用的用户体验和市场竞争力。

第4篇 应用服务接入

本篇详解华为账号服务、鸿蒙支付服务、实况窗服务等生态应用服务接入能力,让开发者可以便捷地调用全场景生态资源。这些能力提升了开发者的开发效率与应用的用户体验。例如,账号服务为开发者提供了统一的用户认证与管理能力,鸿蒙支付服务则帮助开发者快速实现安全、便捷的交易功能,而实况窗服务等创新功能则进一步丰富了应用的场景化体验。详细解析的实际案例展示了如何便捷地接入这些服务,以及这些服务在实际开发中的应用场景。

第5篇 应用发布

本篇介绍应用测试、应用上架、数据运营、运维设计的相关内容,帮助开发者测试上架运营的应用,为开发者提供实用的指导,助力开发者成功运营应用。例如,5.1节“应用测试”介绍测试活动的整体框架与关键环节,帮助开发者理解如何通过分层测试策略,在研发早期发现缺陷,在发布前验证功能,在上架后监控质量,最终打造出符合鸿蒙生态标准的高质量应用。

本书以实践为导向,通过丰富、典型的业务场景和项目案例,帮助读者掌握鸿蒙应用开发技能,真正做到“学得会、用得上”。为了更好地帮助读者学习,方便读者运行与调试程序,本书提供了所有章节的示例代码,读者可在“异步社区”获取。

在这个操作系统变革与生态重构的时代,鸿蒙系统正以前所未有的发展速度和开放姿态,构建一个属于中国也属于世界的智能操作系统生态。我们希望本书能够帮助更多开发者快速融入鸿蒙生态,掌握鸿蒙应用开发核心技术,打造更安全、更智能、更流畅的鸿蒙应用。

愿读者在阅读本书的过程中有所收获,并在鸿蒙的世界里开启一段充满创新与挑战的旅程!

感谢以下作者的辛勤付出:蔡波、蔡波、曹晶、曹金山、曹能华、陈晓亮、陈颖、程蕾、邓云、丁冬冬、杜文哲、方习文、费磊、丰成平、高红彦、郭锐、胡绍平、胡涛、黄箭宇、黄蓉军、黄同心、蒋斌、蒋传遐、姜志华、赖海腾、黎晓霞、李方展、李林锋、李明江、李鹏飞、李倩、李韦露、李伟生、李贤胜、李阳、李义兵、李勇、李卓峻、林灿榕、刘成华、刘德钱、刘辉、刘跃华、柳正、毛晨、毛方竹、莫云、平江、任晗、单以文、邵光梅、邵勇强、苏丹、苏宏凯、王静、王守诚、武宜娟、谢玮、熊奇、徐保磊、徐卫国、许传奇、许悦、薛传颂、杨喜、余添二、袁静、曾繁博、曾坚、张凤明、张乐意、张林、张溥峰、张笑驰、张志军、赵曼、赵小虎、周爱彬、周晶、朱维、朱奕。

感谢以下专家对本书提供的专业评审建议:蒋波、蒋潇、李海、李洋、李有福、李玉林、李中源、梁永峰、刘辉、刘耀明、罗荣敏、麻俊波、圣荣、司宏杰、田林一、王俊、王胜、王昕、吴先玉、颜国平、易见、周俊杰。

感谢以下专家对本书代码提供的专业评审建议:鲍思源、曹晶、陈天生、陈鑫淼、崔毅华、冯可荣、刘政、卢剑锋、卢骑、钱修生、孙轶超、王罕有、王亦菲、吴明阳、徐浩、徐帅、杨子恒、姚星宇、姚永伦、易灿、曾宇、章超、张辉、张良发、赵祎、朱枞庐。

在编写本书的过程中,我们得到了来自华为开发者联盟、技术社区以及众多合作伙伴的大力支持,感谢龚体、吴永能、望岳、王珣、陆伟、严雪松、朱祎、徐旭彪、曹大房等人的支持与帮助,以及对于为本书做出贡献但没有列出名字的专家,在此一并感谢!由于编者水平有限,书中难免存在不妥之处,敬请读者提出宝贵建议,以便再版时修订完善。

注:书中部分插图引用自华为官方资料,为保持准确性,未对图中英文进行翻译,特此说明。

为便于读者查阅,本书为每个链接配备了对应的二维码,读者扫描二维码,即可直接访问相应的内容;书中提及的“鸿蒙”均指代华为的HarmonyOS。

编者

第1篇
鸿蒙生态概述

本篇为开发者打开鸿蒙世界的大门。我们将从鸿蒙整体生态入手,带领开发者了解鸿蒙操作系统(HarmonyOS)的诞生背景、发展历程及设计理念。这一部分适合所有对鸿蒙感兴趣的开发者,无论是刚入门的新手,还是已有经验的Android/iOS开发者,都能快速建立对鸿蒙生态的宏观认知。此外,本篇还介绍了进入鸿蒙开发前的必要准备工作,涵盖鸿蒙应用开发的核心语言(如ArkTS)、开发工具(DevEco Studio)的使用,以及如何快速构建第一个鸿蒙应用,让你从“是什么”到“怎么做”逐步入门。

1.1 HarmonyOS概述

1.1.1 HarmonyOS的定义

在当今数字化、智能化的时代浪潮中,信息技术的快速发展和广泛应用正在重塑人们的生活与工作方式。作为连接硬件与软件的核心枢纽,操作系统的功能和性能的优劣直接影响着各类智能设备的用户体验和应用生态的繁荣。

随着物联网技术的兴起,传统的操作系统在应对多设备协同、低功耗运行、实时响应等方面逐渐显露出局限性。不同设备之间的互联互通存在障碍,数据共享和协同工作效率低下,用户在使用多种智能设备时面临烦琐操作和割裂体验。

在这样的技术变革背景下,HarmonyOS应运而生。它是新一代的面向万物互联的智能终端操作系统,其分布式架构设计和微内核架构与“AI+全场景”的产业发展高度契合,旨在打破设备之间的壁垒,构建一个统一、流畅、智能的全场景操作系统,为用户提供无缝衔接的跨设备体验。

1.1.2 HarmonyOS发展历程

HarmonyOS是华为在操作系统领域长期探索与实践的结果,从萌芽到成长的历程展现了华为在技术积累与生态建设上的努力。作为开发者,了解其发展脉络,不仅能更好地把握其技术特性,还能从中找到与未来技术趋势结合的机遇。

1.起源与初步探索(2012—2021年)

2011年,华为建立了聚焦“n+2”技术(n 代表当前市场成熟技术,+2代表对未来两代技术的前沿探索)的2012实验室。2012年,在一次会议上,任正非向2012实验室的专家们坦言:“我们做操作系统和做高端芯片是一样的道理,主要是让别人允许我们用。如果断了我们的‘粮食’,备份系统要能用得上。”从那时起,2012实验室开始组建团队打造移动操作系统。

2016年,华为经过内部评估,认为过度依赖外部操作系统可能带来业务停摆的风险,于是决定立项研发“鸿蒙内核”,并邀请操作系统领域的权威专家陈海波教授担任研发团队的带头人。从立项之初,鸿蒙操作系统便肩负两项重要使命:一是未雨绸缪,为可能的技术断供做好准备;二是尝试解决未来多设备场景下,系统碎片化这一行业顽疾。在鸿蒙系统正式发布前,华为核心技术团队已在内部秘密攻克微内核、分布式等根技术,为后续鸿蒙的发展奠定了坚实的基础。

2019年,鸿蒙操作系统1.0版本正式发布,凭借“一次开发,多端部署”的分布式理念和“1+8+N”的长期战略,迅速吸引了大量开发者加入。2020年,鸿蒙操作系统2.0 版本发布,DevEco Studio一站式开发平台同步登场,为开发者入驻开发平台铺平了道路。

在鸿蒙操作系统发展的初期阶段,华为采取开源开放和兼容并蓄的双轨策略:从2020年起,将鸿蒙的核心基础能力以开源鸿蒙(OpenHarmony)的形式交由开放原子开源基金会管理,为构建开放的产业生态奠定了基础;而在面向消费者的版本中,则通过兼容Android应用,为生态体系的完善争取了宝贵时间。

到2021年,鸿蒙设备数量已突破1.5亿台,标志着这一操作系统已进入规模化应用阶段,为后续发展奠定了坚实基础。

2.技术突破与生态筹备(2022—2024年)

2022年4月,HarmonyOS NEXT项目正式立项。这一阶段,华为全面布局,着手构建支持手机、平板电脑、智能家居、车载设备等终端设备的操作系统。

2023 年9月25日,华为宣布正式启动鸿蒙生态共建,并得到社会各界,特别是互联网头部企业的积极响应和支持。与此同时,HarmonyOS NEXT为开发者提供了全新的ArkUI框架与HarmonyOS SDK,鸿蒙应用开发全面启动。这意味着鸿蒙即将在技术上彻底告别AOSP(Android Open Source Project,Android开放源代码项目)代码,着力构建独立完整的体验体系。

3.生态建设与应用落地(2024年至今)

2024年9月,华为在坂田基地召开“鸿蒙千帆会战”誓师大会,这是鸿蒙生态建设中的一个关键节点。在此次会议上,明确了鸿蒙生态规模化应用的目标,并为生态建设做了充分的组织和资源准备。

2024年10月8日,HarmonyOS NEXT正式进入公测阶段,吸引了大量开发者和用户的关注。这一阶段,鸿蒙操作系统开始向更多设备和应用场景扩展,逐步构建起繁荣的生态系统。

从2012年的萌芽到如今的繁荣,鸿蒙操作系统的发展历程是华为在操作系统领域长期投入与努力的体现。未来,华为将继续以开放的姿态,携手开发者与合作伙伴,共同推动鸿蒙生态的繁荣发展,为万物互联时代提供可靠的技术底座。

1.1.3 HarmonyOS的版本及设计理念概述

下面介绍关键版本迭代说明和HarmonyOS设计理念及基本特征。

1.关键版本发布清单

关键版本发布清单如表1-1所示。

表1-1  关键版本发布清单(截至2025年6月)

HarmonyOS开发者版本(即API版本)

DevEco Studio版本

发布时间

3.1/4.0 (API 9)

DevEco Studio 3.1

2023/05/15

5.0.0 (12)

DevEco Studio 5.0.0 Release

2024/10/22

5.0.1 (13)

DevEco Studio 5.0.1 Release

2024/11/30

5.0.2(14)

DevEco Studio 5.0.2 Release

2025/01/27

5.0.3(15)

DevEco Studio 5.0.3 Release

2025/03/15

5.0.4(16)

DevEco Studio 5.0.4 Release

2025/03/29

5.0.5(17)

DevEco Studio 5.0.5 Release

2025/05/14

5.1.0 (18)

DevEco Studio 5.1.0 Release

2025/06/11

5.1.1(19)

DevEco Studio 5.1.1 Release

2025/06/30

6.0.0(20) Beta1

DevEco Studio 6.0.0 Beta1

2025/06/20

2.HarmonyOS设计理念及基本特征

和当前智能终端操作系统以单设备为主的设计理念不同,HarmonyOS的设计理念是在设备多样的场景下,突破单设备的能力局限,加速信息在设备之间顺畅地流动,为用户提供完整、一致和便捷的分布式体验。

HarmonyOS采用了更先进的内核,覆盖了编程语言、编译器、编程框架、AI框架等方面,操作系统中的核心技术对比如图1-1所示。

图1-1 操作系统中的核心技术对比

1.2 HarmonyOS基础

1.2.1 HarmonyOS应用的关键概念

HarmonyOS应用的定义

HarmonyOS应用是指使用了HarmonyOS的SDK开发的应用程序,能够运行在终端设备上,比如运行在手机、Pad(平板电脑)、PC和可穿戴设备上,具有以下两种形式。

(1)鸿蒙应用:传统方式的需要安装的App。

(2)元服务:具有轻量级、免安装、随处可见、服务直达、自由流转等关键特征的一类服务。

鸿蒙生态核心概念如图1-2所示。

图1-2 鸿蒙生态核心概念

元服务是HarmonyOS提供的一种面向用户的一步直达的服务,元服务和鸿蒙应用是HarmonyOS生态的一体两面,是生态伙伴面向用户提供服务的两种形式。关于元服务,我们会在后面的章节中详细讲解。

1.2.2 HarmonyOS应用开发的核心理念

在鸿蒙开发体系中,用户体验始终是设计的核心考量。所有应用的开发与设计,均以向用户提供最佳体验为核心原则。在此基础上,鸿蒙特别关注多设备协同体验的一致性。面对终端硬件的多样化趋势,如何确保多设备间的无缝协同成为鸿蒙创造极致用户体验的关键考量。

在满足用户体验这一核心原则的前提下,鸿蒙始终坚持“开发代价最小化”的理念。鸿蒙的目标是为开发者提供简洁高效的开发套件,避免重复开发,使开发者能够像开发单一设备应用一样便捷地开发分布式应用。这一设计理念充分体现了鸿蒙对开发效率的高度重视。

在上述原则的指导下,HarmonyOS的核心技术体系包含以下几个关键能力:细粒度的跨设备虚拟化能力、多模态交互能力、异构分布式能力以及系统动态化和场景化的能力。

在此基础上,HarmonyOS还提供了完善的安全与隐私保护机制,为应用的开发与运行提供了全方位的安全保障。

在开发代价最小化和消费者体验最佳两大原则及核心技术的基础上,鸿蒙提出了鸿蒙生态应用与元服务开发的三大核心理念。首先是“一次开发,多端部署”,面向全场景与多设备,让开发者能够轻松实现跨设备的适配;其次是“可分可合,自由流转”,面向架构与体验创新,让开发者能够根据场景和需求实现跨端迁移和多端协同;最后是“统一生态,系统智能”,面向全场景终端设备提供全套能力和通过内置的多样化AI实现应用智能化。这三大理念的有机融合,构建了一个开放、智能、统一的生态系统,为应用开发者提供了强大的开发平台,同时也为消费者带来了前所未有的应用体验。

鸿蒙生态应用和元服务开发的顶层理念与框架如图1-3所示。

图1-3 鸿蒙生态应用和元服务开发的顶层理念与框架

鸿蒙生态应用与元服务开发三大核心理念:“一次开发,多端部署”;可分可合,自由流转;统一生态,系统智能,如图1-4所示。

图1-4 鸿蒙生态应用与元服务开发三大核心理念

1.“一次开发,多端部署”

“一次开发,多端部署”指在同一工程下完成应用开发并上架,可根据需求在多终端设备上灵活部署,旨在帮助开发者高效跨终端开发,提升开发效率与资源利用率。HarmonyOS为此提供多端开发环境、多端开发能力和多端分发机制。

(1)多端开发环境。

DevEco Studio是面向全场景多设备提供的一站式开发平台,支持多端双向预览、分布式调优、分布式调试、多设备模拟、低代码可视化开发等能力,帮助开发者降低成本、提升开发效率、提高质量。

(2)多端开发能力。

应用如需在多个设备上运行,就需要适配不同的屏幕尺寸和分辨率、不同的交互方式(如触摸和键盘输入等)以及不同的硬件能力(如内存差异和器件差异等),开发成本较高。因此,多端开发能力的核心目标是降低多设备应用的开发成本。为了实现该目标,鸿蒙系统提供了几个核心能力,包括多端UI适配、事件交互归一和设备能力抽象,以帮助开发者降低开发与维护成本,提高代码复用量。

(3)多端分发机制。

如果需要开发多设备应用,我们一般会针对不同类型的设备多次开发并独立上架应用,应用开发和维护的成本较高,为了解决这个问题,HarmonyOS提供了“一次开发,多端部署”的能力。开发者开发多设备应用,只需要一套工程,一次打包出多个HAP(Harmony Ability Package),快速上架,即可根据设备类型按需进行分发。除了可以开发传统的应用,开发者还可以开发元服务。元服务是一种面向未来的服务提供方式,具有独立的入口、免安装,可为用户提供一个或多个便捷服务的应用程序形态。鸿蒙系统为元服务提供了更多的分发入口,方便用户获取,同时也增加了元服务“露出”的机会。

2.可分可合,自由流转

HarmonyOS通过模块化开发和自由流转能力,支持应用灵活组合与跨设备运行,提升开发效率和用户体验。

在开发态,开发者通过业务解耦,把不同的业务拆分为多个模块;在部署态,开发者可以将一个或多个模块自由组合,打包成不同的 App Pack 独立上架;在分发运行态,单个 HAP 作为元服务分发满足用户单一使用场景,也可以组合多个HAP,使应用分发适配用户更加复杂的使用场景。

自由流转分为跨端迁移和多端协同两种情况,分别对应时间上的串行交互和并行交互。自由流转不仅带给用户全新的交互体验,也为开发者搭建了一座从单设备时代通往多设备时代的桥梁。

3.统一生态,系统智能

HarmonyOS致力于构建统一生态,支持全场景设备开发与互联。其组件化架构适配标准、轻量及小型设备,覆盖各类智能终端。通过统一分布式组件、模型及互联规范,实现设备间无缝互联,解决生态难题。系统提供HarmonyOS SDK、IDE及开发者服务,支持“一次开发、多端部署”,促进应用分合流转,助力开发者高效融入生态。

HarmonyOS内置AI能力,能满足开发者需求,降低开发门槛,助力应用智能化。其AI能力包括场景化AI能力(如文档扫描、语音输入、AI字幕控件、场景化控件等)、原子化AI能力(如TTS、ASR、OCR能力等)及AI算力(如推理框架、神经网络运行时、CANN等)。意图框架提供了HarmonyOS级的意图标准体系,通过多维系统感知、大模型等能力构建全局意图范式,实现对用户显性与潜在意图的理解,并及时、准确地将用户需求传递给生态伙伴,匹配合适的服务,为用户提供多模态、场景化体验。

1.3 HarmonyOS应用开发简介

本节介绍的是鸿蒙应用开发的入门知识,通过此节内容的学习和初步实践,开发者可以快速掌握ArkTS的基础知识,并且构建出首个HarmonyOS应用,为后续的应用开发奠定基础。

1.3.1 ArkTS简介

1.初识ArkTS语言

ArkTS是HarmonyOS的主要开发语言,基于TypeScript(简称TS)生态扩展,强调静态类型和性能优化。与标准TS相比,主要差异包括:

强制静态类型;

禁止运行时更改对象布局;

限制运算符语义(如一元加法运算符仅用于数字);

不支持structural typing。

ArkTS兼容TS/JavaScript(简称JS)生态,开发者可以使用TS/JS进行开发或复用已有代码。

2.从TypeScript到ArkTS的适配

ArkTS在保留TS基本语法风格的基础上,进一步通过规范强化了静态检查和分析,使得开发者在程序开发阶段能够检测出更多错误,提升程序的稳定性和运行性能。接下来主要解释为什么建议将TS代码适配为ArkTS代码。

(1)程序稳定性。

动态类型语言(如JS)可提升开发者的开发效率,但也易引发运行时错误。例如,未检查的undefined值可能导致程序崩溃。若开发者能在开发阶段发现这些问题,将显著提升程序稳定性。TS通过类型标注机制在程序编译期间能检测出大部分类型错误,但其非强制类型系统仍存在局限,例如,未标注类型的变量会阻碍完整的编译检查。ArkTS通过强制静态类型系统,实施更严格的类型验证机制,从而最大限度地减少运行时错误的发生。

ArkTS通过严格的类型检查提升程序稳定性,要求类的所有属性在声明或构造函数中显式初始化,这与TS中的strictPropertyInitialization选项一致,如代码清单1-1所示。

代码清单1-1 非严格模式下的TS代码

1.class Person {
2.  name: string // undefined
3.  
4.  setName(n: string): void {
5.    this.name = n
6.  }
7.  
8.  getName(): string {
9.  // 开发者使用"string"作为返回类型,这隐藏了name可能"undefined"的事实。
10.  // 更合适的做法是将返回类型标注为"string | undefined",以告诉开发者这个API所有可能
         的返回值的类型。
11.    return this.name
12.  }
13.}
14. 
15.let buddy = new Person()
16.// 假设代码中没有对name赋值,如没有调用"buddy.setName('John')"
17.buddy.getName().length; // 运行时异常:name is undefined

ArkTS要求属性显式初始化,如代码清单1-2所示。

代码清单1-2 属性显式初始化的ArkTS代码

1.class Person {
2.  name: string = ''
3.  
4.  setName(n: string): void {
5.    this.name = n
6.  }
7.  
8.  // 类型为"string",不可能为"null"或者"undefined"
9.  getName(): string {
10.    return this.name
11.  }
12.}
13. 
14.let buddy = new Person()
15.// 假设代码中没有对name赋值,如没有调用"buddy.setName('John')"
16.buddy.getName().length // 值为0, 没有运行时异常

如果name可以undefined,其类型应在代码中精确标注,如代码清单1-3所示。

代码清单1-3 精确标注undefined

1.class Person {
2.  name?: string // 可能undefined
3. 
4.  setName(n: string): void {
5.    this.name = n
6.  }
7. 
8.  // 编译时错误:name可能"undefined",所以不能将这个API的返回类型标注为"string"
9.  getNameWrong(): string {
10.    return this.name
11.  }
12. 
13.  getName(): string | undefined { // 返回类型匹配name的类型
14.    return this.name
15.  }
16.}
17. 
18.let buddy = new Person()
19.// 假设代码中没有对name赋值,如没有调用"buddy.setName('John')"
20. 
21.// 编译时错误:编译器认为下一行代码有可能访问"undefined"的属性,因此报错
22.buddy.getName().length;  // 编译失败
23.buddy.getName()?.length; // 编译成功,没有运行时错误

(2)程序性能。

动态类型语言(如JavaScript)需要在运行时检查对象类型,例如,访问undefined的属性会导致错误。所有JavaScript引擎都会执行以下操作:如果一个值不是undefined,则可以访问其属性;否则,抛出异常。现代JavaScript引擎可以优化这类操作,但仍然存在一些无法消除的运行时检查,这会影响程序性能。TypeScript代码在编译为JavaScript代码后仍存在相同的问题。而ArkTS通过静态类型检查,将代码编译为方舟字节码文件,从而使程序运行速度更快且更易优化。

如代码清单1-4所示,在大多数情况下,函数notify会接收两个string类型的变量作为输入,产生一个新的字符串。但是,如果将一些特殊值作为输入,例如notify(null, undefined),情况会怎么样呢?

代码清单1-4 接收两个string类型变量的函数

1.function notify(who: string, what: string) {
2.  console.log(`Dear ${who}, a message for you: ${what}`)
3.}
4.
5.notify('Jack', 'You look great today')

程序仍会正常运行,输出预期结果:Dear null, a message for you: undefined。程序一切看起来正常,但是请注意,为了保证该场景下程序的正确性,ArkTS引擎总是在运行时进行类型检查,执行类似代码清单1-5中的伪代码。

代码清单1-5 需要进行类型检查的伪代码

1.function __internal_tostring(s: any): string {
2.  if (typeof s === 'string')
3.    return s
4.  if (s === undefined)
5.    return 'undefined'
6.  if (s === null)
7.    return 'null'
8.  // ...
9.}

现在想象一下,如果函数 notify 是某些复杂的负载场景中的一部分,而不仅仅输出日志,那么在运行时执行像__internal_tostring这样的类型检查就会产生性能问题。

如果可以保证在运行时,只有 string 类型的值(而不会是其他值,如 null 或者undefined)可以传入函数notify呢?在这种情况下,因为可以确保没有其他“边界情况”,像__internal_tostring 这样的类型检查就多余了。对于这个场景,这样的机制叫作“null-safety”,也就是说,保证null不是一个合法的string类型变量的值。如果ArkTS有了这个特性,类型不符合的代码将无法编译,如代码清单1-6所示。

代码清单1-6 具有null-safety特性的ArkTS代码

1.function notify(who: string, what: string) {
2.  console.log(`Dear ${who}, a message for you: ${what}`);
3.}
4.notify('Jack', 'You look great today');
5.notify(null, undefined) // 编译时错误

ArkTS将“null-safety”视为重要特性,强制进行严格的null检查,以确保代码编译时无误,从而提高程序稳定性和性能。这为 ArkTS 引擎提供了更多类型信息,有助于优化程序的性能。

1.3.2 开发第一个应用

在初步了解HarmonyOS和ArkTS语言后,让我们通过构建一个简单的鸿蒙应用,来快速了解一下鸿蒙应用的开发流程。

1.搭建开发环境

下载安装DevEco Studio,有关下载安装DevEco Studio的详细文档,读者可参考华为开发者官网(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-software-install)。

2.创建ArkTS工程

(1)若首次打开DevEco Studio,请单击Create Project项创建工程。如果已经打开了一个工程,请在菜单栏依次选择File> New>Create Project项来创建一个新工程。

(2)在图 1-5 所示的选择模板界面上,选择Application(此处以应用开发为例,Atomic Service对应元服务开发),选择模板Empty Ability,单击Next按钮进行下一步配置。若开发者需要进行Native相关工程的开发,请选择模板Native C++。

图1-5 选择模板界面

(3)进入配置工程界面,界面上的Compatible SDK表示兼容最低的API Version,把API Version选择为5.0.4(16),其他参数保持默认设置即可。

(4)单击Finish按钮,工具会自动生成示例代码和相关资源,并完成工程的创建。

3.构建页面

(1)使用文本组件。

在Project窗口中,依次单击entry>src>main>ets>pages项,打开Index.ets文件,进行页面内容的编写,使用RelativeContainer组件对页面进行布局,如代码清单1-7所示。

代码清单1-7 Index.ets代码

1    @Entry
2    @Component
3    struct Index {
4      @State message: string = 'Hello World';
5     
6      build() {
7        RelativeContainer() {
8          Text(this.message)
9            .id('HelloWorld')
10            .fontSize($r('app.float.page_text_font_size'))
11            .fontWeight(FontWeight.Bold)
12            .alignRules({
13              center: { anchor: '__container__', align: VerticalAlign.Center },
14              middle: { anchor: '__container__', align: HorizontalAlign.Center }
15            })
16        }
17      }
18    }

(2)添加按钮。

在默认页面中,我们在Text组件的下方添加一个Button组件,作为按钮响应用户单击操作,从而实现Text组件内容的刷新,如代码清单1-8所示。

代码清单1-8 添加Button组件

1    @Entry
2    @Component
3    struct Index {
4      @State message: string = 'Hello World';
5     
6      build() {
7        RelativeContainer() {
8          Text(this.message)
9            .id('HelloWorld')
10            .fontSize($r('app.float.page_text_font_size'))
11            .fontWeight(FontWeight.Bold)
12            .alignRules({
13              center: { anchor: '__container__', align: VerticalAlign.Center },
14              middle: { anchor: '__container__', align: HorizontalAlign.Center }
15            })
16          Button() {
17            Text('refresh')
18          }
19          .alignRules({
20            top: {anchor: 'HelloWorld', align: VerticalAlign.Bottom},
21            middle: {anchor: '__container__', align: HorizontalAlign.Center}
22          })
23          .backgroundColor('#0D9FFB')
24          .width('40%')
25          .height('5%')
26          .onClick(() => {
27            this.message = 'Welcome';
28          })
29        }
30      }
31    }

(3)在编辑窗口右上角的侧边工具栏中,单击Previewer项,打开预览器。在单击Button组件后,Text组件内容完成刷新,运行效果如图1-6所示。

图1-6 运行效果

4.使用真机运行应用

(1)将搭载HarmonyOS的真机与计算机连接。

(2)依次单击File > Project Structure... > Project > Signing Configs项,在弹出的界面中勾选Support HarmonyOS和Automatically generate signature项,单击界面提示的Sign In项,使用华为账号登录。等待自动签名完成后,单击OK按钮即可,签名配置如图1-7所示。

图1-7 签名配置

(3)在菜单栏中,依次单击Run>Run '模块名称'项,运行应用,如图1-8所示。

图1-8 运行应用

至此,我们完成了第一个鸿蒙应用的开发。

相关图书

DeepSeek原理与项目实战大模型部署、微调与应用开发
DeepSeek原理与项目实战大模型部署、微调与应用开发
精通MCP:AI智能体开发实战
精通MCP:AI智能体开发实战
Python编程快速上手——让烦琐工作自动化(第3版)
Python编程快速上手——让烦琐工作自动化(第3版)
软件工程3.0:大模型驱动的研发新范式
软件工程3.0:大模型驱动的研发新范式
图机器学习
图机器学习
C++程序设计语言(第4版)(上、下册)
C++程序设计语言(第4版)(上、下册)

相关文章

相关课程