系统功能按照“系统>子系统>功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。
一次开发、多端部署示意图:
基于
分布式软总线、数据管理
分布式Profile
分布式安全认证
构成
支持跨设备应用、远程访问启动、远程调用、链接、迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况、用户的习惯和意图选择合适的设备运行分布式任务。
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才能独立运行。
提供不同规范的组件容器
提供单纯的内容显示
提供具体场景下和用户交互响应的功能
Button
提供点击响应的功能
Slider
提供进度选择的功能
RadioButton
TextFiled
CheckBox
在鸿蒙系统的JavaUI框架中,提供了两种编写布局的方式。
在代码中创建UI布局
通过在XML中声明UI布局
两者创建出的布局没有本质的差别。
ability_main.xml文件按照层次结构描述了界面上各种结构之间的关系。图库部分被声明为一个AdaptliveBoxLayout类型的组件,且包含两个图库对象,这两个对象分别为独立的DirectionalLayout组件,通过对组件设定布局参数和属性值来确定最终的UI布局效果。
在xml中完成布局声明后,需要将其添加到代码中,添加为页面的根布局或者其他布局的子布局。
鸿蒙系统中所有的应用均在应用沙盒内运行,对资源的访问权限均需要对系统进行申请,有系统进行管理。默认情况下应用只能访问有限的资源。
应用权限会受到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)。
按照两级目录性质组成,目录命名必须符合规范,以便根据设备形态匹配相应目录下的资源文件
一级目录
base目录,是默认存在的目录,当相应的resources资源目录中没有于当前设备形态相匹配的限定词目录时,会自动引用该目录中的资源文件。
二级目录
资源目录,存放字符串、颜色、布尔值等基础语言元素,以及媒体、动画、布局等资源文件。