From b4d14965eb84845d356252bc156481a4751f05fe Mon Sep 17 00:00:00 2001 From: changcheng-weng Date: Thu, 10 Sep 2020 23:04:10 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E6=A1=86=E6=9E=B6readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...66\345\255\220\347\263\273\347\273\237.md" | 364 ++++++++++++++++++ 1 file changed, 364 insertions(+) create mode 100644 "\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" diff --git "a/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" "b/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" new file mode 100644 index 00000000000..ccb31b67894 --- /dev/null +++ "b/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" @@ -0,0 +1,364 @@ +# 用户程序框架子系统 + +## 简介 + +用户程序框架子系统包含两个大的模块:**Ability子系统**和**包管理子系统**。 + +**1. Ability子系统**,是OpenHarmony为开发者提供的一套开发OpenHarmony应用的框架。Ability子系统各模块如下图1所示: + +**图 1** Ability子系统框架图 + + +![](figures/zh-cn_image_0000001054941316.png) + +- **AbilityKit**是Ability框架提供给开发者的开发包,开发者基于该开发包可以开发出基于Ability组件的应用。基于Ability组件开发的应用有两种类型:基于Javascript语言开发的Ability(**JS Ability**)和基于C/C++语言开发的Ability(**Native Ability**)。**JS应用开发框架**是开发者开发JS Ability所用到框架,是在AbilityKit基础封装的包含js UI组件的一套方便开发者能够迅速开发Ability应用的框架。 +- **Ability**是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability。Ability分为两种类型:Page类型的Ability和Service类型的Ability + - **Page类型的Ability:**带有界面,为用户提供人机交互的能力。 + - **Service类型的Ability**:不带界面,为用户提供后台任务机制。 + +- **AbilitySlice**是单个页面及其控制逻辑的总和,是Page类型Ability特有的组件,一个Page类型的Ability可以包含多个AbilitySlice,此时,这些页面提供的业务能力应当是高度相关的。Page类型的Ability和AbilitySlice的关系如下图2所示: + + **图 2** Ability与AbilitySlice的关系图 + ![](figures/Ability与AbilitySlice的关系图.gif "Ability与AbilitySlice的关系图") + + +- **生命周期**是Ability被调度到启动、激活、隐藏和退出等各个状态的的统称。Ability各生命周期流转如下图3所示: + + **图 3** Ability生命周期流转图 + ![](figures/Ability生命周期流转图.png "Ability生命周期流转图") + + Ability生命周期各状态解析: + + - **UNINITIALIZED**:未初始状态,为临时状态,Ability被创建后会由UNINITIALIZED状态进入INITIAL状态; + + - **INITIAL**:初始化状态,也表示停止状态,表示当前Ability未运行,调用Start后进入INACTIVE,同时回调开发者的OnSatrt生命周期回调; + + - **INACTIVE**:未激活状态,表示当前窗口已显示但是无焦点状态,由于Window暂未支持焦点的概念,当前状态与ACTIVE一致。 + + - **ACTIVE**:前台激活状态,表示当前窗口已显示,并获取焦点,Ability在退到后台之前先由ACTIVE状态进入INACTIVE状态; + + - **BACKGROUND**: 后台状态,表示当前Ability退到后台,Ability在被销毁后由BACKGROUND状态进入INITIAL状态,或者重新被激活后由BACKGROUND状态进入ACTIVE状态。 + + +- **AbilityLoader**负责注册和加载开发者Ability的模块。开发者开发的Ability先要调用AbilityLoader的注册接口注册到框架中,接着Ability启动时会被实例化。 +- **AbilityManager**负责AbilityKit和Ability管理服务进行IPC的通信。 +- **EvenHandler**是AbilityKit提供给开发者的用于在Ability中实现线程间通信的一个模块。 +- **Ability运行管理服务**是用于协调各Ability运行关系、及生命周期进行调度的系统服务。其中,**服务启动**模块负责Ability管理服务的启动、注册等。**服务接口管理模块**负责Ability管理服务对外能力的管理。**进程管理模块**负责Ability应用所在进程的启动和销毁、及其进程信息维护等功能。**Ability栈管理模块**负责维护各个Ability之间跳转的先后关系。**生命周期调度模块**是Ability管理服务根据系统当前的操作调度Ability进入相应的状态的模块**。连接管理模块**是Ability管理服务对Service类型Ability连接管理的模块。 +- **AppSpawn**是负责创建Ability应用所在进程的系统服务,该服务有较高的权限,为Ability应用设置相应的权限,并预加载一些通用的模块,加速应用的启动。 + +**2. 包管理子系统**,是HarmonyOS为开发者提供的安装包管理框架。包管理子系统的由如下图4模块组成: + +**图 4** 包管理子系统框架图 +![](figures/包管理子系统框架图.png "包管理子系统框架图") + +- **BundleKit:**是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化监听接口。 +- **包扫描器**:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化。 + +- **包安装子模块**:安装,卸载,升级一个包;**包安装服务**一个单独进程的用于创建删除安装目录,具有较高的权限。 + +- **包管理子模块**:管理安装包相关的信息,存储持久化包信息。 + +- **包安全管理子模块**:签名检查、权限授予、权限管理。 + +## 目录 + +用户程序框架子系统源代码目录结构如下表1所示: + +**表 1** 用户程序框架子系统源代码目录结构 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

描述

+

foundation/aafwk/frameworks/ability_lite

+

AbilityKit实现的核心代码

+

foundation/aafwk/frameworks/abilitymgr_lite

+

管理AbilityKit与Ability管理服务通信的客户端代码

+

foundation/aafwk/frameworks/want_lite

+

Ability之间交互的信息载体的实现代码

+

foundation/aafwk/interfaces/kits/abilitykit_lite

+

AbilityKit为开发者提供的接口

+

foundation/aafwk/interfaces/innerkits/abilitymgr_lite

+

Ability管理服务为其它子系统提供的接口

+

foundation/aafwk/interfaces/kits/want_lite

+

Ability之间交互的信息载体的对外接口

+

foundation/aafwk/services/abilitymgr_lite

+

Ability管理服务的实现代码

+

foundation/appexecfwk/interfaces/kits/bundle_lite

+

BundleKit为开发者提供的接口

+

foundation/appexecfwk/interfaces/innerkits/bundlemgr_lite

+

AbilityKit实现的核心代码,及包管理服务为其它子系统提供的接口

+

foundation/appexecfwk/frameworks/bundle_lite

+

管理BundleKit与包管理服务通信的客户端代码

+

foundation/appexecfwk/utils/bundle_lite

+

包管理服务实现中用到的工具性的代码

+

foundation/appexecfwk/services/bundlemgr_lite

+

包管理服务的实现代码

