赞
踩
涉及到的技术:一次开发、多段部署
一次开发、多端部署示意图:
分布式任务调度示意图
基于
分布式软总线、数据管理
分布式Profile
分布式安全认证
构成
支持跨设备应用、远程访问启动、远程调用、链接、迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况、用户的习惯和意图选择合适的设备运行分布式任务。
2.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才能独立运行。
2.2 应用UI布局的编写
2.2.1 布局类组件
提供不同规范的组件容器
2.2.2 显示类组件
提供单纯的内容显示
2.2.3 交互类组件
提供具体场景下和用户交互响应的功能
2.3 在XML中声明UI布局
在鸿蒙系统的JavaUI框架中,提供了两种编写布局的方式。
两者创建出的布局没有本质的差别。
以下以在XML中声明UI布局为例
ability_main.xml文件按照层次结构描述了界面上各种结构之间的关系。图库部分被声明为一个AdaptliveBoxLayout类型的组件,且包含两个图库对象,这两个对象分别为独立的DirectionalLayout组件,通过对组件设定布局参数和属性值来确定最终的UI布局效果。
在xml中完成布局声明后,需要将其添加到代码中,添加为页面的根布局或者其他布局的子布局。
2.4 实现应用功能
鸿蒙系统中所有的应用均在应用沙盒内运行,对资源的访问权限均需要对系统进行申请,有系统进行管理。默认情况下应用只能访问有限的资源。
应用权限会受到abilities、应用、系统以及用户等多方面进行共同管理,保证了受限权限接口是在约定好的规则下正常使用。避免权限接口被滥用而导致用户、应用或设备受损。
权限申请
示例中将使用多设备协同访问权限(DISTRIBUTED_DATASYNC)
在config.json中使用reqPermissions属性对该权限进行声明。(若未进行权限声明,应用将无法申请和获取权限)
在MainAvility.java中基于用户可治可控的原则,在程序运行时主动调用系统动态申请权限的接口,通过系统的弹窗获得用户的授权,敏感权限的使用需要得到用户允许。用户结合应用运行场景的上下文识别出应用申请相应权限的合理性,从而做出正确的选择。即便用户向应用授权了请求的权限,应用在调用权限管控接口前也应该检查自己是否已经获得了权限,而不能把之前获得的权限持久化,因为用户授权后还可以通过设置取消授权。
实现应用迁移
分布式任务调度平台对打在鸿蒙系统的终端提供了统一的组件管理能力,这是远程启动、远程调用、业务无缝迁移等分布式任务。
开发者可以通过Ability中实现IAbilityContinuation接口,调用Ability的迁移方法continueAbility即可将本地业务无缝迁移到指定的设备中。
IAbilityContinuation接口为应用提供了如下几种回调方法:
响应用户事件
用户事件主要包括手势事件、按键事件
为迁移按钮绑定一个用户点击屏幕事件(Conponent.ClickedListener),和一个用于智慧屏按键监听的事件(Conponent.KeyEventListener)。
代码中:
//点击事件,用户轻击屏幕
@Override
public void onClick(Conponent.component) {
continueAbility();
}
//按键事件,用户按下遥控器中心按钮
@Override
public boolean onKeyEvent(Conponent.component,KeyEvent keyEvent) {
if(keyEvent.isKeyDown() && keyEvent.getKeyCode() == keyEvent.KEY_DPAD_CENTER) {
continueAbility();
}
return true
}
使用DevEco Studio打开工程。
目录和IDEA、AndroidStudio基本一致。
源码(java)存放在entry-src-main-java
中
资源文件(resources)存放在entry-src-main-resoures
中
配置文件(config.json)存是entry-src-main-config.json
每个应用**.hap根目录下都存在一个config.json配置文件,主要蕴含应用的全局配置信息**、应用在具体设备上的配置信息、应用包的配置信息。
config.json:
包名
厂商名
版本
包含具体的Ability所包含的具体属性,该标签下的配置只针对当前hap包生效。
包名
类名
类型
Ability提供的能力
应用访问系统或其他应用受保护部分所需要的权限
权限名
resources目录:
按照两级目录性质组成,目录命名必须符合规范,以便根据设备形态匹配相应目录下的资源文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。