HarmonyOS 是新一代的智能终端操作系统,为不同设备的智能化、互联与协同提供了统一的语言。带来简洁,流畅,连续,安全可靠的全场景交互体验。
华为鸿蒙系统(英文:huaweiHarmonyOS,HongmengOS)。在2019年8月9日,华为在东莞举行华为开发者大会,正式发布操作系统鸿蒙OS。
HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。
在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景(移动办公、运动健康、社交通信、媒体娱乐等)业务能力。
HarmonyOS有三大特征:
对消费者而言,HarmonyOS能够将生活场景中的各类终端进行能力整合,实现不同终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。
对应用开发者而言,HarmonyOS采用了多种分布式技术,使应用开发与不同终端设备的形态差异无关,从而让开发者能够聚焦上层业务逻辑,更加便捷、高效地开发应用。
对设备开发者而言,HarmonyOS采用了组件化的设计方案,可根据设备的资源能力和业务特征灵活裁剪,满足不同形态终端设备对操作系统的要求。
HarmonyOS提供了支持多种开发语言的API,供开发者进行应用开发。支持的开发语言包括Java、XML(Extensible Markup Language)、C/C++ 、 JS(JavaScript)、CSS(Cascading Style Sheets)和HML(HarmonyOS Markup Language)。
HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。HarmonyOS技术架构如下所示。
系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
框架层为HarmonyOS应用开发提供了Java/C/C++/JS等多语言的用户程序框架和Ability框架,两种UI框架(包括适用于Java语言的Java UI框架、适用于JS语言的JS UI框架),以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,HarmonyOS设备支持的API也会有所不同。
应用层包括系统应用和第三方非系统应用。HarmonyOS的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。FA在进行用户交互时所需的后台数据访问也需要由对应的PA提供支撑。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
一、鸿蒙系统与安卓系统的区别在哪,是不是也是和安卓一样基于虚拟机创建的?
1、安卓与鸿蒙手机操作系统基本都是基于Linux开发的,但两者的构架是不同的:
安卓系统是基于linux的宏内核设计:宏内核包含了操作系统绝大多数的功能和模块,而且这些功能和模块都具有最高的权限,只要一个模块出错,整个系统就会崩溃,这也是安卓系统容易崩溃的原因。好处就是系统开发难度低。(而现在,华为新研发的方舟编译器就是为了解决这个问题的,任何由编译器编译的android软件都可以直接与系统底层进行通信,鸿蒙系统加编译器将取代虚拟机。)Android是用Java语言编写的,很容易学习。但它有一个缺点:不能与系统底层直接进行通信活动,必须通过虚拟机来运行。说直接点就是虚拟机相当于传递者:首先Android应用程序安装在虚拟机上,然后从虚拟机传输到机器的底部,如果虚拟机出了问题话的那系统就是卡住。而且鸿蒙系统中的方舟编译器就是为了解决这个问题的,任何由编译器编译的android软件都可以直接与系统底层进行通信,鸿蒙系统加编译器将取代虚拟机。
鸿蒙操作系统是微内核设计:微内核仅包括了操作系统必要的功能模块(任务管理、内存分配等)处在核心地位具有最高权限,其他模块不具有最高权限,也就是说其他模块出现问题,对于整个系统的运行是没有阻碍的。微内核的开发难度很大,但是系统的稳定性很高。根据目前华为公布的一些资料信息,我们可以推断出鸿蒙系统是用C、C++语言编写即直接使用机器语言编写app,取消安卓系统的ART虚拟机,直接编译为二进制机器码,这样做的好处就是不需要中转,执行速度快;但这样的操作也有一些缺点就是必须要有大量的静态方案且内存空间要求更高。
有报道说鸿蒙系统比谷歌的安卓系统快运行速度快了60%,为什么会快这么多呢?原因有以下两点:
其一;谷歌的安卓系统是基于Linux开发,华为的“鸿蒙”系统也是基于Linux开发,并对Linux进行大量优化,此前,华为推出自研EROFS超级文件系统、仅是基于华为方舟编译器开发的应用,就能够让安卓系统性能提升数倍来看,底层整合了EROFS和方舟编译器的华为鸿蒙系统,自然要比安卓系统快很多
其二:安卓系统程序员写APP使用的是JAVA高级语言,打包成APK到安卓系统后。由于安卓系统读不懂JAVA高级语言,必须借助实时翻译(JAVA虚拟机)进行理解(转换成机器语言)。因为多了"翻译"这个步骤,所以安卓系统的流畅度一直以来都比不过苹果iOS。而方舟编译器,则是让APK打包之前,统一把指令换成安卓系统能读懂的机器语言,也就是省去了"翻译"这个步骤,效率自然就更高。
2、鸿蒙系统与安卓系统的使用范围不同:
第一:安卓系统适用于手机,而鸿蒙系统对设备兼容性更强,同时支持智能手机、智能穿戴设备、电脑、电视等智能家居设备,形成一个无缝的、统一的操作系统,并且兼容所有的安卓应用,适应当下的5G和物联网时代。
3、安卓系统经过多年发展,软件生态非常完善,鸿蒙系统目前来说还谈不上生态。华为推出鸿蒙操作系统并不困难,相对于推出操作系统而言,更难的是如何聚拢开发者为这款操作系统持续开发各类优质应用,让这款操作系统得以具备真正价值,继而发展壮大,在系统开发商、硬件厂商、开发者与用户之间形成良性正循环。要让开发者为鸿蒙操作系统开发应用,需要的是实实在在的政策激励,利益引导,依靠情怀等是无法解决也是不可持续的,这就是华为推出鸿蒙系统之后需要解决的一大难题!
3、鸿蒙系统的安全性怎么样,能否一改国内安卓软件的隐私问题。
上面我们聊到鸿蒙与安卓系统的区别中说到两个概念:微内核(鸿蒙),宏内核(安卓)。鸿蒙操作系统采用微内核,天然无Root,细粒度权限控制从源头提升系统安全。而安卓系统有Root权限,用户可以完全掌控经过Root之后的安卓系统。而鸿蒙则没有Root这一选项。同时据华为终端公司官微消息,鸿蒙基于微内核技术的可信执行环境,通过形式化方法显著提升了内核安全等级,全面提升全场景终端设备的安全能力。对此余承东曾表示过:微内核可以把每一个单独加锁,不可能一个钥匙攻破所有地方。而外核的相互隔离更加安全也更加高效。从全球最权威的安全机构评测看,现在外面的操作系统只能达到二三级,而我们的系统能达到5和5+最高级别。这是最高级别的安全OS。所以鸿蒙系统的安全性远高于安卓系统。
开源网站
在开发者大会上宣布将 HarmonyOS源代码捐赠给中国开放原子开源基金会,并在大会上公布了鸿蒙系统的开源路线。
OpenHarmony 官方源码地址:
https://openharmony.gitee.com/openharmony
开发工具
鸿蒙使用基于 Intellij IDEA 深度定制研发的 DevEco Studio 作为其开发工具。
DevEco Studio 下载地址:
https://developer.harmonyos.com/cn/develop/deveco-studio
在应用开发过程中,HarmonyOS(鸿蒙)和 Android(安卓)开发环境有什么不同呢?
HarmonyOS 项目和 Android 项目对比
资源目录的变更
①资源目录名称有更改
安卓 res 目录,这里用 resources 目录,它包括 base 和 rawfile 两部分,其中 base 是核心的资源目录,常用的都放在这里面,便于查找和使用。rawfile 会原封不动打包到生成的应用里面。
安卓是 res/values 目录,这里是 resources/element 目录。安卓 raw 目录,这里用 rawfile 目录。
②资源目录分门别类,统一管理
Android 目录结构就比较松散,没有统一的文件夹管理,res/values 目录里面可以创建各种资源的 xml 文件,只能去官网查看有哪些可以创建。
这里有 base 目录统一管理。
③部分资目录删除,新增一些资源目录类型
比如 float.json 文件,plural.json 文件,profile 文件夹等。
④编写方式有改变,xml 变更为 json
安卓的 values 里面是 xml 写的,这里是 element 目录里面的,都是 json 格式的。
最后来一张同类型资源对比图:
完整的资源目录的具体变更对比如下图所示:
配置文件的变更
清单文件 AndroidManifest 变成了 config.json 文件。
Java 代码的变更
完整的 Java 目录的变更对比如下图所示:
HarmonyOS 项目和微信小程序项目对比
完整的 JS 目录和微信小程序对比如下图所示:
HarmonyOS 优点
多终端开发调试便捷
鸿蒙目前支持可以开发 TV,wearable, LiteWearable 几种设备类型,未来还会扩展到其他设备。并且一次代码就可以在不同设备快速部署和调试,操作非常简易。
对开发者友好,开发难度和学习成本低
①IDE 开发工具方面
DevEco Studio 是基于 Intellij IDEA 工具定制化深度研发的一个工具,所以对于那些熟悉 IDEA,或 Android Studio 或 WebStorm 这些 IDE 开发工具的朋友们来说应该是很熟悉的,不熟悉的朋友们也可以很快就上手。
另外正是由于是定制化的,所以去掉了 IDEA 里面杂七杂八的东西,只保留与鸿蒙项目有关的 SDK 和工具与设置,开发工具简洁纯净清爽,非常好用。
②语言平台
开发 TV 和 Wearable 项目可以选择 Java 或 JS 语言作为开发语言,开发 Lite Wearable 项目仅支持 JS 语言,都是大众喜爱和用的多的开发语言,大家的接受程度很高。
另外开发 Lite Wearable 项目需要用到 **.hml** 后缀的文件,这是鸿蒙团队自研的一个标签性语言,类似于 html,学习起来一点都不费力。
③框架方面
如果使用 Java 开发项目,你通过 Ctrl+鼠标左键点进去查看源码,你会发现 SDK 里面有很多 API 都是跟 Android 类似的,似曾相识的感觉。
不过也有一些是基于鸿蒙内核和底层一些特性新增的。如果你使用 JS 开发,你会发现和微信小程序写起来很类似。
所以框架层大家一看基本都可以看明白是怎么操作了,很好理解,也是大家都可以接受的,学习起来也不是难题。
④权限处理
另外安卓权限的处理是很麻烦的,鸿蒙里面在 config.json 里面可以配置全局的权限,被别人使用的权限,单独模块的权限,以及自定义属于自己的权限。
而且 Java 代码里面也可以用代码动态申请权限,鸿蒙的权限处理的颗粒度更细,对开发者来说,处理起来也是非常方便的。
⑤测试方便,无需下载模拟器
鸿蒙使用的是云测试,登陆开发者账号即可连接云设备,无需下载模拟器,还是很便捷的,即使换一台电脑,也不用担心因为没有下载模拟器而耽误测试进度,只要有网络,登陆账号即可进行测试。
以上只是 HarmonyOS(鸿蒙)应用开发工具 DevEco Studio 简单介绍,还有更多关于 DevEco Studio 的优势及特点等待您的挖掘。
DevEco Studio 2.0 是为了软件应用开发者准备的集成开发环境。风格类似于 Android Studio,也是基于 IDEA 的开源版本进行二次开发得来的。
HUAWEI DevEco Device Tool 则是为了硬件开发者准备的 IDE。
如果是软件应用开发者选择前者。
华为在全面开放鸿蒙系统的同时,会在华为开发者联盟内,全面支持鸿蒙应用的应用后台,渠道分发,数据统计,收益分成等等。
用户应用程序泛指运行在设备的操作系统之上,为用户提供特定服务的程序,简称“应用”。
在HarmonyOS上运行的应用,有两种形态:
在HarmonyOS文档中,如无特殊说明,“应用”所指代的对象包括上述两种形态。
HarmonyOS的用户应用程序包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。
一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模块类型,如图1所示。
图1 APP逻辑视图
Ability是应用所具备的能力的抽象,一个应用可以包含一个或多个Ability。Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。
库文件是应用依赖的第三方代码(例如so、jar、bin、har等二进制文件),存放在libs目录。
应用的资源文件(字符串、图片、音频等)存放于resources目录下,便于开发者使用和维护。
配置文件 (config.json) 是应用的Ability信息,用于声明应用的Ability,以及应用所需权限等信息。
描述应用软件包中每个HAP的属性,由IDE编译生成,应用市场根据该文件进行拆包和HAP的分类存储。HAP的具体属性包括:
HAR(HarmonyOS Ability Resources)可以提供构建应用所需的所有内容,包括源代码、资源文件和config.json文件。HAR不同于HAP,HAR不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。
各类设备(手机/平板、智能穿戴、智慧屏等)通用的用户应用程序开发历程如下表所示。
任务 |
简介 |
相关资源 |
---|---|---|
开发Ability |
Ability是HarmonyOS应用程序的重要组成部分,分为FA(Feature Ability)和PA(Particle Ability)两种类型:
进行HarmonyOS应用开发,首先要了解Ability如何使用。 |
|
开发UI |
FA需要提供UI用于与用户进行交互,HarmonyOS提供了Java UI和JS UI两种UI框架:Java UI提供了细粒度的UI编程接口,使应用开发更加灵活;JS UI提供了相对高层的UI描述,使应用开发更加简单。 说明 针对轻量级智能穿戴(Lite Wearable),现阶段只使用JS语言进行应用开发,详见轻量级智能穿戴开发。 |
|
开发业务功能 |
|
|
HarmonyOS除支持传统方式的需要安装的应用外,还支持提供特定功能的免安装的应用(即原子化服务),供用户在合适的场景、合适的设备上便捷使用。
原子化服务相对于传统方式的需要安装的应用更加轻量,同时提供更丰富的入口、更精准的分发。原子化服务的详细介绍请参见“原子化服务”。
其基本开发历程如下表所示。
任务 |
开发历程 |
相关内容 |
---|---|---|
了解HarmonyOS |
了解HarmonyOS的系统定位、技术特性、应用开发的基本概念和基础知识,熟悉HarmonyOS应用开发通用流程。 |
|
设计原子化服务 |
在设计阶段,需要满足原子化服务的设计规范,包括图标、卡片、分布式等规范。 |
原子化服务设计 |
掌握原子化服务约束 |
了解原子化服务之间的调用管控机制。 |
三方应用调用管控机制 |
开发原子化服务基础体验 |
了解原子化服务总体开发规则、如何开发服务卡片等基础体验。 |
|
开发原子化服务分布式体验 |
了解如何开发流转、分享等分布式体验。 |
|
开发者完成HarmonyOS应用开发后,需要将应用打包成APP,用于发布到华为应用市场。发布应用的流程如下图所示。
关于以上流程的详细介绍,请继续查阅本章节内容。
HarmonyOS应用通过数字证书(.cer文件)和HarmonyAppProvision文件(.p7b文件)来保证应用的完整性,需要通过DevEco Studio来生成密钥文件(.p12文件)和证书请求文件(.csr文件)。同时,也可以使用命令行工具的方式来生成密钥文件和证书请求文件。
基本概念
使用DevEco Studio生成密钥和证书请求文件
说明
如果本地已有对应的密钥,无需新生成密钥,可以在Generate Key界面中点击下方的Skip跳过密钥生成过程,直接使用已有密钥生成证书请求文件。
使用命令行工具生成证书请求文件
使用Open JDK携带的Keytool工具生成证书请求文件。
生成公私钥文件的参数说明如下:
说明
请记录下alias、storepass和keypass的值,在后续配置签名信息操作会使用到。
生成证书请求文件的参数说明如下:
通过生成的证书请求文件,向AppGallery Connect申请发布证书和Profile文件,详细操作请参考下表。
步骤 |
操作步骤 |
操作说明 |
操作指导 |
---|---|---|---|
1 |
创建AGC项目 |
申请发布证书前,需要登录AppGallery Connect后创建一个项目。 说明 如果在申请调试证书时已经创建了项目和应用,则可以跳过“创建AGC项目”和“创建HarmonyOS应用”步骤。 |
创建您的AGC项目 |
2 |
创建HarmonyOS应用 |
在AppGallery Connect项目中,创建一个HarmonyOS应用,用于发布证书和Profile文件申请。 |
创建HarmonyOS应用 |
3 |
申请发布证书和Profile文件 |
在AppGallery Connect中申请、下载发布证书和Profile文件。 |
申请发布证书和Profile文件 |
用于发布的证书和Profile文件后,请在DevEco Studio中进行签名,请参考配置签名信息。
编译构建APP需要使用到制作的私钥(.p12)文件、在AppGallery Connect中申请的证书(.cer)文件和Profile(.p7b)文件。然后在DevEco Studio中对工程进行配置。
在File > Project Structure > Project > Signing Configs > Release窗口中,配置工程的签名信息。
设置完签名信息后,点击OK进行保存,然后使用DevEco Studio生成APP,请参考编译构建APP。
打包APP时,DevEco Studio会将工程目录下的所有HAP模块打包到APP中,因此,如果工程目录中存在不需要打包到APP的HAP模块,请手动删除后再进行编译构建生成APP。
将HarmonyOS应用打包成APP后,通过AppGallery Connect将HarmonyOS应用分发到不同的设备上。可以根据发布HarmonyOS应用指导将APP上架到华为应用市场。