+
+ +## 约束 + +- 语言版本 + - C++11版本或以上 + +- 框架针对不同的芯片平台和底层OS能力,规格有所区别 + - Cortex-M RAM/ROM: + - RAM:建议大于20K + - ROM: \> 300K (包含JS应用开发框架,UIKit及引擎等强相关子系统) + + - Cortex-A RAM/ROM: + - RAM:建议大于2M + - ROM:\> 2M (包含JS应用开发框架,UIKit及引擎等强相关子系统) + + + +## 编译用户程序框架子系统 + +- 添加对用户程序框架子系统的编译,以hi3516dv300\_liteos\_a为例 + + - 在build/lite/platform/hi3516dv300\_liteos\_a/platform.json中的subsystem\_list字段下面添加appexecfwk和aafwk,代码如下: + + ``` + { + "name":"aafwk", + "project":"hmf/aafwk/services/abilitymgr_lite", + "path":"build/lite/config/subsystem/aafwk", + "dir":"foundation/aafwk/services/abilitymgr_lite", + "desc":"Ability Services Manager", + "requirement":"yes", + "default":"yes", + "selected":"yes" + }, + { + "name":"appexecfwk", + "project": "hmf/appexecfwk/services/bundlemgr_lite", + "path": "build/lite/config/subsystem/appexecfwk", + "dir": "foundation/appexecfwk/services/bundlemgr_lite", + "desc":"Bundle Services Manager", + "requirement":"yes", + "default":"yes", + "selected":"yes" + }, + ``` + + - 在build/lite/platform/hi3516dv300\_liteos\_a/template/ipcamera.json的“template\_subsystem\_list”字段下面添加"appexecfwk"和"aafwk",代码如下: + + ``` + "template_subsystem_list" : [ + ...... + "distributedschedule", + "aafwk", + "appexecfwk", + "communication", + ...... + ], + ``` + + - 在build/lite/config/subsystem/aafwk/BUILD.gn和/build/lite/config/subsystem/appexecfwk/BUILD.gn中添加对用户程序框架中具体组件的编译,如下: + + ``` + import("//build/lite/config/subsystem/lite_subsystem.gni") + + lite_subsystem("aafwk") { + subsystem_components = [ + "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilitykit_lite", + "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilityMain_lite", + "//foundation/aafwk/services/abilitymgr_lite:aafwk_services_lite", + "//foundation/aafwk/frameworks/kits/tools_lite:tools_lite", + "//foundation/aafwk/frameworks/kits/ability_lite/test:aafwk_testapp_lite", + ] + } + ``` + + ``` + import("//build/lite/config/subsystem/lite_subsystem.gni") + + lite_subsystem("appexecfwk") { + subsystem_components = [ + "//foundation/appexecfwk/kits/appkit_lite:appexecfwk_kit_lite", + "//foundation/appexecfwk/services/bundlemgr_lite:appexecfwk_services_lite", + ] + } + ``` + + - 在foundation/aafwk和foundation/appexecfwk下面添加对业务模块的编译,各个模块都有自己的BUILD.gn文件 + +- 添加完上述的配置后,执行如下命令编译整个系统: + +``` +python build.py ipcamera -p hi3516dv300_liteos_a -b debug +``` + +## 运行用户程序框架子系统的两个服务 + +- 用户程序框架有两个系统服务ability管理服务(abilityms)和(bundlems),两系统服务运行于foudation进程中。 +- abilityms和bundlems注册到sa\_manager中,sa\_manager运行于foundation进程中,sa\_manager为abilityms和bundlems创建线程运行环境。具体创建abilityms、bundlems服务的方式以及使用该服务的方式,可参考[系统服务框架子系统](zh-cn_topic_0000001051589563.md)。 +- 在foundation/distributedschedule/services/safwk\_lite/BUILD.gn中添加对abilityms和bundlems,如下: + +``` +deps = [ + "//foundation/distributedschedule/services/samgr_lite/samgr_server:server", + "//base/dfx/lite/liteos-a/source/log:hilog_a_shared", + "//foundation/aafwk/services/abilitymgr_lite:abilityms", + "//foundation/appexecfwk/services/bundlemgr_lite:bundlems", + "//base/security/services/iam_lite:pms_target", + "//foundation/distributedschedule/services/dtbschedmgr_lite:dtbschedmgr", +] +``` + +## 运行基于AbilityKit开发的Ability + +- 基于AbilityKit开发的Ability的Demo代码位于foundation/aafwk/frameworks/kits/ability\_lite/test路径下,如有需要修改其中的功能,可在unittest的文件中修改代码或增加代码文件,并在BUILD.gn中做相应的修改。 +- 编译该Demo,在shell中执行如下命令,编译成功后,在out/ipcamera\_hi3516dv300\_liteos\_a下面生成libLauncher.so文件: + + ``` + python build.py ipcamera -p hi3516dv300_liteos_a -T //foundation/aafwk/frameworks/kits/ability_lite/test:Launcher + ``` + +- 编写config.json,内容如下: + +``` +{ + "app": { + "bundleName": "com.huawei.launcher", + "vendor": "huawei", + "version": { + "code": 1, + "name": "1.0" + }, + "apiVersion": { + "compatible": 3, + "target": 3 + } + }, + "deviceConfig": { + "default": { + "keepAlive": false + }, + }, + "module": { + "deviceType": [ + "smartVision" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "Launcher", + "moduleType": "entry" + }, + "abilities": [{ + "name": "MainAbility", + "icon": "assets/entry/resources/base/media/icon.png", + "label": "test app 1", + "launchType": "standard", + "type": "page", + "visible": true + }, + { + "name": "SecondAbility", + "icon": "assets/entry/resources/base/media/icon.png", + "label": "test app 2", + "launchType": "standard", + "type": "page", + "visible": true + }, + { + "name": "ServiceAbility", + "icon": "", + "label": "test app 2", + "launchType": "standard", + "type": "service", + "visible": true + } + ] + } +} +``` + +- 生成hap包 + - 按照如下目录结构存放文件,assets/entry/resources/base/media下面放置资源文件: + + ![](figures/zh-cn_image_0000001055712348.png) + + - 将上述文件打包生成zip包,修改后缀为.hap,例如Launcher.hap + +- 安装hap包 + + - 将上述hap包放置到指定目录下面 + - 执行安装命令,安装hap包: + + ``` + ./bin/bm install -p /nfs/hap/Launcher.hap + ``` + +- 安装完成后,通过如下命令,运行Demo + +``` +./bin/aa start -p com.huawei.launcher -n MainAbility +``` + +## 涉及仓 + +aafwk\_frameworks\_kits\_ability\_lite + +aafwk\_interfaces\_innerkits\_abilitykit\_lite + +aafwk\_frameworks\_kits\_content\_lite + +aafwk\_interfaces\_innerkits\_abilitymgr\_lite + +aafwk\_interfaces\_innerkits\_intent\_lite + +aafwk\_interfaces\_kits\_ability\_lite + +aafwk\_services\_abilitymgr\_lite + +appexecfwk\_frameworks\_bundle\_lite + +appexecfwk\_interfaces\_innerkits\_bundlemgr\_lite + +appexecfwk\_interfaces\_innerkits\_appexecfwk\_lite + +appexecfwk\_services\_bundlemgr\_lite + +appexecfwk\_kits\_appkit\_lite + -- Gitee From d8c626c1800d38d2d09f0c8dd0473c185c05044d Mon Sep 17 00:00:00 2001 From: changcheng-weng Date: Thu, 10 Sep 2020 23:05:10 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=A8=8B=E5=BA=8F=E6=A1=86=E6=9E=B6=E5=AD=90?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...66\345\255\220\347\263\273\347\273\237.md" | 364 ------------------ 1 file changed, 364 deletions(-) delete mode 100644 "\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" diff --git "a/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" "b/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" deleted file mode 100644 index ccb31b67894..00000000000 --- "a/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" +++ /dev/null @@ -1,364 +0,0 @@ -# 用户程序框架子系统 - -## 简介 - -用户程序框架子系统包含两个大的模块:**Ability子系统**和**包管理子系统**。 - -**1. Ability子系统**,是OpenHarmony为开发者提供的一套开发OpenHarmony应用的框架。Ability子系统各模块如下图1所示: - -**图 1** Ability子系统框架图 - - -![](figures/zh-cn_image_0000001054941316.png) - -- **AbilityKit**是Ability框架提供给开发者的开发包,开发者基于该开发包可以开发出基于Ability组件的应用。基于Ability组件开发的应用有两种类型:基于Javascript语言开发的Ability(**JS Ability**)和基于C/C++语言开发的Ability(**Native Ability**)。**JS应用开发框架**是开发者开发JS Ability所用到框架,是在AbilityKit基础封装的包含js UI组件的一套方便开发者能够迅速开发Ability应用的框架。 -- **Ability**是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability。Ability分为两种类型:Page类型的Ability和Service类型的Ability - - **Page类型的Ability:**带有界面,为用户提供人机交互的能力。 - - **Service类型的Ability**:不带界面,为用户提供后台任务机制。 - -- **AbilitySlice**是单个页面及其控制逻辑的总和,是Page类型Ability特有的组件,一个Page类型的Ability可以包含多个AbilitySlice,此时,这些页面提供的业务能力应当是高度相关的。Page类型的Ability和AbilitySlice的关系如下图2所示: - - **图 2** Ability与AbilitySlice的关系图 - ![](figures/Ability与AbilitySlice的关系图.gif "Ability与AbilitySlice的关系图") - - -- **生命周期**是Ability被调度到启动、激活、隐藏和退出等各个状态的的统称。Ability各生命周期流转如下图3所示: - - **图 3** Ability生命周期流转图 - ![](figures/Ability生命周期流转图.png "Ability生命周期流转图") - - Ability生命周期各状态解析: - - - **UNINITIALIZED**:未初始状态,为临时状态,Ability被创建后会由UNINITIALIZED状态进入INITIAL状态; - - - **INITIAL**:初始化状态,也表示停止状态,表示当前Ability未运行,调用Start后进入INACTIVE,同时回调开发者的OnSatrt生命周期回调; - - - **INACTIVE**:未激活状态,表示当前窗口已显示但是无焦点状态,由于Window暂未支持焦点的概念,当前状态与ACTIVE一致。 - - - **ACTIVE**:前台激活状态,表示当前窗口已显示,并获取焦点,Ability在退到后台之前先由ACTIVE状态进入INACTIVE状态; - - - **BACKGROUND**: 后台状态,表示当前Ability退到后台,Ability在被销毁后由BACKGROUND状态进入INITIAL状态,或者重新被激活后由BACKGROUND状态进入ACTIVE状态。 - - -- **AbilityLoader**负责注册和加载开发者Ability的模块。开发者开发的Ability先要调用AbilityLoader的注册接口注册到框架中,接着Ability启动时会被实例化。 -- **AbilityManager**负责AbilityKit和Ability管理服务进行IPC的通信。 -- **EvenHandler**是AbilityKit提供给开发者的用于在Ability中实现线程间通信的一个模块。 -- **Ability运行管理服务**是用于协调各Ability运行关系、及生命周期进行调度的系统服务。其中,**服务启动**模块负责Ability管理服务的启动、注册等。**服务接口管理模块**负责Ability管理服务对外能力的管理。**进程管理模块**负责Ability应用所在进程的启动和销毁、及其进程信息维护等功能。**Ability栈管理模块**负责维护各个Ability之间跳转的先后关系。**生命周期调度模块**是Ability管理服务根据系统当前的操作调度Ability进入相应的状态的模块**。连接管理模块**是Ability管理服务对Service类型Ability连接管理的模块。 -- **AppSpawn**是负责创建Ability应用所在进程的系统服务,该服务有较高的权限,为Ability应用设置相应的权限,并预加载一些通用的模块,加速应用的启动。 - -**2. 包管理子系统**,是HarmonyOS为开发者提供的安装包管理框架。包管理子系统的由如下图4模块组成: - -**图 4** 包管理子系统框架图 -![](figures/包管理子系统框架图.png "包管理子系统框架图") - -- **BundleKit:**是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化监听接口。 -- **包扫描器**:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化。 - -- **包安装子模块**:安装,卸载,升级一个包;**包安装服务**一个单独进程的用于创建删除安装目录,具有较高的权限。 - -- **包管理子模块**:管理安装包相关的信息,存储持久化包信息。 - -- **包安全管理子模块**:签名检查、权限授予、权限管理。 - -## 目录 - -用户程序框架子系统源代码目录结构如下表1所示: - -**表 1** 用户程序框架子系统源代码目录结构 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

描述

-

foundation/aafwk/frameworks/ability_lite

-

AbilityKit实现的核心代码

-

foundation/aafwk/frameworks/abilitymgr_lite

-

管理AbilityKit与Ability管理服务通信的客户端代码

-

foundation/aafwk/frameworks/want_lite

-

Ability之间交互的信息载体的实现代码

-

foundation/aafwk/interfaces/kits/abilitykit_lite

-

AbilityKit为开发者提供的接口

-

foundation/aafwk/interfaces/innerkits/abilitymgr_lite

-

Ability管理服务为其它子系统提供的接口

-

foundation/aafwk/interfaces/kits/want_lite

-

Ability之间交互的信息载体的对外接口

-

foundation/aafwk/services/abilitymgr_lite

-

Ability管理服务的实现代码

-

foundation/appexecfwk/interfaces/kits/bundle_lite

-

BundleKit为开发者提供的接口

-

foundation/appexecfwk/interfaces/innerkits/bundlemgr_lite

-

AbilityKit实现的核心代码,及包管理服务为其它子系统提供的接口

-

foundation/appexecfwk/frameworks/bundle_lite

-

管理BundleKit与包管理服务通信的客户端代码

-

foundation/appexecfwk/utils/bundle_lite

-

包管理服务实现中用到的工具性的代码

-

foundation/appexecfwk/services/bundlemgr_lite

-

包管理服务的实现代码

