鸿蒙开发|HarmonyOS是什么

一、什么是harmonyOs.

鸿蒙开发

(1)解决用户面对大量智能终端体验割裂的问题。

鸿蒙开发

(2)对开发者而言,harmonyos通过各种分布式技术整合不同超级终端的能力形成一个 虚拟的超级终端。应用开发者可基于harmonyos超级终端开发应用,聚焦上层业务逻辑,无需关注硬件差异。

鸿蒙开发

(3)设备开发者可以按需调用其他终端能力。带来基于超级终端的创新服务体验。

鸿蒙开发

二、harmonyos系统架构

1、harmonyos采用分层架构,共四层,从下向上依次为内核层、系统服务层、框架层、应用层。

系统功能按照“系统>子系统>功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。  

鸿蒙开发

1、一次开发、多段部署

一次开发、多端部署示意图:

鸿蒙开发

分布式任务调度示意图

基于

分布式软总线、数据管理

分布式Profile

分布式安全认证

构成

 支持跨设备应用、远程访问启动、远程调用、链接、迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况、用户的习惯和意图选择合适的设备运行分布式任务。

鸿蒙开发

三、编写一个HarmonyOS应用

3..1 HarmonyOS .app 组成

HarmonyOS应用软件包使用app pack(.app)的形式发布,它是由一个或者多个hap包以及描述每个hap属性的pakc.info组成,hap是abilities的部署包,HarmonyOS应用围绕abilities组件展开,一个hap是由代码(abilities)、资源(resources)、第三方库(libs)以及应用配置文件(config.json)组成。可分为Entry.hap和Feature.hap。  

鸿蒙开发

***Entry***是应用的主模块,一个APP中,对于同一个设备类型必须有且只有一个Entry类型的hap可独立安装运行。

***Feature***是应用的动态特性模块,一个APP可以包含一个或多个Feature类型的hap,也可以不包含。

只有包含abilities的hap才能独立运行。

3.2应用UI布局的编写

 

3.2.1 布局类组件

提供不同规范的组件容器

鸿蒙开发

 

DirectionalLayout 以单一方向排列DependentLayout 以相对位置排列PositionLayout 以确切位置排列StackLayoutAdaptiveBoxLayout

3.2.2 显示类组件

提供单纯的内容显示

 

鸿蒙开发

Text 用于文本显示Image 用于图像显示ClockProgressBar

3.2.3 交互类组件

提供具体场景下和用户交互响应的功能

 

鸿蒙开发

Button 提供点击响应的功能 Slider 提供进度选择的功能 RadioButton TextFiled CheckBox

3.3 在XML中声明UI布局

在鸿蒙系统的JavaUI框架中,提供了两种编写布局的方式。

在代码中创建UI布局 通过在XML中声明UI布局 两者创建出的布局没有本质的差别。

ability_main.xml文件按照层次结构描述了界面上各种结构之间的关系。图库部分被声明为一个AdaptliveBoxLayout类型的组件,且包含两个图库对象,这两个对象分别为独立的DirectionalLayout组件,通过对组件设定布局参数和属性值来确定最终的UI布局效果。

在xml中完成布局声明后,需要将其添加到代码中,添加为页面的根布局或者其他布局的子布局。

3.4 实现应用功能

鸿蒙系统中所有的应用均在应用沙盒内运行,对资源的访问权限均需要对系统进行申请,有系统进行管理。默认情况下应用只能访问有限的资源。

应用权限会受到abilities、应用、系统以及用户等多方面进行共同管理,保证了受限权限接口是在约定好的规则下正常使用。避免权限接口被滥用而导致用户、应用或设备受损。

权限申请

示例中将使用多设备协同访问权限(DISTRIBUTED_DATASYNC)  

鸿蒙开发

在config.json中使用reqPermissions属性对该权限进行声明。(若未进行权限声明,应用将无法申请和获取权限)

在MainAvility.java中基于用户可治可控的原则,在程序运行时主动调用系统动态申请权限的接口,通过系统的弹窗获得用户的授权,敏感权限的使用需要得到用户允许。用户结合应用运行场景的上下文识别出应用申请相应权限的合理性,从而做出正确的选择。即便用户向应用授权了请求的权限,应用在调用权限管控接口前也应该检查自己是否已经获得了权限,而不能把之前获得的权限持久化,因为用户授权后还可以通过设置取消授权。

实现应用迁移

分布式任务调度平台对打在鸿蒙系统的终端提供了统一的组件管理能力,这是远程启动、远程调用、业务无缝迁移等分布式任务。

开发者可以通过Ability中实现IAbilityContinuation接口,调用Ability的迁移方法continueAbility即可将本地业务无缝迁移到指定的设备中。

IAbilityContinuation接口为应用提供了如下几种回调方法:

IAbilityContinuation.onStartContinuation() 可以用于完成迁移前的准备工作。 IAbilityContinuation.onSaveData() 可以用于完成迁移前保存迁移所需的数据 IAbilityContinuation.onRestoreData() 可以用于恢复迁移后所需要的数据 IAbilityContinuation.onCompleteContinuation() 可以用于完成迁移后的工作。 Ability.onStart() 正常的程序启动 响应用户事件

用户事件主要包括手势事件、按键事件

手势事件––可穿戴设备、手机等可触屏设备 按键事件––智慧屏等由遥控器按键操作的设备 为迁移按钮绑定一个用户点击屏幕事件(Conponent.ClickedListener),和一个用于智慧屏按键监听的事件(Conponent.KeyEventListener)。

四.应用的编译、安装、运行

1、resources目录:

按照两级目录性质组成,目录命名必须符合规范,以便根据设备形态匹配相应目录下的资源文件

一级目录 base目录,是默认存在的目录,当相应的resources资源目录中没有于当前设备形态相匹配的限定词目录时,会自动引用该目录中的资源文件。 二级目录 资源目录,存放字符串、颜色、布尔值等基础语言元素,以及媒体、动画、布局等资源文件。

鸿蒙开发

2、在media目录下存放图片 

鸿蒙开发

 3、在ability_main.XML文件中声明Ui布局

鸿蒙开发

鸿蒙开发

4、 在mainAbility文件中完成用户事件的绑定迁移等工作。

鸿蒙开发

5、最后编译生成的APP文件在release目录下。 

鸿蒙开发

 

极客网企业会员

免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。