慧聪物联网 | 慧聪智能硬件网 | 慧聪新能源网 | 慧聪LED网 | 慧聪电气网 | 慧聪安防网 | 慧聪IT网 | 慧聪变频器网
特惠新品微信
投稿
热门推荐:传感器专栏 | 半导体专栏 | 晶振专栏 | 阻容感专栏 | 2019-2020电子行业大全 | 中国电子展 | 2019品牌盛会TOP10榜单

慧聪电子网首页 > 行业资讯 > 国内资讯 > 正文

分享到

鸿蒙子系统解读-包管理子系统篇

http://www.ec.hc360.com2020年11月16日14:56T|T

1. 框架简介

1

    包管理子系统,是OpenHarmony为开发者提供的安装包管理框架,应用程序的安装、卸载、升级、权限管理等一系列操作都是通过包管理器完成的。包管理子系统由如下图模块组成:

· BundleKit:是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化监听接口。

· 包扫描器:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化。

· 包安装子模块:安装,卸载,升级一个包;包安装服务一个单独进程的用于创建删除安装目录,具有较高的权限。

· 包管理子模块:管理安装包相关的信息,存储持久化包信息。

· 包安全管理子模块:签名检查、权限授予、权限管理。

2. 代码目录结构

2

3. 实例讲解

    为了能够熟悉包管理的是如何工作的,接下来将以包安装和包信息查询来进行详解。

Ø 案例一:包安装

    Install是包安装的入口函数,首先创建了GetBmsInnerClient对象,这是用于和Server端进行IPC通讯的IClientProxy,通过Invoke发送了ID为INSTALL的消息,在Server端(bundlems)将对INSTALL进行功能实现,安装结果通过BundleSelfCallback回调回来。需要注意这里的Client和Server并不是直接进行IPC通讯的,而是通过/dev/lite_ipc驱动中转调用到Server端,这个中转过程就不在本章进行详细讲解。

3

    定义INSTALL的Invoke ID,在Server端通过ID来映射到对应的包安装接口函数,这里同时还定义了卸载、包信息查询等,GET_BUNDLE_INFO后面的包信息查询中会用到。

4

    刚才提到了Client端IClientProxy的创建,那对应Server端则有一个IServerProxy,用于远程接口调用。g_bmsInnerImpl 就是声明了IServerProxy,当收到INSTALL的消息时,则会通过BundleMsInvokeFuc根据Invoke ID来映射到对应的函数指针InstallInnerBundle。 由于包安装是个较为耗时的操作,所以采用异步线程Request的请求方式。包安装完成后向Client端反馈包安装状态。

5

6

    通过流程图总结一下调用流程:

7

责任编辑:刘婷婷

声明:本网站中,来源标明为“ 慧聪电子网”的文章,转载请标明出处。

欢迎投稿,邮箱:yusy@hc360.com

活动推荐

更多
  • 慕尼黑华南电子展

    2020年11月3-5日

    深圳国际会展中心(宝安新馆)

    展会详情

  • 友情链接

    申请友情链接

    广州地址

    广州市越秀区东风东路745号紫园商务大厦19楼

    深圳地址

    深圳市福田区深南中路2070号电子科技大厦A座2106

    北京地址

    北京市朝阳区小关东里10号院润宇大厦2层

    关于我们 | 加入我们 | 我要投稿
    | 寻求报道 | 申请合作

    Copyright?2000-2020 hc360.com. All Rights Reserved
    京ICP证010051号 海淀公安局网络备案编号:11010802015485