-
- -## 约束 - -- 语言版本 - - C++11版本或以上 - -- 框架针对不同的芯片平台和底层OS能力,规格有所区别 - - Cortex-M RAM/ROM: - - RAM:建议大于20K - - ROM: \> 300K (包含JS应用开发框架,UIKit及引擎等强相关子系统) - - - Cortex-A RAM/ROM: - - RAM:建议大于2M - - ROM:\> 2M (包含JS应用开发框架,UIKit及引擎等强相关子系统) - - - -## 编译用户程序框架子系统 - -- 添加对用户程序框架子系统的编译,以hi3516dv300\_liteos\_a为例 - - - 在build/lite/platform/hi3516dv300\_liteos\_a/platform.json中的subsystem\_list字段下面添加appexecfwk和aafwk,代码如下: - - ``` - { - "name":"aafwk", - "project":"hmf/aafwk/services/abilitymgr_lite", - "path":"build/lite/config/subsystem/aafwk", - "dir":"foundation/aafwk/services/abilitymgr_lite", - "desc":"Ability Services Manager", - "requirement":"yes", - "default":"yes", - "selected":"yes" - }, - { - "name":"appexecfwk", - "project": "hmf/appexecfwk/services/bundlemgr_lite", - "path": "build/lite/config/subsystem/appexecfwk", - "dir": "foundation/appexecfwk/services/bundlemgr_lite", - "desc":"Bundle Services Manager", - "requirement":"yes", - "default":"yes", - "selected":"yes" - }, - ``` - - - 在build/lite/platform/hi3516dv300\_liteos\_a/template/ipcamera.json的“template\_subsystem\_list”字段下面添加"appexecfwk"和"aafwk",代码如下: - - ``` - "template_subsystem_list" : [ - ...... - "distributedschedule", - "aafwk", - "appexecfwk", - "communication", - ...... - ], - ``` - - - 在build/lite/config/subsystem/aafwk/BUILD.gn和/build/lite/config/subsystem/appexecfwk/BUILD.gn中添加对用户程序框架中具体组件的编译,如下: - - ``` - import("//build/lite/config/subsystem/lite_subsystem.gni") - - lite_subsystem("aafwk") { - subsystem_components = [ - "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilitykit_lite", - "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilityMain_lite", - "//foundation/aafwk/services/abilitymgr_lite:aafwk_services_lite", - "//foundation/aafwk/frameworks/kits/tools_lite:tools_lite", - "//foundation/aafwk/frameworks/kits/ability_lite/test:aafwk_testapp_lite", - ] - } - ``` - - ``` - import("//build/lite/config/subsystem/lite_subsystem.gni") - - lite_subsystem("appexecfwk") { - subsystem_components = [ - "//foundation/appexecfwk/kits/appkit_lite:appexecfwk_kit_lite", - "//foundation/appexecfwk/services/bundlemgr_lite:appexecfwk_services_lite", - ] - } - ``` - - - 在foundation/aafwk和foundation/appexecfwk下面添加对业务模块的编译,各个模块都有自己的BUILD.gn文件 - -- 添加完上述的配置后,执行如下命令编译整个系统: - -``` -python build.py ipcamera -p hi3516dv300_liteos_a -b debug -``` - -## 运行用户程序框架子系统的两个服务 - -- 用户程序框架有两个系统服务ability管理服务(abilityms)和(bundlems),两系统服务运行于foudation进程中。 -- abilityms和bundlems注册到sa\_manager中,sa\_manager运行于foundation进程中,sa\_manager为abilityms和bundlems创建线程运行环境。具体创建abilityms、bundlems服务的方式以及使用该服务的方式,可参考[系统服务框架子系统](zh-cn_topic_0000001051589563.md)。 -- 在foundation/distributedschedule/services/safwk\_lite/BUILD.gn中添加对abilityms和bundlems,如下: - -``` -deps = [ - "//foundation/distributedschedule/services/samgr_lite/samgr_server:server", - "//base/dfx/lite/liteos-a/source/log:hilog_a_shared", - "//foundation/aafwk/services/abilitymgr_lite:abilityms", - "//foundation/appexecfwk/services/bundlemgr_lite:bundlems", - "//base/security/services/iam_lite:pms_target", - "//foundation/distributedschedule/services/dtbschedmgr_lite:dtbschedmgr", -] -``` - -## 运行基于AbilityKit开发的Ability - -- 基于AbilityKit开发的Ability的Demo代码位于foundation/aafwk/frameworks/kits/ability\_lite/test路径下,如有需要修改其中的功能,可在unittest的文件中修改代码或增加代码文件,并在BUILD.gn中做相应的修改。 -- 编译该Demo,在shell中执行如下命令,编译成功后,在out/ipcamera\_hi3516dv300\_liteos\_a下面生成libLauncher.so文件: - - ``` - python build.py ipcamera -p hi3516dv300_liteos_a -T //foundation/aafwk/frameworks/kits/ability_lite/test:Launcher - ``` - -- 编写config.json,内容如下: - -``` -{ - "app": { - "bundleName": "com.huawei.launcher", - "vendor": "huawei", - "version": { - "code": 1, - "name": "1.0" - }, - "apiVersion": { - "compatible": 3, - "target": 3 - } - }, - "deviceConfig": { - "default": { - "keepAlive": false - }, - }, - "module": { - "deviceType": [ - "smartVision" - ], - "distro": { - "deliveryWithInstall": true, - "moduleName": "Launcher", - "moduleType": "entry" - }, - "abilities": [{ - "name": "MainAbility", - "icon": "assets/entry/resources/base/media/icon.png", - "label": "test app 1", - "launchType": "standard", - "type": "page", - "visible": true - }, - { - "name": "SecondAbility", - "icon": "assets/entry/resources/base/media/icon.png", - "label": "test app 2", - "launchType": "standard", - "type": "page", - "visible": true - }, - { - "name": "ServiceAbility", - "icon": "", - "label": "test app 2", - "launchType": "standard", - "type": "service", - "visible": true - } - ] - } -} -``` - -- 生成hap包 - - 按照如下目录结构存放文件,assets/entry/resources/base/media下面放置资源文件: - - ![](figures/zh-cn_image_0000001055712348.png) - - - 将上述文件打包生成zip包,修改后缀为.hap,例如Launcher.hap - -- 安装hap包 - - - 将上述hap包放置到指定目录下面 - - 执行安装命令,安装hap包: - - ``` - ./bin/bm install -p /nfs/hap/Launcher.hap - ``` - -- 安装完成后,通过如下命令,运行Demo - -``` -./bin/aa start -p com.huawei.launcher -n MainAbility -``` - -## 涉及仓 - -aafwk\_frameworks\_kits\_ability\_lite - -aafwk\_interfaces\_innerkits\_abilitykit\_lite - -aafwk\_frameworks\_kits\_content\_lite - -aafwk\_interfaces\_innerkits\_abilitymgr\_lite - -aafwk\_interfaces\_innerkits\_intent\_lite - -aafwk\_interfaces\_kits\_ability\_lite - -aafwk\_services\_abilitymgr\_lite - -appexecfwk\_frameworks\_bundle\_lite - -appexecfwk\_interfaces\_innerkits\_bundlemgr\_lite - -appexecfwk\_interfaces\_innerkits\_appexecfwk\_lite - -appexecfwk\_services\_bundlemgr\_lite - -appexecfwk\_kits\_appkit\_lite - -- Gitee From 579bf374b779519302283b434659ed5e1d806fb1 Mon Sep 17 00:00:00 2001 From: changcheng-weng Date: Thu, 10 Sep 2020 23:05:41 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E6=A1=86=E6=9E=B6readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...204\345\205\263\347\263\273\345\233\276.gif" | Bin 0 -> 4948 bytes ...237\346\265\201\350\275\254\345\233\276.png" | Bin 0 -> 31646 bytes readme/figures/zh-cn_image_0000001054941316.png | Bin 0 -> 39933 bytes readme/figures/zh-cn_image_0000001055712348.png | Bin 0 -> 6383 bytes ...237\346\241\206\346\236\266\345\233\276.png" | Bin 0 -> 60142 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 "readme/figures/Ability\344\270\216AbilitySlice\347\232\204\345\205\263\347\263\273\345\233\276.gif" create mode 100644 "readme/figures/Ability\347\224\237\345\221\275\345\221\250\346\234\237\346\265\201\350\275\254\345\233\276.png" create mode 100644 readme/figures/zh-cn_image_0000001054941316.png create mode 100644 readme/figures/zh-cn_image_0000001055712348.png create mode 100644 "readme/figures/\345\214\205\347\256\241\347\220\206\345\255\220\347\263\273\347\273\237\346\241\206\346\236\266\345\233\276.png" diff --git "a/readme/figures/Ability\344\270\216AbilitySlice\347\232\204\345\205\263\347\263\273\345\233\276.gif" "b/readme/figures/Ability\344\270\216AbilitySlice\347\232\204\345\205\263\347\263\273\345\233\276.gif" new file mode 100644 index 0000000000000000000000000000000000000000..dd5af6fa52800c0d7fad7dbc8ae6e21149ae9897 GIT binary patch literal 4948 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 ARsaA1 literal 0 HcmV?d00001 diff --git "a/readme/figures/Ability\347\224\237\345\221\275\345\221\250\346\234\237\346\265\201\350\275\254\345\233\276.png" "b/readme/figures/Ability\347\224\237\345\221\275\345\221\250\346\234\237\346\265\201\350\275\254\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..38e5f8738d93b0101253c287f98dca987b1df96f GIT binary patch literal 31646 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 literal 0 HcmV?d00001 diff --git a/readme/figures/zh-cn_image_0000001054941316.png b/readme/figures/zh-cn_image_0000001054941316.png new file mode 100644 index 0000000000000000000000000000000000000000..37b1f5215e362c156ca5de27145c3711cc14083b GIT binary patch literal 39933 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

}LN7{3iXadYdT*fxLJ0|H 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 literal 0 HcmV?d00001 diff --git a/readme/figures/zh-cn_image_0000001055712348.png b/readme/figures/zh-cn_image_0000001055712348.png new file mode 100644 index 0000000000000000000000000000000000000000..fa3b3160f094a3dddfa8d46047dfc9da2bb96fcc GIT binary patch literal 6383 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 literal 0 HcmV?d00001 diff --git "a/readme/figures/\345\214\205\347\256\241\347\220\206\345\255\220\347\263\273\347\273\237\346\241\206\346\236\266\345\233\276.png" "b/readme/figures/\345\214\205\347\256\241\347\220\206\345\255\220\347\263\273\347\273\237\346\241\206\346\236\266\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..594c3e1d9db95b3149ee3da9c11d9cea350d4d1d GIT binary patch literal 60142 zcmeFZbySpX7dJ`?C?y76N+{CZB?uxZAR*l#9Rmz7gh(jeT}lWDLk=;+AfR+f4UI_3 z&?$`Ixe=e|eV^z3&fn+!@vY@@t$XI4>)P?#bzOV&T2oz#n>%d06=t z65NQ0=u_}vx^9|Lh>b0Jo!nG(=8Q;zX@xjI7K;!In+Xdq2^RgC4>{@e|HF#1Ci%FQgouXynn{zE2pQfWQdxpL+#&2W zEKe+PEc%Pbgdyy2_nDxUqa;@pjQWoroPYf5oBw+8@k4@$cR`4kWifZK_O5-4$)x

kSp93-CB1pOd7fIU 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%0A)%qV;#@ z+zvT4yuPMU74Ypwk8!|h#|EQz6EH%uz4nF3S6B4%y8;muztPz$LD7P%v2D|_tFXsSU;U9_1*YlWIaxTjI z76)R~&X@D)HbrVry{tmZU!Ra`Yxg{1XM4mpJ3^HgK4QduJWS`2qd;i{R?Oh0BexOU z;HbQhRcvq6?%;@ql}|6jxY0Q32s5!P*||H3Euql)-}{tN`=;n!a4@p;H(8;Oq+(n(b~< zyDI4Z_*R;rKjhoHz=GFUwQnKcQ3lVHJw=!*_)P(4KOOf zT|mOb#&KK3ojvP-?&+UX!%O`g$Y8)AtE0>@=i{%uLeZ^K$9tT!@ust727WF{sQEdC zM+-Y?e1POxcVq0kv!=)+Y^UPkdGoKp;1?9~+JKdY_ofB2lVU&lrWR~=ts7|I1XzRM z`@!U95vGTrZS{F*-)+nMyWhAW#YZY(pA>*uNUbKhJ>H_;RkW!Q^gX6P(jhXMO5vZm zF=n?Ob_%pD0*$ZM>?MgXAHb68Va`vejY=t`a?)N@aX$Nf>kkUQ-4Zs7E_!HNW)d=x zk}PrgeK>b@SuL~CRC}}_I!)?a=4xDnDFwR9DyQGLlJ zdz;LL9QZq9##)|}x+LjltCeGKt1!0HN!DGaqS?*N0Pz7)XR8oZik|j=wxqMTQM?|%VDsER*$mSkU+nv6JAAt1su1z4F z?;*%g4dA(V2cE)jn6s)PXMJC7VAKY_nhu1Y&ME_(V1Es1utn7rF!;UGbz(dEkk=jt z2dG?9FA^WGKPP2#D!k`b-TP}M6#l%n9nw@kqKDMMr8Y9ZZ4*7(5?hG*arOp^^*_nl zDB?}c<+#v~c3^ts#uf~Wlj$^{vBb#PJ5igS>;N5z0e(w+z@t;bA;*%mr*5vrk>$Em zY?eKD{#RRP9u4L9$MJ{3*g_?;&di~eN+SCbO33n4mXNi+whXc*O-8aMzEVueT9&Ls z;ajqd#7Oc(3&t2DDeD*vS;y~r#?txy`px|DoHOS>&%K||{oMPUGw;vmb??D1XKO&x z-dnU<;yY?e^`tS~5SdWjysP|talCe?RqiL9OP-u30g(bA>#5wp+jH|cM!{&vdtNWP z^o1;WyKg*f%RIJu6C8vT(w36Q{p_pMv*-$fZMz9L%SB};Kv26{=8^(G831@)j0{d) zz)3>brk*QcRqDp>ZA;+y94c+{nJWO*&;EjO@%2ZLj+y(WEVoOi_2A`f1T^sD!Lc5d zU{UZm@sS(aH600C+IWK8*u;BryhABp{mZ_SbiK8Y5x%TH^@ot(ZPYCoR5hp~+khp7 z(u<~~ukQZQD)f_^#&a!0Z(Fz5htt&!%K7PceVTetLItt9Tq5UKL3+G9QIsH;zA9{{ zy``RRO8q#Rjha3O7E^x!0(9~Hs1)c@rDjqYx?HSsY}T4(zh2rB)_Qo6Q_NNpl6yDl zHC2%*J=&2MoCd+2e2r#q)mWq_2zT*+D8(<)A`Z&M9_LwoOM4Res(D_J@=KngTWzu+ zb2m3+0IyB&`NfE)Ruv(Yb7CR^PKrBcV!i$?6l{PcX;zs-;{ABXE7wF9c_eHAVl8#s zU;`upJO*A^&je+Teue5C`k;)Q6v6pmLp{Gqoo~G_LtCC1NE~nBk%lzpq=!la1@u?@1TfyMH;X#G+pvf45G)sFB$^D`bXGk%aGw-o57mLl zQCk*1Ne~}hno=Qm52ky<9oQuO)n$A zTYOQx-SHaY>zV7UeZEw8<4cA%hJ;~s8PW(5F!VZeZPQW|2q{C3>2=5DN*Ea?m*vWc z20vQ1>S$}Wrv)^uEORW%uT7Mq$L_<>Jod5uuqTHiR>QR?Q|p&Wq(!a8yHFjJU9biY zu>46y5_aA`!Oe=%$E~`pIYn1Eh*6_M<5T_r3?xXXkW=Jr$ay9>a&x>W_(lUKg`n34 zY&m(hNUpHmp*Mn*R#I!(#1Whi$k%BY6_FMealb?%V<>R${|*IT$MDa5ul&2U=H?)eCdR4Zc!^P9p&c zGde5p!9dJe>#X|yKpA{Za%P6a^}H5O&eZBBW|Z)ezt=mBC!4~^yXpk_kQz?N^+-4L zn0=VLwVh}C=)lO7A-;t)Vb)~!^j>=LV`0(1s#q4uVv1yrJiIk!ZIY|fLd?^*t<<^g@ zFh$m<4?;L!kZuVGFtD)Kl6dKI_DdWP;W%3ner>$7FvL+`Yal%MOII7^^RXaV>=*wV zHmTO`4RwP@x`=nUlU&}+Fb*rv+@V~|6Li~&zvbRP8SL}12kzw0VT&N&d{s5o2r_%%Nu_!u15#Rc}sp8``0@=&^-(w_gz)${a1PxxxY$~59G%%RrO_U29; zR=o7{E{|t(F+@XZ@bHqSUr!)sK;{U~^WCa>4_G-~fMuFHgDu|)Jal#-WKeZv6s6a1 zXvTJR#nD2Cg|mdnoh@v=b&3Kg1mrR{9k_>vZ=xHRtY<1NtFW?I_OjWFimQLA;WeKW zktQ}jaOEju3xn1xYfJ^XM(c({%pH9d zm8#m_#`b`W1QsR~bmT)=dDsS|6@Y`Mvg8(fm)5rUjkQ}U=uH<_|t;Hv^2pUI8P|7AIrd22o_EIurEh5TaO)qk+kGJ%DM-tc}+ zV}z@mxK@`+2ZX>?Ujq5&kChw*DrKY>5(Jf)H-()}D1XNi_f|eTPCJ3Hwzj@Kw^+YI zbMyDhma2GqPw>}Z`1&1ppEEz$9o>9m*^Wk4?n@&evL+B37Jxo`OyDkytKLDW*72{U zc*h3L)8J7I>7q&RHaxRsmN$?UXPe=+dErlkZ#FF246B-VY}pTwCY&)`W~Y3w`Qlr{}}^; zEfT~XbDdAxUR2vAfX@eS1!0o|;(vEAxcZ|tP6&^3|1pAlYFPXZec``Uv4ST*mUHm@ z;V}hwu>X!wpr%)o;4Ny%i2=jnzx*JA1Ifu9-x4wO4mQWg$y59P=;QJaK)d&0+7QMQ z1O+Z!$?Y`%A5)xUT>Qsc&tA-+nGoF zfrd8ExC#tjgjzK%6U&U;n7{1?P2WHhl}cvL1*@!fc%zUeCW-oeK!Ja6UTsQBictvd z&2+uddLh15qT(;^n};&%d6sf Date: Thu, 10 Sep 2020 23:06:26 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E6=A1=86=E6=9E=B6readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...66\345\255\220\347\263\273\347\273\237.md" | 364 ++++++++++++++++++ 1 file changed, 364 insertions(+) create mode 100644 "readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" diff --git "a/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" "b/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" new file mode 100644 index 00000000000..ccb31b67894 --- /dev/null +++ "b/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" @@ -0,0 +1,364 @@ +# 用户程序框架子系统 + +## 简介 + +用户程序框架子系统包含两个大的模块:**Ability子系统**和**包管理子系统**。 + +**1. Ability子系统**,是OpenHarmony为开发者提供的一套开发OpenHarmony应用的框架。Ability子系统各模块如下图1所示: + +**图 1** Ability子系统框架图 + + +![](figures/zh-cn_image_0000001054941316.png) + +- **AbilityKit**是Ability框架提供给开发者的开发包,开发者基于该开发包可以开发出基于Ability组件的应用。基于Ability组件开发的应用有两种类型:基于Javascript语言开发的Ability(**JS Ability**)和基于C/C++语言开发的Ability(**Native Ability**)。**JS应用开发框架**是开发者开发JS Ability所用到框架,是在AbilityKit基础封装的包含js UI组件的一套方便开发者能够迅速开发Ability应用的框架。 +- **Ability**是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability。Ability分为两种类型:Page类型的Ability和Service类型的Ability + - **Page类型的Ability:**带有界面,为用户提供人机交互的能力。 + - **Service类型的Ability**:不带界面,为用户提供后台任务机制。 + +- **AbilitySlice**是单个页面及其控制逻辑的总和,是Page类型Ability特有的组件,一个Page类型的Ability可以包含多个AbilitySlice,此时,这些页面提供的业务能力应当是高度相关的。Page类型的Ability和AbilitySlice的关系如下图2所示: + + **图 2** Ability与AbilitySlice的关系图 + ![](figures/Ability与AbilitySlice的关系图.gif "Ability与AbilitySlice的关系图") + + +- **生命周期**是Ability被调度到启动、激活、隐藏和退出等各个状态的的统称。Ability各生命周期流转如下图3所示: + + **图 3** Ability生命周期流转图 + ![](figures/Ability生命周期流转图.png "Ability生命周期流转图") + + Ability生命周期各状态解析: + + - **UNINITIALIZED**:未初始状态,为临时状态,Ability被创建后会由UNINITIALIZED状态进入INITIAL状态; + + - **INITIAL**:初始化状态,也表示停止状态,表示当前Ability未运行,调用Start后进入INACTIVE,同时回调开发者的OnSatrt生命周期回调; + + - **INACTIVE**:未激活状态,表示当前窗口已显示但是无焦点状态,由于Window暂未支持焦点的概念,当前状态与ACTIVE一致。 + + - **ACTIVE**:前台激活状态,表示当前窗口已显示,并获取焦点,Ability在退到后台之前先由ACTIVE状态进入INACTIVE状态; + + - **BACKGROUND**: 后台状态,表示当前Ability退到后台,Ability在被销毁后由BACKGROUND状态进入INITIAL状态,或者重新被激活后由BACKGROUND状态进入ACTIVE状态。 + + +- **AbilityLoader**负责注册和加载开发者Ability的模块。开发者开发的Ability先要调用AbilityLoader的注册接口注册到框架中,接着Ability启动时会被实例化。 +- **AbilityManager**负责AbilityKit和Ability管理服务进行IPC的通信。 +- **EvenHandler**是AbilityKit提供给开发者的用于在Ability中实现线程间通信的一个模块。 +- **Ability运行管理服务**是用于协调各Ability运行关系、及生命周期进行调度的系统服务。其中,**服务启动**模块负责Ability管理服务的启动、注册等。**服务接口管理模块**负责Ability管理服务对外能力的管理。**进程管理模块**负责Ability应用所在进程的启动和销毁、及其进程信息维护等功能。**Ability栈管理模块**负责维护各个Ability之间跳转的先后关系。**生命周期调度模块**是Ability管理服务根据系统当前的操作调度Ability进入相应的状态的模块**。连接管理模块**是Ability管理服务对Service类型Ability连接管理的模块。 +- **AppSpawn**是负责创建Ability应用所在进程的系统服务,该服务有较高的权限,为Ability应用设置相应的权限,并预加载一些通用的模块,加速应用的启动。 + +**2. 包管理子系统**,是HarmonyOS为开发者提供的安装包管理框架。包管理子系统的由如下图4模块组成: + +**图 4** 包管理子系统框架图 +![](figures/包管理子系统框架图.png "包管理子系统框架图") + +- **BundleKit:**是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化监听接口。 +- **包扫描器**:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化。 + +- **包安装子模块**:安装,卸载,升级一个包;**包安装服务**一个单独进程的用于创建删除安装目录,具有较高的权限。 + +- **包管理子模块**:管理安装包相关的信息,存储持久化包信息。 + +- **包安全管理子模块**:签名检查、权限授予、权限管理。 + +## 目录 + +用户程序框架子系统源代码目录结构如下表1所示: + +**表 1** 用户程序框架子系统源代码目录结构 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

