鸿蒙子系统解读-包管理子系统篇
发布时间:2020-11-17 15:05:39 点击次数:220

软件包管理子系统是OpenHarmony为开发人员提供的安装软件包管理框架。程序安装,卸载,升级和权限管理等一系列操作均通过包管理器完成。程序包管理子系统由以下模块构成: ·BundleKit:是软件包管理服务提供的界面,包括安装/卸载界面,软件包信息查询界面和软件包状况更动监视界面。 ·软件包扫描程序:用于解析本地预制或已安装的安装软件包,提取内部的各种信息,以供管理子模块展开管理和持久化。
包安装子模块:安装,卸载,升级软件包;软件包安装服务是一个单独的过程,用于创建和删减有着较高权限的安装目录。 ·包管理子模块:管理与安装程序包相关的信息,储存持久性程序包信息。 ·包安全性管理子模块:署名检验,权限授予,权限管理。
代码目录构造 3.示例说明 为了熟识软件包管理的工作方式,将在软件包安装和软件包信息查询中对以下内容展开详细说明。 Ø情形1:软件包安装 Install是软件包安装的入口函数。首先,创建GetBmsInnerClient对象。这是用于与服务器端IPC通信的IClientProxy,并且Invoke是通过ID消息发送到bundlems的,install的机能将在服务器端(INSTALL)实行,安装结果将通过BundleSelfCallback回调赶回。应当留意的是Client和此处的server不直接与IPC通信,而是通过/dev/lite_ipc驱动程序传输到服务器。本章将不详细说明此传输过程。 定义INSTALL中的InvokeID,并通过服务器端的ID将其映射到相应的包安装接口函数。卸载,软件包信息查询等也在此处定义。GET_BUNDLE_INFO之后的软件包信息查询将被采用。
刚提到了Client端IClientProxy的创建,有一个IServerProxy与服务器端相对应,用于远程接口调用。g_bmsInnerImpl,这意味着声明了IServerProxy。当接到来自INSTALL的消息时,将根据BundleMsInvokeFucInvoke到ID映射到相应的函数指针installinnerbundle。由于软件包安装是一个相对耗时的操作,因此异步线程的请求方式使用Request,软件包安装完成后,将软件包安装状况反馈给Client。

