简述
下面就以应用、开发和系统视角来简单阐述
应用视角
技术手段:跨端迁移、显示协同、交互协同和算力协同。
服务原子化:将服务拆分,服务可被多个应用共享。借助机器学习等技术,让服务主动为人服务。
华为移动服务
华为公司推出的一系列服务的合集,包括华为账号服务、应用内支付服务、推送服务、华为地图和广告服务等。
开发视角
统一生态,打造超级终端系统;
一次开发多端部署:提供框架,方便对业务逻辑和界面逻辑进行复用;设计组件化、小型化,支持多种终端设备按需弹性部署;通过编译链关系自动生成组件化的依赖关系,降低硬件设备的开发门槛。
应用与服务解耦:应用与服务生命周期既可共享也可独立。
系统视角
- 内核层:可以支持多种不同操作系统;设备驱动采用
来统一。 - 系统服务层:核心能力集合,通过框架层对应用程序提供服务;
- 框架层:给用户和开发者提供了语言框架、
框架和 框架。 - 应用层:包括系统应用和扩展应用和第三方非系统应用。华为引入了
模型。
分布式软总线
分布式软总线是多种终端设备的统一基座,为设备之间的互连互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发任务和传输数据。
此外,
- 身份安全:通过零信任模型(全盘质疑并验证)、多因素融合认证(通过不同设备上标识同一用户的认证凭据关联起来,用于标识一个用户)和协同互助认证(信息采集和认证可以在不同的设备上完成)来实现协同身份认证。
- 设备安全:在分布式终端场景下,只有保证用户使用的设备是安全可靠的,才能在源头保证安全。通过安全启动(确保源头是完整且未经篡改的)、可信执行环境(基于硬件的)和设备证书认证(为具备可信执行环境的设备预置设备证书)来保证设备安全。
- 数据安全:
围绕数据的生成、存储、使用、传输以及销毁过程进行全生命周期的保护,从而保证个人数据与隐私以及系统的机密数据(如密钥)不泄漏 。
结构
在开发态,一个应用包含一个或者多个 Module
,可以在 DevEco Studio
工程中创建并编译一个或者多个 Module
。Module
是 Module
都可以独立进行编译和运行。Module
分为 Ability
和 Library
两种类型,Ability
类型的 Module
对应于编译后的 Library
类型的 Module
对应于
当编译之后, Ability
类型的 Module
被打包成 .hap
文件)。.hap
文件通过内部的 module.json5
( type
标签被区分为 Entry
和 Feature
两种类型。Entry
类型的 .hap
是应用的主模块,通常实现应用的入口界面、入口图标和主要的特性功能。Feature
的 .hap
是应用的动态特性模块,通常用于实现应用中的特性模块,对于应用而言是可选的。
Library
类型的 Module
包
每一个 .hap
文件,它们合在一起叫做 bundle
,bundleName
是这个应用的唯一标识。在应用上架到应用市场时,需要把应用包含的所有 .hap
文件(即 Bundle
)打包为一个 .app
后缀的文件用于上架。在这个 .app
包里包含了一个 pack.info
文件来描述应用包的属性。整个
两个重要配置文件
在基于 app.json5
及一个或多个 module.json5
这两种配置文件。
app.json5
主要包含:应用的全局配置信息,包括应用的包名、开发厂商、版本号等基本信息;特定设备类型的配置信息;
module.json5
主要包含:Module
的基本配置信息,例如 Module
名称、类型、描述、支持的设备类型等基本信息;应用组件信息和权限信息。
module.json5 的主要标签 | 含义 |
---|---|
deviceTypes | 标识当前 Module 可以运行在哪类设备上。 |
pages | 标识当前 Module 的 profile 资源,用于列举每个页面信息,取值为长度不超过 |
metadata | |
abilities | 描述 UIAbility 组件的配置信息,包括 launchType |
skill | 标识能够接收的 Want 的特征。方便应用组件之间传递信息。 |
requestPermissions | 标识应用运行时需向系统申请的权限集合。 |
distributionFilter | 该标签用于定义HAP对应的细分设备规格的分发策略,以便在应用市场进行云端分发应用包时做精准匹配。 |
更详细全面的标签解释,可参见官方网站上的 module.json5配置文件。
UIAbility
简述
UIAbility
组件是一种包含 UI 的应用组件,主要用于和用户交互。UIAbility
组件是系统调度的基本单元,为应用提供绘制界面的窗口。一个应用可以包含一个或多个 UIAbility
组件。例如,在支付应用中,可以将入口功能和收付款功能分别配置为独立的 UIAbility
。
UIAbility
生命周期
整个 UIAbility
的生命周期分为五个部分,即 create
、foreground
、background
、destroy
。其中,当应用启动时,UIAbility
进入 create
状态,然后进入 foreground
态。在应用运行期间,会在 foreground
态和 background
上切换。当应用关闭时,则进入 destory
状态,完成 UIAbility
的销毁。具体转换可见下图:
UIAbility
启动模式
UIAbility
实例在启动时具有不同呈现状态。针对不同的业务场景,系统提供了三种启动模式:
singleton
:每次打开只创建一个实例standard
:每次打开都创建实例specified
:文档类应用。当打开同一个文件时不重新创建实例;当打开新文件时创建新实例。
在 UIAbility
启动过程中,必须指定一个默认加载页面,否则会出现白屏现象。重写 onWindowStageCreate
方法,使启动时调用 loadContent()
即可,代码如下:
onWindowStageCreate(windowStage: window.WindowStage) {
// Main window is created, set main page for this ability
windowStage.loadContent('pages/IndexPage', (err, data) => {
// write some logs...
});
}
2
3
4
5
6
模型
UIAbility
采用