描述

+

foundation/aafwk/frameworks/ability_lite

+

AbilityKit实现的核心代码

+

foundation/aafwk/frameworks/abilitymgr_lite

+

管理AbilityKit与Ability管理服务通信的客户端代码

+

foundation/aafwk/frameworks/want_lite

+

Ability之间交互的信息载体的实现代码

+

foundation/aafwk/interfaces/kits/abilitykit_lite

+

AbilityKit为开发者提供的接口

+

foundation/aafwk/interfaces/innerkits/abilitymgr_lite

+

Ability管理服务为其它子系统提供的接口

+

foundation/aafwk/interfaces/kits/want_lite

+

Ability之间交互的信息载体的对外接口

+

foundation/aafwk/services/abilitymgr_lite

+

Ability管理服务的实现代码

+

foundation/appexecfwk/interfaces/kits/bundle_lite

+

BundleKit为开发者提供的接口

+

foundation/appexecfwk/interfaces/innerkits/bundlemgr_lite

+

AbilityKit实现的核心代码,及包管理服务为其它子系统提供的接口

+

foundation/appexecfwk/frameworks/bundle_lite

+

管理BundleKit与包管理服务通信的客户端代码

+

foundation/appexecfwk/utils/bundle_lite

+

包管理服务实现中用到的工具性的代码

+

foundation/appexecfwk/services/bundlemgr_lite

+

包管理服务的实现代码

+
+ +## 约束 + +- 语言版本 + - C++11版本或以上 + +- 框架针对不同的芯片平台和底层OS能力,规格有所区别 + - Cortex-M RAM/ROM: + - RAM:建议大于20K + - ROM: \> 300K (包含JS应用开发框架,UIKit及引擎等强相关子系统) + + - Cortex-A RAM/ROM: + - RAM:建议大于2M + - ROM:\> 2M (包含JS应用开发框架,UIKit及引擎等强相关子系统) + + + +## 编译用户程序框架子系统 + +- 添加对用户程序框架子系统的编译,以hi3516dv300\_liteos\_a为例 + + - 在build/lite/platform/hi3516dv300\_liteos\_a/platform.json中的subsystem\_list字段下面添加appexecfwk和aafwk,代码如下: + + ``` + { + "name":"aafwk", + "project":"hmf/aafwk/services/abilitymgr_lite", + "path":"build/lite/config/subsystem/aafwk", + "dir":"foundation/aafwk/services/abilitymgr_lite", + "desc":"Ability Services Manager", + "requirement":"yes", + "default":"yes", + "selected":"yes" + }, + { + "name":"appexecfwk", + "project": "hmf/appexecfwk/services/bundlemgr_lite", + "path": "build/lite/config/subsystem/appexecfwk", + "dir": "foundation/appexecfwk/services/bundlemgr_lite", + "desc":"Bundle Services Manager", + "requirement":"yes", + "default":"yes", + "selected":"yes" + }, + ``` + + - 在build/lite/platform/hi3516dv300\_liteos\_a/template/ipcamera.json的“template\_subsystem\_list”字段下面添加"appexecfwk"和"aafwk",代码如下: + + ``` + "template_subsystem_list" : [ + ...... + "distributedschedule", + "aafwk", + "appexecfwk", + "communication", + ...... + ], + ``` + + - 在build/lite/config/subsystem/aafwk/BUILD.gn和/build/lite/config/subsystem/appexecfwk/BUILD.gn中添加对用户程序框架中具体组件的编译,如下: + + ``` + import("//build/lite/config/subsystem/lite_subsystem.gni") + + lite_subsystem("aafwk") { + subsystem_components = [ + "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilitykit_lite", + "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilityMain_lite", + "//foundation/aafwk/services/abilitymgr_lite:aafwk_services_lite", + "//foundation/aafwk/frameworks/kits/tools_lite:tools_lite", + "//foundation/aafwk/frameworks/kits/ability_lite/test:aafwk_testapp_lite", + ] + } + ``` + + ``` + import("//build/lite/config/subsystem/lite_subsystem.gni") + + lite_subsystem("appexecfwk") { + subsystem_components = [ + "//foundation/appexecfwk/kits/appkit_lite:appexecfwk_kit_lite", + "//foundation/appexecfwk/services/bundlemgr_lite:appexecfwk_services_lite", + ] + } + ``` + + - 在foundation/aafwk和foundation/appexecfwk下面添加对业务模块的编译,各个模块都有自己的BUILD.gn文件 + +- 添加完上述的配置后,执行如下命令编译整个系统: + +``` +python build.py ipcamera -p hi3516dv300_liteos_a -b debug +``` + +## 运行用户程序框架子系统的两个服务 + +- 用户程序框架有两个系统服务ability管理服务(abilityms)和(bundlems),两系统服务运行于foudation进程中。 +- abilityms和bundlems注册到sa\_manager中,sa\_manager运行于foundation进程中,sa\_manager为abilityms和bundlems创建线程运行环境。具体创建abilityms、bundlems服务的方式以及使用该服务的方式,可参考[系统服务框架子系统](zh-cn_topic_0000001051589563.md)。 +- 在foundation/distributedschedule/services/safwk\_lite/BUILD.gn中添加对abilityms和bundlems,如下: + +``` +deps = [ + "//foundation/distributedschedule/services/samgr_lite/samgr_server:server", + "//base/dfx/lite/liteos-a/source/log:hilog_a_shared", + "//foundation/aafwk/services/abilitymgr_lite:abilityms", + "//foundation/appexecfwk/services/bundlemgr_lite:bundlems", + "//base/security/services/iam_lite:pms_target", + "//foundation/distributedschedule/services/dtbschedmgr_lite:dtbschedmgr", +] +``` + +## 运行基于AbilityKit开发的Ability + +- 基于AbilityKit开发的Ability的Demo代码位于foundation/aafwk/frameworks/kits/ability\_lite/test路径下,如有需要修改其中的功能,可在unittest的文件中修改代码或增加代码文件,并在BUILD.gn中做相应的修改。 +- 编译该Demo,在shell中执行如下命令,编译成功后,在out/ipcamera\_hi3516dv300\_liteos\_a下面生成libLauncher.so文件: + + ``` + python build.py ipcamera -p hi3516dv300_liteos_a -T //foundation/aafwk/frameworks/kits/ability_lite/test:Launcher + ``` + +- 编写config.json,内容如下: + +``` +{ + "app": { + "bundleName": "com.huawei.launcher", + "vendor": "huawei", + "version": { + "code": 1, + "name": "1.0" + }, + "apiVersion": { + "compatible": 3, + "target": 3 + } + }, + "deviceConfig": { + "default": { + "keepAlive": false + }, + }, + "module": { + "deviceType": [ + "smartVision" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "Launcher", + "moduleType": "entry" + }, + "abilities": [{ + "name": "MainAbility", + "icon": "assets/entry/resources/base/media/icon.png", + "label": "test app 1", + "launchType": "standard", + "type": "page", + "visible": true + }, + { + "name": "SecondAbility", + "icon": "assets/entry/resources/base/media/icon.png", + "label": "test app 2", + "launchType": "standard", + "type": "page", + "visible": true + }, + { + "name": "ServiceAbility", + "icon": "", + "label": "test app 2", + "launchType": "standard", + "type": "service", + "visible": true + } + ] + } +} +``` + +- 生成hap包 + - 按照如下目录结构存放文件,assets/entry/resources/base/media下面放置资源文件: + + ![](figures/zh-cn_image_0000001055712348.png) + + - 将上述文件打包生成zip包,修改后缀为.hap,例如Launcher.hap + +- 安装hap包 + + - 将上述hap包放置到指定目录下面 + - 执行安装命令,安装hap包: + + ``` + ./bin/bm install -p /nfs/hap/Launcher.hap + ``` + +- 安装完成后,通过如下命令,运行Demo + +``` +./bin/aa start -p com.huawei.launcher -n MainAbility +``` + +## 涉及仓 + +aafwk\_frameworks\_kits\_ability\_lite + +aafwk\_interfaces\_innerkits\_abilitykit\_lite + +aafwk\_frameworks\_kits\_content\_lite + +aafwk\_interfaces\_innerkits\_abilitymgr\_lite + +aafwk\_interfaces\_innerkits\_intent\_lite + +aafwk\_interfaces\_kits\_ability\_lite + +aafwk\_services\_abilitymgr\_lite + +appexecfwk\_frameworks\_bundle\_lite + +appexecfwk\_interfaces\_innerkits\_bundlemgr\_lite + +appexecfwk\_interfaces\_innerkits\_appexecfwk\_lite + +appexecfwk\_services\_bundlemgr\_lite + +appexecfwk\_kits\_appkit\_lite + -- Gitee From f91537157aeefee232bf46cb240de3096f6b550d Mon Sep 17 00:00:00 2001 From: changcheng-weng Date: Thu, 10 Sep 2020 23:07:20 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20re?= =?UTF-8?q?adme/=E7=94=A8=E6=88=B7=E7=A8=8B=E5=BA=8F=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E5=AD=90=E7=B3=BB=E7=BB=9F.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...66\345\255\220\347\263\273\347\273\237.md" | 364 ------------------ 1 file changed, 364 deletions(-) delete mode 100644 "readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" diff --git "a/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" "b/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" deleted file mode 100644 index ccb31b67894..00000000000 --- "a/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237.md" +++ /dev/null @@ -1,364 +0,0 @@ -# 用户程序框架子系统 - -## 简介 - -用户程序框架子系统包含两个大的模块:**Ability子系统**和**包管理子系统**。 - -**1. Ability子系统**,是OpenHarmony为开发者提供的一套开发OpenHarmony应用的框架。Ability子系统各模块如下图1所示: - -**图 1** Ability子系统框架图 - - -![](figures/zh-cn_image_0000001054941316.png) - -- **AbilityKit**是Ability框架提供给开发者的开发包,开发者基于该开发包可以开发出基于Ability组件的应用。基于Ability组件开发的应用有两种类型:基于Javascript语言开发的Ability(**JS Ability**)和基于C/C++语言开发的Ability(**Native Ability**)。**JS应用开发框架**是开发者开发JS Ability所用到框架,是在AbilityKit基础封装的包含js UI组件的一套方便开发者能够迅速开发Ability应用的框架。 -- **Ability**是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability。Ability分为两种类型:Page类型的Ability和Service类型的Ability - - **Page类型的Ability:**带有界面,为用户提供人机交互的能力。 - - **Service类型的Ability**:不带界面,为用户提供后台任务机制。 - -- **AbilitySlice**是单个页面及其控制逻辑的总和,是Page类型Ability特有的组件,一个Page类型的Ability可以包含多个AbilitySlice,此时,这些页面提供的业务能力应当是高度相关的。Page类型的Ability和AbilitySlice的关系如下图2所示: - - **图 2** Ability与AbilitySlice的关系图 - ![](figures/Ability与AbilitySlice的关系图.gif "Ability与AbilitySlice的关系图") - - -- **生命周期**是Ability被调度到启动、激活、隐藏和退出等各个状态的的统称。Ability各生命周期流转如下图3所示: - - **图 3** Ability生命周期流转图 - ![](figures/Ability生命周期流转图.png "Ability生命周期流转图") - - Ability生命周期各状态解析: - - - **UNINITIALIZED**:未初始状态,为临时状态,Ability被创建后会由UNINITIALIZED状态进入INITIAL状态; - - - **INITIAL**:初始化状态,也表示停止状态,表示当前Ability未运行,调用Start后进入INACTIVE,同时回调开发者的OnSatrt生命周期回调; - - - **INACTIVE**:未激活状态,表示当前窗口已显示但是无焦点状态,由于Window暂未支持焦点的概念,当前状态与ACTIVE一致。 - - - **ACTIVE**:前台激活状态,表示当前窗口已显示,并获取焦点,Ability在退到后台之前先由ACTIVE状态进入INACTIVE状态; - - - **BACKGROUND**: 后台状态,表示当前Ability退到后台,Ability在被销毁后由BACKGROUND状态进入INITIAL状态,或者重新被激活后由BACKGROUND状态进入ACTIVE状态。 - - -- **AbilityLoader**负责注册和加载开发者Ability的模块。开发者开发的Ability先要调用AbilityLoader的注册接口注册到框架中,接着Ability启动时会被实例化。 -- **AbilityManager**负责AbilityKit和Ability管理服务进行IPC的通信。 -- **EvenHandler**是AbilityKit提供给开发者的用于在Ability中实现线程间通信的一个模块。 -- **Ability运行管理服务**是用于协调各Ability运行关系、及生命周期进行调度的系统服务。其中,**服务启动**模块负责Ability管理服务的启动、注册等。**服务接口管理模块**负责Ability管理服务对外能力的管理。**进程管理模块**负责Ability应用所在进程的启动和销毁、及其进程信息维护等功能。**Ability栈管理模块**负责维护各个Ability之间跳转的先后关系。**生命周期调度模块**是Ability管理服务根据系统当前的操作调度Ability进入相应的状态的模块**。连接管理模块**是Ability管理服务对Service类型Ability连接管理的模块。 -- **AppSpawn**是负责创建Ability应用所在进程的系统服务,该服务有较高的权限,为Ability应用设置相应的权限,并预加载一些通用的模块,加速应用的启动。 - -**2. 包管理子系统**,是HarmonyOS为开发者提供的安装包管理框架。包管理子系统的由如下图4模块组成: - -**图 4** 包管理子系统框架图 -![](figures/包管理子系统框架图.png "包管理子系统框架图") - -- **BundleKit:**是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化监听接口。 -- **包扫描器**:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化。 - -- **包安装子模块**:安装,卸载,升级一个包;**包安装服务**一个单独进程的用于创建删除安装目录,具有较高的权限。 - -- **包管理子模块**:管理安装包相关的信息,存储持久化包信息。 - -- **包安全管理子模块**:签名检查、权限授予、权限管理。 - -## 目录 - -用户程序框架子系统源代码目录结构如下表1所示: - -**表 1** 用户程序框架子系统源代码目录结构 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

描述

-

foundation/aafwk/frameworks/ability_lite

-

AbilityKit实现的核心代码

-

foundation/aafwk/frameworks/abilitymgr_lite

-

管理AbilityKit与Ability管理服务通信的客户端代码

-

foundation/aafwk/frameworks/want_lite

-

Ability之间交互的信息载体的实现代码

-

foundation/aafwk/interfaces/kits/abilitykit_lite

-

AbilityKit为开发者提供的接口

-

foundation/aafwk/interfaces/innerkits/abilitymgr_lite

-

Ability管理服务为其它子系统提供的接口

-

foundation/aafwk/interfaces/kits/want_lite

-

Ability之间交互的信息载体的对外接口

-

foundation/aafwk/services/abilitymgr_lite

-

Ability管理服务的实现代码

-

foundation/appexecfwk/interfaces/kits/bundle_lite

-

BundleKit为开发者提供的接口

-

foundation/appexecfwk/interfaces/innerkits/bundlemgr_lite

-

AbilityKit实现的核心代码,及包管理服务为其它子系统提供的接口

-

foundation/appexecfwk/frameworks/bundle_lite

-

管理BundleKit与包管理服务通信的客户端代码

-

foundation/appexecfwk/utils/bundle_lite

-

包管理服务实现中用到的工具性的代码

-

foundation/appexecfwk/services/bundlemgr_lite

-

包管理服务的实现代码

-
- -## 约束 - -- 语言版本 - - C++11版本或以上 - -- 框架针对不同的芯片平台和底层OS能力,规格有所区别 - - Cortex-M RAM/ROM: - - RAM:建议大于20K - - ROM: \> 300K (包含JS应用开发框架,UIKit及引擎等强相关子系统) - - - Cortex-A RAM/ROM: - - RAM:建议大于2M - - ROM:\> 2M (包含JS应用开发框架,UIKit及引擎等强相关子系统) - - - -## 编译用户程序框架子系统 - -- 添加对用户程序框架子系统的编译,以hi3516dv300\_liteos\_a为例 - - - 在build/lite/platform/hi3516dv300\_liteos\_a/platform.json中的subsystem\_list字段下面添加appexecfwk和aafwk,代码如下: - - ``` - { - "name":"aafwk", - "project":"hmf/aafwk/services/abilitymgr_lite", - "path":"build/lite/config/subsystem/aafwk", - "dir":"foundation/aafwk/services/abilitymgr_lite", - "desc":"Ability Services Manager", - "requirement":"yes", - "default":"yes", - "selected":"yes" - }, - { - "name":"appexecfwk", - "project": "hmf/appexecfwk/services/bundlemgr_lite", - "path": "build/lite/config/subsystem/appexecfwk", - "dir": "foundation/appexecfwk/services/bundlemgr_lite", - "desc":"Bundle Services Manager", - "requirement":"yes", - "default":"yes", - "selected":"yes" - }, - ``` - - - 在build/lite/platform/hi3516dv300\_liteos\_a/template/ipcamera.json的“template\_subsystem\_list”字段下面添加"appexecfwk"和"aafwk",代码如下: - - ``` - "template_subsystem_list" : [ - ...... - "distributedschedule", - "aafwk", - "appexecfwk", - "communication", - ...... - ], - ``` - - - 在build/lite/config/subsystem/aafwk/BUILD.gn和/build/lite/config/subsystem/appexecfwk/BUILD.gn中添加对用户程序框架中具体组件的编译,如下: - - ``` - import("//build/lite/config/subsystem/lite_subsystem.gni") - - lite_subsystem("aafwk") { - subsystem_components = [ - "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilitykit_lite", - "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilityMain_lite", - "//foundation/aafwk/services/abilitymgr_lite:aafwk_services_lite", - "//foundation/aafwk/frameworks/kits/tools_lite:tools_lite", - "//foundation/aafwk/frameworks/kits/ability_lite/test:aafwk_testapp_lite", - ] - } - ``` - - ``` - import("//build/lite/config/subsystem/lite_subsystem.gni") - - lite_subsystem("appexecfwk") { - subsystem_components = [ - "//foundation/appexecfwk/kits/appkit_lite:appexecfwk_kit_lite", - "//foundation/appexecfwk/services/bundlemgr_lite:appexecfwk_services_lite", - ] - } - ``` - - - 在foundation/aafwk和foundation/appexecfwk下面添加对业务模块的编译,各个模块都有自己的BUILD.gn文件 - -- 添加完上述的配置后,执行如下命令编译整个系统: - -``` -python build.py ipcamera -p hi3516dv300_liteos_a -b debug -``` - -## 运行用户程序框架子系统的两个服务 - -- 用户程序框架有两个系统服务ability管理服务(abilityms)和(bundlems),两系统服务运行于foudation进程中。 -- abilityms和bundlems注册到sa\_manager中,sa\_manager运行于foundation进程中,sa\_manager为abilityms和bundlems创建线程运行环境。具体创建abilityms、bundlems服务的方式以及使用该服务的方式,可参考[系统服务框架子系统](zh-cn_topic_0000001051589563.md)。 -- 在foundation/distributedschedule/services/safwk\_lite/BUILD.gn中添加对abilityms和bundlems,如下: - -``` -deps = [ - "//foundation/distributedschedule/services/samgr_lite/samgr_server:server", - "//base/dfx/lite/liteos-a/source/log:hilog_a_shared", - "//foundation/aafwk/services/abilitymgr_lite:abilityms", - "//foundation/appexecfwk/services/bundlemgr_lite:bundlems", - "//base/security/services/iam_lite:pms_target", - "//foundation/distributedschedule/services/dtbschedmgr_lite:dtbschedmgr", -] -``` - -## 运行基于AbilityKit开发的Ability - -- 基于AbilityKit开发的Ability的Demo代码位于foundation/aafwk/frameworks/kits/ability\_lite/test路径下,如有需要修改其中的功能,可在unittest的文件中修改代码或增加代码文件,并在BUILD.gn中做相应的修改。 -- 编译该Demo,在shell中执行如下命令,编译成功后,在out/ipcamera\_hi3516dv300\_liteos\_a下面生成libLauncher.so文件: - - ``` - python build.py ipcamera -p hi3516dv300_liteos_a -T //foundation/aafwk/frameworks/kits/ability_lite/test:Launcher - ``` - -- 编写config.json,内容如下: - -``` -{ - "app": { - "bundleName": "com.huawei.launcher", - "vendor": "huawei", - "version": { - "code": 1, - "name": "1.0" - }, - "apiVersion": { - "compatible": 3, - "target": 3 - } - }, - "deviceConfig": { - "default": { - "keepAlive": false - }, - }, - "module": { - "deviceType": [ - "smartVision" - ], - "distro": { - "deliveryWithInstall": true, - "moduleName": "Launcher", - "moduleType": "entry" - }, - "abilities": [{ - "name": "MainAbility", - "icon": "assets/entry/resources/base/media/icon.png", - "label": "test app 1", - "launchType": "standard", - "type": "page", - "visible": true - }, - { - "name": "SecondAbility", - "icon": "assets/entry/resources/base/media/icon.png", - "label": "test app 2", - "launchType": "standard", - "type": "page", - "visible": true - }, - { - "name": "ServiceAbility", - "icon": "", - "label": "test app 2", - "launchType": "standard", - "type": "service", - "visible": true - } - ] - } -} -``` - -- 生成hap包 - - 按照如下目录结构存放文件,assets/entry/resources/base/media下面放置资源文件: - - ![](figures/zh-cn_image_0000001055712348.png) - - - 将上述文件打包生成zip包,修改后缀为.hap,例如Launcher.hap - -- 安装hap包 - - - 将上述hap包放置到指定目录下面 - - 执行安装命令,安装hap包: - - ``` - ./bin/bm install -p /nfs/hap/Launcher.hap - ``` - -- 安装完成后,通过如下命令,运行Demo - -``` -./bin/aa start -p com.huawei.launcher -n MainAbility -``` - -## 涉及仓 - -aafwk\_frameworks\_kits\_ability\_lite - -aafwk\_interfaces\_innerkits\_abilitykit\_lite - -aafwk\_frameworks\_kits\_content\_lite - -aafwk\_interfaces\_innerkits\_abilitymgr\_lite - -aafwk\_interfaces\_innerkits\_intent\_lite - -aafwk\_interfaces\_kits\_ability\_lite - -aafwk\_services\_abilitymgr\_lite - -appexecfwk\_frameworks\_bundle\_lite - -appexecfwk\_interfaces\_innerkits\_bundlemgr\_lite - -appexecfwk\_interfaces\_innerkits\_appexecfwk\_lite - -appexecfwk\_services\_bundlemgr\_lite - -appexecfwk\_kits\_appkit\_lite - -- Gitee From f1d363870bc3523fbadd501ffe43cfd4ec7ba0aa Mon Sep 17 00:00:00 2001 From: changcheng-weng Date: Thu, 10 Sep 2020 23:07:57 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20re?= =?UTF-8?q?adme/=E7=94=A8=E6=88=B7=E7=A8=8B=E5=BA=8F=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E5=AD=90=E7=B3=BB=E7=BB=9FREADME.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\255\220\347\263\273\347\273\237README.md" | 377 ------------------ 1 file changed, 377 deletions(-) delete mode 100755 "readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" diff --git "a/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" "b/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" deleted file mode 100755 index 1b5ca1f8c58..00000000000 --- "a/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" +++ /dev/null @@ -1,377 +0,0 @@ -# 用户程序框架子系统 - -## 简介 - -用户程序框架子系统包含两个大的模块:元能力子系统和包管理子系统。 - -**元能力子系统**,是OpenHarmony为开发者提供的一套开发OpenHarmony应用的开发框架。元能力子系统由如下模块组成: - -**图1** 元能力子系统框架图 - -![](figures/zh-cn_image_0000001052000128.png) - -Ability是应用所具备的能力的抽象,一个应用可以包含一个或多个Ability。Ability分为两种类型:FA(Feature Ability)和AA(Atomic Ability)。 - -- **FA**:由三方基于元能力框架开发的、实现单一功能的有UI界面的程序实体,用于支持与用户交互的能力。一个Page实例可以包含一组相关页面,每个页面用一个AbilitySlice实例表示。Page模板是Feature Ability唯一支持的模板。用户可以基于JavaScript语言开发FA,也可以基于C/C++语言开发FA。 - - - Page模板的Ability的生命周期流转图 - - **图2** Ability生命周期流转图 - - ![](figures/zh-cn_image_0000001051366141.png)Page模板的Ability生命周期各状态解析 - - - **UNINITIALIZED**:未初始状态,为临时状态,Ability创建后会直接调用Init初始化,进入INITIAL状态; - - - **INITIAL**:初始化状态,也表示停止状态,表示当前Ability未运行,调用Start后进入INACTIVE,同时回调开发者的OnSatrt生命周期回调; - - - **INACTIVE**:未激活状态,表示当前窗口已显示但是无焦点状态,由于Window暂未支持焦点的概念,当前状态与ACTIVE一致。调用Active后进入ACTIVE,同时回调开发者的OnActive生命周期回调;调用Background后进入BACKGROUND,同时回调开发者的OnBackground生命周期回调; - - - **ACTIVE**:前台激活状态,表示当前窗口已显示,并获取焦点。调用Inactive后进入INACTIVE; - - - **BACKGROUND**: 后台状态,表示当前Ability退到后台。调用Active后进入ACTIVE,同时回调开发者的OnActive生命周期回调;调用Stop后进入INITIAL,同时回调开发者的OnStop生命周期回调; - - - **AbilitySlice** - - 一个使用Page模板的Ability由AbilitySlice构成,AbilitySlice是单个页面及其控制逻辑的总和。一个Page可以包含多个AbilitySlice,此时,这些页面提供的业务能力应当是高度相关的。Page模板的Ability与AbilitySlice的关系如下图: - - **图3 **Ability与AbilitySlice的关系图 - - ![](figures/zh-cn_image_0000001052204863.gif) - - -- **AA**:由三方基于元能力框架开发的、实现单一功能的无UI界面的支持后台任务的程序实体。AA与FA的区别是,AA无UI界面。仅对系统服务有依赖关系,AA之间不存在依赖关系 。Service模板是AA支持的模板。 -- **注册Ability** - - Ability的模板通过在清单文件中注册时指定。如下所示,开发者可以配置Ability元素的type属性,其取值page、service分别代表Page模板、Service模板。 - - ``` - "module": { - ...... - "abilities": [ - { - "name": "default", - "type": "pages", - "label": "sdfasf" - } - ], ’ - ...... - } - ``` - - -- **AbilityKit**:元能力的开发框架,运行在开发者的应用程序进程中,和AbilityMs通过IPC通信,开发者基于该框架开发自己的Ability。 - -- **AbilityMs**:元能力运行管理服务,元能力生命周期的调度统一由AbilityMs管理。 -- **AppSpawn:**进程孵化器,元能力进程由AppSpawn负责孵化并拉起。 - -**包管理子系统**,是OpenHarmony为开发者提供的安装包管理框架。包管理子系统的由如下模块组成: - -**图4** 包管理子系统框架图 - -![](figures/zh-cn_image_0000001052201483.png) - -- **包扫描器**:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化 - -- **包安装子模块**:安装,卸载,升级一个包;Installed一个单独进程的用于创建删除安装目录,具有较高的权限。 - -- **包管理子模块**:管理安装包相关的信息 - -- **安全子模块**:签名检查、权限授予、权限管理 - -## 目录 - -轻量用户程序框架子系统源代码目录结构如下图所示: - -**表 1** 轻量用户程序用户程序框架子系统源代码目录结构 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

描述

-

foundation/aafwk/frameworks/kits/ability_lite

-

元能力框架核心代码

-

foundation/aafwk/frameworks/kits/content_lite

-

元能力之间通信的实体

-

foundation/aafwk/frameworks/kits/tools_lite

-

元能力调测工具

-

foundation/aafwk/interfaces/innerkits/abilitykit_lite

-

元能力框架对外接口

-

foundation/aafwk/interfaces/innerkits/abilitymgr_lite

-

元能力运行管理服务对外接口

-

foundation/aafwk/interfaces/innerkits/intent_lite

-

元能力之间通信的实体对外接口

-

foundation/aafwk/services/abilitymgr_lite

-

元能力运行管理服务

-

foundation/appexecfwk/interfaces/innerkits/appexecfwk_lite

-

用户程序运行的包信息、元能力信息、异步事件处理等基本接口

-

foundation/appexecfwk/interfaces/innerkits/bundlemgr_lite

-

用户程序包管理服务对外接口

-

foundation/appexecfwk/kits/appkit_lite

-

用户程序运行的包信息、元能力信息、异步事件处理机制的实现逻辑

-

foundation/appexecfwk/services/bundlemgr_lite

-

用户程序包管理服务实现逻辑

-
- -## 约束 - -- 语言版本 - - C++11版本或以上 - -- 框架针对不同的芯片平台和底层OS能力,规格有所区别 - - Cortex-M RAM/ROM: - - RAM:建议大于20K - - ROM: \> 300K (包含ACE,UIKit及引擎等强相关子系统) - - - Cortex-A RAM/ROM: - - RAM:建议大于2M - - ROM:\> 2M (包含ACE,UIKit及引擎等强相关子系统) - - - -## 编译用户程序框架子系统 - -- 添加对用户程序框架子系统的编译,以hi3516dv300\_liteos\_a为例 - - - 在build/lite/platform/hi3516dv300\_liteos\_a/platform.json中的subsystem\_list字段下面添加appexecfwk和aafwk,代码如下: - - ``` - { - "name":"aafwk", - "project":"hmf/aafwk/services/abilitymgr_lite", - "path":"build/lite/config/subsystem/aafwk", - "dir":"foundation/aafwk/services/abilitymgr_lite", - "desc":"Ability Services Manager", - "requirement":"yes", - "default":"yes", - "selected":"yes" - }, - { - "name":"appexecfwk", - "project": "hmf/appexecfwk/services/bundlemgr_lite", - "path": "build/lite/config/subsystem/appexecfwk", - "dir": "foundation/appexecfwk/services/bundlemgr_lite", - "desc":"Bundle Services Manager", - "requirement":"yes", - "default":"yes", - "selected":"yes" - }, - ``` - - - 在build/lite/platform/hi3516dv300\_liteos\_a/template/ipcamera.json的“template\_subsystem\_list”字段下面添加"appexecfwk"和"aafwk",代码如下: - - ``` - "template_subsystem_list" : [ - ...... - "distributedschedule", - "aafwk", - "appexecfwk", - "communication", - ...... - ], - ``` - - - 在build/lite/config/subsystem/aafwk/BUILD.gn和/build/lite/config/subsystem/appexecfwk/BUILD.gn中添加对用户程序框架中具体组件的编译,如下: - - ``` - import("//build/lite/config/subsystem/lite_subsystem.gni") - - lite_subsystem("aafwk") { - subsystem_components = [ - "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilitykit_lite", - "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilityMain_lite", - "//foundation/aafwk/services/abilitymgr_lite:aafwk_services_lite", - "//foundation/aafwk/frameworks/kits/tools_lite:tools_lite", - "//foundation/aafwk/frameworks/kits/ability_lite/test:aafwk_testapp_lite", - ] - } - ``` - - ``` - import("//build/lite/config/subsystem/lite_subsystem.gni") - - lite_subsystem("appexecfwk") { - subsystem_components = [ - "//foundation/appexecfwk/kits/appkit_lite:appexecfwk_kit_lite", - "//foundation/appexecfwk/services/bundlemgr_lite:appexecfwk_services_lite", - ] - } - ``` - - - 在foundation/aafwk和foundation/appexecfwk下面添加对业务模块的编译,各个模块都有自己的BUILD.gn文件 - -- 添加完上述的配置后,执行如下命令编译整个系统: - -``` -python build.py ipcamera -p hi3516dv300_liteos_a -b release -``` - -## 运行用户程序框架子系统的两个服务 - -- 用户程序框架有两个系统服务AbilityMs和BundleMs,两系统服务运行于foudation进程中。 -- AbilityMs和BundleMs注册到sa\_manager中,sa\_manager运行于foundation进程中,sa\_manager为AbilityMs和BundleMs创建线程运行环境。具体创建AbilityMs、BundleMs服务的方式以及使用该服务的方式,可参考[系统服务框架子系统](zh-cn_topic_0000001051589563.md)。 -- 在foundation/distributedschedule/services/safwk\_lite/BUILD.gn中添加对abilityms和bundlems,如下: - -``` -deps = [ - "//foundation/distributedschedule/services/samgr_lite/samgr_server:server", - "//base/dfx/lite/liteos-a/source/log:hilog_a_shared", - "//foundation/aafwk/services/abilitymgr_lite:abilityms", - "//foundation/appexecfwk/services/bundlemgr_lite:bundlems", - "//base/security/services/iam_lite:pms_target", - "//foundation/distributedschedule/services/dtbschedmgr_lite:dtbschedmgr", -] -``` - -## 运行基于AbilityKit开发的Ability - -- 基于AbilityKit开发的Ability的Demo代码位于foundation/aafwk/frameworks/kits/ability\_lite/test路径下,如有需要修改其中的功能,可在unittest的文件中修改代码或增加代码文件,并在BUILD.gn中做相应的修改。 -- 编译该Demo,在shell中执行如下命令,编译成功后,在out/ipcamera\_hi3516dv300\_liteos\_a下面生成libLauncher.so文件: - - ``` - python build.py ipcamera -p hi3516dv300_liteos_a -T //foundation/aafwk/frameworks/kits/ability_lite/test:Launcher - ``` - -- 编写config.json,内容如下: - -``` -{ - "app": { - "bundleName": "com.huawei.launcher", - "vendor": "huawei", - "version": { - "code": 1, - "name": "1.0" - } - }, - "deviceConfig": { - "default": { - "reqSdk": { - "compatible": "zsdk 1.0.0", - "target": "zsdk 1.0.1" - }, - "keepAlive": false - }, - }, - "module": { - "deviceType": [ - "smartCamera" - ], - "distro": { - "deliveryWithInstall": true, - "moduleName": "Launcher", - "moduleType": "entry" - }, - "abilities": [{ - "name": "MainAbility", - "icon": "res/drawable/phone.png", - "label": "test app 1", - "launchType": "standard", - "type": "page", - "visible": true - }, - { - "name": "SecondAbility", - "icon": "res/drawable/phone.png", - "label": "test app 2", - "launchType": "standard", - "type": "page", - "visible": true - }, - { - "name": "ServiceAbility", - "icon": "res/drawable/phone.png", - "label": "test app 2", - "launchType": "standard", - "type": "service", - "visible": true - } - ] - } -} -``` - -- 生成hap包 - - 按照如下目录结构存放文件,res/drawable下面放置资源文件: - - ![](figures/zh-cn_image_0000001052720858.png) - - - 将上述文件打包生成zip包,修改后缀为.hap,例如Launcher.hap - -- 安装hap包 - - - 将上述hap包放置到指定目录下面 - - 执行安装命令,安装hap包: - - ``` - ./bin/bm install -p /nfs/hap/Launcher.hap - ``` - -- 安装完成后,通过如下命令,运行Demo - -``` -./bin/aa start -p com.huawei.launcher -n MainAbility -``` - -## 涉及仓 - -aafwk\_frameworks\_kits\_ability\_lite - -aafwk\_interfaces\_innerkits\_abilitykit\_lite - -aafwk\_frameworks\_kits\_content\_lite - -aafwk\_interfaces\_innerkits\_abilitymgr\_lite - -aafwk\_interfaces\_innerkits\_intent\_lite - -aafwk\_interfaces\_kits\_ability\_lite - -aafwk\_services\_abilitymgr\_lite - -appexecfwk\_frameworks\_bundle\_lite - -appexecfwk\_interfaces\_innerkits\_bundlemgr\_lite - -appexecfwk\_interfaces\_innerkits\_appexecfwk\_lite - -appexecfwk\_services\_bundlemgr\_lite - -appexecfwk\_kits\_appkit\_lite - -- Gitee From f8acf67081b9dd60dd13a876b550c8e9c9201440 Mon Sep 17 00:00:00 2001 From: changcheng-weng Date: Thu, 10 Sep 2020 23:08:11 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E6=A1=86=E6=9E=B6readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\255\220\347\263\273\347\273\237README.md" | 364 ++++++++++++++++++ 1 file changed, 364 insertions(+) create mode 100644 "readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" diff --git "a/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" "b/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" new file mode 100644 index 00000000000..ccb31b67894 --- /dev/null +++ "b/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" @@ -0,0 +1,364 @@ +# 用户程序框架子系统 + +## 简介 + +用户程序框架子系统包含两个大的模块:**Ability子系统**和**包管理子系统**。 + +**1. Ability子系统**,是OpenHarmony为开发者提供的一套开发OpenHarmony应用的框架。Ability子系统各模块如下图1所示: + +**图 1** Ability子系统框架图 + + +![](figures/zh-cn_image_0000001054941316.png) + +- **AbilityKit**是Ability框架提供给开发者的开发包,开发者基于该开发包可以开发出基于Ability组件的应用。基于Ability组件开发的应用有两种类型:基于Javascript语言开发的Ability(**JS Ability**)和基于C/C++语言开发的Ability(**Native Ability**)。**JS应用开发框架**是开发者开发JS Ability所用到框架,是在AbilityKit基础封装的包含js UI组件的一套方便开发者能够迅速开发Ability应用的框架。 +- **Ability**是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability。Ability分为两种类型:Page类型的Ability和Service类型的Ability + - **Page类型的Ability:**带有界面,为用户提供人机交互的能力。 + - **Service类型的Ability**:不带界面,为用户提供后台任务机制。 + +- **AbilitySlice**是单个页面及其控制逻辑的总和,是Page类型Ability特有的组件,一个Page类型的Ability可以包含多个AbilitySlice,此时,这些页面提供的业务能力应当是高度相关的。Page类型的Ability和AbilitySlice的关系如下图2所示: + + **图 2** Ability与AbilitySlice的关系图 + ![](figures/Ability与AbilitySlice的关系图.gif "Ability与AbilitySlice的关系图") + + +- **生命周期**是Ability被调度到启动、激活、隐藏和退出等各个状态的的统称。Ability各生命周期流转如下图3所示: + + **图 3** Ability生命周期流转图 + ![](figures/Ability生命周期流转图.png "Ability生命周期流转图") + + Ability生命周期各状态解析: + + - **UNINITIALIZED**:未初始状态,为临时状态,Ability被创建后会由UNINITIALIZED状态进入INITIAL状态; + + - **INITIAL**:初始化状态,也表示停止状态,表示当前Ability未运行,调用Start后进入INACTIVE,同时回调开发者的OnSatrt生命周期回调; + + - **INACTIVE**:未激活状态,表示当前窗口已显示但是无焦点状态,由于Window暂未支持焦点的概念,当前状态与ACTIVE一致。 + + - **ACTIVE**:前台激活状态,表示当前窗口已显示,并获取焦点,Ability在退到后台之前先由ACTIVE状态进入INACTIVE状态; + + - **BACKGROUND**: 后台状态,表示当前Ability退到后台,Ability在被销毁后由BACKGROUND状态进入INITIAL状态,或者重新被激活后由BACKGROUND状态进入ACTIVE状态。 + + +- **AbilityLoader**负责注册和加载开发者Ability的模块。开发者开发的Ability先要调用AbilityLoader的注册接口注册到框架中,接着Ability启动时会被实例化。 +- **AbilityManager**负责AbilityKit和Ability管理服务进行IPC的通信。 +- **EvenHandler**是AbilityKit提供给开发者的用于在Ability中实现线程间通信的一个模块。 +- **Ability运行管理服务**是用于协调各Ability运行关系、及生命周期进行调度的系统服务。其中,**服务启动**模块负责Ability管理服务的启动、注册等。**服务接口管理模块**负责Ability管理服务对外能力的管理。**进程管理模块**负责Ability应用所在进程的启动和销毁、及其进程信息维护等功能。**Ability栈管理模块**负责维护各个Ability之间跳转的先后关系。**生命周期调度模块**是Ability管理服务根据系统当前的操作调度Ability进入相应的状态的模块**。连接管理模块**是Ability管理服务对Service类型Ability连接管理的模块。 +- **AppSpawn**是负责创建Ability应用所在进程的系统服务,该服务有较高的权限,为Ability应用设置相应的权限,并预加载一些通用的模块,加速应用的启动。 + +**2. 包管理子系统**,是HarmonyOS为开发者提供的安装包管理框架。包管理子系统的由如下图4模块组成: + +**图 4** 包管理子系统框架图 +![](figures/包管理子系统框架图.png "包管理子系统框架图") + +- **BundleKit:**是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化监听接口。 +- **包扫描器**:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化。 + +- **包安装子模块**:安装,卸载,升级一个包;**包安装服务**一个单独进程的用于创建删除安装目录,具有较高的权限。 + +- **包管理子模块**:管理安装包相关的信息,存储持久化包信息。 + +- **包安全管理子模块**:签名检查、权限授予、权限管理。 + +## 目录 + +用户程序框架子系统源代码目录结构如下表1所示: + +**表 1** 用户程序框架子系统源代码目录结构 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

描述

+

foundation/aafwk/frameworks/ability_lite

+

AbilityKit实现的核心代码

+

foundation/aafwk/frameworks/abilitymgr_lite

+

管理AbilityKit与Ability管理服务通信的客户端代码

+

foundation/aafwk/frameworks/want_lite

+

Ability之间交互的信息载体的实现代码

+

foundation/aafwk/interfaces/kits/abilitykit_lite

+

AbilityKit为开发者提供的接口

+

foundation/aafwk/interfaces/innerkits/abilitymgr_lite

+

Ability管理服务为其它子系统提供的接口

+

foundation/aafwk/interfaces/kits/want_lite

+

Ability之间交互的信息载体的对外接口

+

foundation/aafwk/services/abilitymgr_lite

+

Ability管理服务的实现代码

+

foundation/appexecfwk/interfaces/kits/bundle_lite

+

BundleKit为开发者提供的接口

+

foundation/appexecfwk/interfaces/innerkits/bundlemgr_lite

+

AbilityKit实现的核心代码,及包管理服务为其它子系统提供的接口

+

foundation/appexecfwk/frameworks/bundle_lite

+

管理BundleKit与包管理服务通信的客户端代码

+

foundation/appexecfwk/utils/bundle_lite

+

包管理服务实现中用到的工具性的代码

+

foundation/appexecfwk/services/bundlemgr_lite

+

包管理服务的实现代码

+
+ +## 约束 + +- 语言版本 + - C++11版本或以上 + +- 框架针对不同的芯片平台和底层OS能力,规格有所区别 + - Cortex-M RAM/ROM: + - RAM:建议大于20K + - ROM: \> 300K (包含JS应用开发框架,UIKit及引擎等强相关子系统) + + - Cortex-A RAM/ROM: + - RAM:建议大于2M + - ROM:\> 2M (包含JS应用开发框架,UIKit及引擎等强相关子系统) + + + +## 编译用户程序框架子系统 + +- 添加对用户程序框架子系统的编译,以hi3516dv300\_liteos\_a为例 + + - 在build/lite/platform/hi3516dv300\_liteos\_a/platform.json中的subsystem\_list字段下面添加appexecfwk和aafwk,代码如下: + + ``` + { + "name":"aafwk", + "project":"hmf/aafwk/services/abilitymgr_lite", + "path":"build/lite/config/subsystem/aafwk", + "dir":"foundation/aafwk/services/abilitymgr_lite", + "desc":"Ability Services Manager", + "requirement":"yes", + "default":"yes", + "selected":"yes" + }, + { + "name":"appexecfwk", + "project": "hmf/appexecfwk/services/bundlemgr_lite", + "path": "build/lite/config/subsystem/appexecfwk", + "dir": "foundation/appexecfwk/services/bundlemgr_lite", + "desc":"Bundle Services Manager", + "requirement":"yes", + "default":"yes", + "selected":"yes" + }, + ``` + + - 在build/lite/platform/hi3516dv300\_liteos\_a/template/ipcamera.json的“template\_subsystem\_list”字段下面添加"appexecfwk"和"aafwk",代码如下: + + ``` + "template_subsystem_list" : [ + ...... + "distributedschedule", + "aafwk", + "appexecfwk", + "communication", + ...... + ], + ``` + + - 在build/lite/config/subsystem/aafwk/BUILD.gn和/build/lite/config/subsystem/appexecfwk/BUILD.gn中添加对用户程序框架中具体组件的编译,如下: + + ``` + import("//build/lite/config/subsystem/lite_subsystem.gni") + + lite_subsystem("aafwk") { + subsystem_components = [ + "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilitykit_lite", + "//foundation/aafwk/frameworks/kits/ability_lite:aafwk_abilityMain_lite", + "//foundation/aafwk/services/abilitymgr_lite:aafwk_services_lite", + "//foundation/aafwk/frameworks/kits/tools_lite:tools_lite", + "//foundation/aafwk/frameworks/kits/ability_lite/test:aafwk_testapp_lite", + ] + } + ``` + + ``` + import("//build/lite/config/subsystem/lite_subsystem.gni") + + lite_subsystem("appexecfwk") { + subsystem_components = [ + "//foundation/appexecfwk/kits/appkit_lite:appexecfwk_kit_lite", + "//foundation/appexecfwk/services/bundlemgr_lite:appexecfwk_services_lite", + ] + } + ``` + + - 在foundation/aafwk和foundation/appexecfwk下面添加对业务模块的编译,各个模块都有自己的BUILD.gn文件 + +- 添加完上述的配置后,执行如下命令编译整个系统: + +``` +python build.py ipcamera -p hi3516dv300_liteos_a -b debug +``` + +## 运行用户程序框架子系统的两个服务 + +- 用户程序框架有两个系统服务ability管理服务(abilityms)和(bundlems),两系统服务运行于foudation进程中。 +- abilityms和bundlems注册到sa\_manager中,sa\_manager运行于foundation进程中,sa\_manager为abilityms和bundlems创建线程运行环境。具体创建abilityms、bundlems服务的方式以及使用该服务的方式,可参考[系统服务框架子系统](zh-cn_topic_0000001051589563.md)。 +- 在foundation/distributedschedule/services/safwk\_lite/BUILD.gn中添加对abilityms和bundlems,如下: + +``` +deps = [ + "//foundation/distributedschedule/services/samgr_lite/samgr_server:server", + "//base/dfx/lite/liteos-a/source/log:hilog_a_shared", + "//foundation/aafwk/services/abilitymgr_lite:abilityms", + "//foundation/appexecfwk/services/bundlemgr_lite:bundlems", + "//base/security/services/iam_lite:pms_target", + "//foundation/distributedschedule/services/dtbschedmgr_lite:dtbschedmgr", +] +``` + +## 运行基于AbilityKit开发的Ability + +- 基于AbilityKit开发的Ability的Demo代码位于foundation/aafwk/frameworks/kits/ability\_lite/test路径下,如有需要修改其中的功能,可在unittest的文件中修改代码或增加代码文件,并在BUILD.gn中做相应的修改。 +- 编译该Demo,在shell中执行如下命令,编译成功后,在out/ipcamera\_hi3516dv300\_liteos\_a下面生成libLauncher.so文件: + + ``` + python build.py ipcamera -p hi3516dv300_liteos_a -T //foundation/aafwk/frameworks/kits/ability_lite/test:Launcher + ``` + +- 编写config.json,内容如下: + +``` +{ + "app": { + "bundleName": "com.huawei.launcher", + "vendor": "huawei", + "version": { + "code": 1, + "name": "1.0" + }, + "apiVersion": { + "compatible": 3, + "target": 3 + } + }, + "deviceConfig": { + "default": { + "keepAlive": false + }, + }, + "module": { + "deviceType": [ + "smartVision" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "Launcher", + "moduleType": "entry" + }, + "abilities": [{ + "name": "MainAbility", + "icon": "assets/entry/resources/base/media/icon.png", + "label": "test app 1", + "launchType": "standard", + "type": "page", + "visible": true + }, + { + "name": "SecondAbility", + "icon": "assets/entry/resources/base/media/icon.png", + "label": "test app 2", + "launchType": "standard", + "type": "page", + "visible": true + }, + { + "name": "ServiceAbility", + "icon": "", + "label": "test app 2", + "launchType": "standard", + "type": "service", + "visible": true + } + ] + } +} +``` + +- 生成hap包 + - 按照如下目录结构存放文件,assets/entry/resources/base/media下面放置资源文件: + + ![](figures/zh-cn_image_0000001055712348.png) + + - 将上述文件打包生成zip包,修改后缀为.hap,例如Launcher.hap + +- 安装hap包 + + - 将上述hap包放置到指定目录下面 + - 执行安装命令,安装hap包: + + ``` + ./bin/bm install -p /nfs/hap/Launcher.hap + ``` + +- 安装完成后,通过如下命令,运行Demo + +``` +./bin/aa start -p com.huawei.launcher -n MainAbility +``` + +## 涉及仓 + +aafwk\_frameworks\_kits\_ability\_lite + +aafwk\_interfaces\_innerkits\_abilitykit\_lite + +aafwk\_frameworks\_kits\_content\_lite + +aafwk\_interfaces\_innerkits\_abilitymgr\_lite + +aafwk\_interfaces\_innerkits\_intent\_lite + +aafwk\_interfaces\_kits\_ability\_lite + +aafwk\_services\_abilitymgr\_lite + +appexecfwk\_frameworks\_bundle\_lite + +appexecfwk\_interfaces\_innerkits\_bundlemgr\_lite + +appexecfwk\_interfaces\_innerkits\_appexecfwk\_lite + +appexecfwk\_services\_bundlemgr\_lite + +appexecfwk\_kits\_appkit\_lite + -- Gitee From 416ec9ba108c79f00da87f409327ee9fd1c15e8f Mon Sep 17 00:00:00 2001 From: changcheng-weng Date: Thu, 10 Sep 2020 23:10:30 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20re?= =?UTF-8?q?adme/figures/zh-cn=5Fimage=5F0000001051366141.png?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme/figures/zh-cn_image_0000001051366141.png | Bin 31646 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 readme/figures/zh-cn_image_0000001051366141.png diff --git a/readme/figures/zh-cn_image_0000001051366141.png b/readme/figures/zh-cn_image_0000001051366141.png deleted file mode 100755 index 38e5f8738d93b0101253c287f98dca987b1df96f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31646 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 -- Gitee From 26cc8c9a20f1018672dd874abb43a015a74fb8fe Mon Sep 17 00:00:00 2001 From: changcheng-weng Date: Thu, 10 Sep 2020 23:10:46 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20re?= =?UTF-8?q?adme/figures/zh-cn=5Fimage=5F0000001052000128.png?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme/figures/zh-cn_image_0000001052000128.png | Bin 49893 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 readme/figures/zh-cn_image_0000001052000128.png diff --git a/readme/figures/zh-cn_image_0000001052000128.png b/readme/figures/zh-cn_image_0000001052000128.png deleted file mode 100755 index 358d81d549c226fcdf48e06e50c9ac60f395f0a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49893 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 Date: Thu, 10 Sep 2020 23:11:01 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20re?= =?UTF-8?q?adme/figures/zh-cn=5Fimage=5F0000001052201483.png?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme/figures/zh-cn_image_0000001052201483.png | Bin 57798 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 readme/figures/zh-cn_image_0000001052201483.png diff --git a/readme/figures/zh-cn_image_0000001052201483.png b/readme/figures/zh-cn_image_0000001052201483.png deleted file mode 100755 index 37864e1836ef8e1e98c3ac064e318829de2c643f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57798 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%0D*|htRFnG#>OQ}4vbZuYb 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 Date: Thu, 10 Sep 2020 23:11:22 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20re?= =?UTF-8?q?adme/figures/zh-cn=5Fimage=5F0000001052204863.gif?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme/figures/zh-cn_image_0000001052204863.gif | Bin 4948 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 readme/figures/zh-cn_image_0000001052204863.gif diff --git a/readme/figures/zh-cn_image_0000001052204863.gif b/readme/figures/zh-cn_image_0000001052204863.gif deleted file mode 100755 index dd5af6fa52800c0d7fad7dbc8ae6e21149ae9897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4948 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 ARsaA1 -- Gitee From 82c286e0e505ebbe3d60b0cdf4abea8fad27cb47 Mon Sep 17 00:00:00 2001 From: changcheng-weng Date: Thu, 10 Sep 2020 23:47:23 +0800 Subject: [PATCH 12/12] =?UTF-8?q?update=20readme/=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E6=A1=86=E6=9E=B6=E5=AD=90=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?README.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\346\236\266\345\255\220\347\263\273\347\273\237README.md" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" "b/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" index ccb31b67894..68d4940745c 100644 --- "a/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" +++ "b/readme/\347\224\250\346\210\267\347\250\213\345\272\217\346\241\206\346\236\266\345\255\220\347\263\273\347\273\237README.md" @@ -13,7 +13,7 @@ - **AbilityKit**是Ability框架提供给开发者的开发包,开发者基于该开发包可以开发出基于Ability组件的应用。基于Ability组件开发的应用有两种类型:基于Javascript语言开发的Ability(**JS Ability**)和基于C/C++语言开发的Ability(**Native Ability**)。**JS应用开发框架**是开发者开发JS Ability所用到框架,是在AbilityKit基础封装的包含js UI组件的一套方便开发者能够迅速开发Ability应用的框架。 - **Ability**是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability。Ability分为两种类型:Page类型的Ability和Service类型的Ability - - **Page类型的Ability:**带有界面,为用户提供人机交互的能力。 + - **Page类型的Ability**:带有界面,为用户提供人机交互的能力。 - **Service类型的Ability**:不带界面,为用户提供后台任务机制。 - **AbilitySlice**是单个页面及其控制逻辑的总和,是Page类型Ability特有的组件,一个Page类型的Ability可以包含多个AbilitySlice,此时,这些页面提供的业务能力应当是高度相关的。Page类型的Ability和AbilitySlice的关系如下图2所示: @@ -51,7 +51,7 @@ **图 4** 包管理子系统框架图 ![](figures/包管理子系统框架图.png "包管理子系统框架图") -- **BundleKit:**是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化监听接口。 +- **BundleKit**:是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化监听接口。 - **包扫描器**:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化。 - **包安装子模块**:安装,卸载,升级一个包;**包安装服务**一个单独进程的用于创建删除安装目录,具有较高的权限。 -- Gitee