包管理子系统.md 7.8 KB
Newer Older
W
wanghang 已提交
1
# **包管理子系统**
M
mamingshuai 已提交
2 3 4

## 简介

W
wanghang 已提交
5
包管理子系统负责应用安装包的管理,提供安装包的信息查询、安装、更新、卸载和包信息存储等能力。具体功能如下:
M
mamingshuai 已提交
6

W
wanghang 已提交
7
包管理子系统架构如下图所示:
M
mamingshuai 已提交
8

W
wanghang 已提交
9
![](figures/appexecfwk.png)
M
mamingshuai 已提交
10 11


W
wanghang 已提交
12
## 部件内子模块职责
M
mamingshuai 已提交
13

W
wanghang 已提交
14 15 16 17 18 19 20 21 22
| 子模块名称       | 职责                                                         |
| ---------------- | ------------------------------------------------------------ |
| 包管理接口模块   | 1.对外提供的安装更新卸载及通知接口;<br>2.对外提供的包/组件信息/权限信息查询接口;<br>3.对外提供的应用权限查询接口;<br>4.对外提供的清除数据的接口; |
| 扫描模块         | 1.预置应用的扫描;<br>2.已安装三方应用的扫描;<br>3.包配置文件的解析; |
| 安全管理模块     | 1.安装过程中的签名校验;<br>2.安装过程中应用所申请权限的授予;<br>3.应用运行中权限的校验; |
| DBMS模块         | 1.获取指定设备ability信息;                                  |
| 安装管理模块     | 1.安装、更新、卸载逻辑处理及结果通知;                       |
| 包信息管理模块   | 1.包信息、组件信息的存储及同步;                             |
| 设备状态监听模块 | 1.监听设备的上下线;                                         |
23
| Installed模块     | 特权进程:<br>1)用于创建、删除等目录操作;<br>2)用于创建、删除等文件操作;<br>3)用于设备目录的沙箱uid/gid等操作 |
W
wanghang 已提交
24
| DFX              | 1.包管理维测工具                                               |
M
mamingshuai 已提交
25 26 27 28 29 30 31 32 33 34 35 36 37 38


## 目录

```
foundation/appexecfwk/standard
├── kits
│   └── appkit						   # Appkit实现的核心代码
├── common
│   └── log							   # 日志组件目录
├── interfaces
│   └── innerkits					   # 内部接口存放目录
├── services
│   └── bundlemgr	                   # 包管理服务框架代码
W
wanghang 已提交
39
│   └── dbms	                       # 分布式包管理服务框架代码
M
mamingshuai 已提交
40 41 42 43 44
├── test						       # 测试目录
└── tools                              # bm命令存放目录
```


W
wangtiantian 已提交
45
### bm工具命令
W
wangtiantian 已提交
46
bm是用来方便开发者调试的一个工具。bm工具被hdc工具封装,进入hdc shell命令后,就可以使用bm工具。
W
wangtiantian 已提交
47
| 命令    | 描述       |
M
mamingshuai 已提交
48
| ------- | ---------- |
W
wangtiantian 已提交
49 50 51 52 53 54 55 56 57 58 59 60
|  help | 帮助命令,显示bm支持的命令信息 |
| install | 安装命令,用来安装应用|
| uninstall | 卸载命令,用来卸载应用|
| dump | 查询命令,用来查询应用的相关信息|
| clean | 清理命令,用来清理应用的缓存和数据 |
| enable | 使能命令,用来使能应用 |
| disable | 禁用命令,用来禁用应用 |
| get | 获取udid命令,用来获取设备的udid |
#### 帮助命令
| 命令    | 描述       |
| ------- | ---------- |
| bm help | 显示bm工具的能够支持的命令信息 |
W
wangtiantian 已提交
61 62 63 64 65 66

* 示例
```Bash
# 显示帮助信息
bm help
```
W
wangtiantian 已提交
67 68 69
#### 安装命令
命令可以组合,下面列出部分命令。
| 命令                                | 描述                       |
M
mamingshuai 已提交
70
| ----------------------------------- | -------------------------- |
W
wangtiantian 已提交
71
| bm install -h | 显示install支持的命令信息 |
W
wangtiantian 已提交
72 73 74 75
| bm install -p <hap-file-path>    | 安装hap包,支持指定路径和多个hap同时安装 |
| bm install -p <hap-file-path> -u <user-id>   |给指定用户安装一个hap包 |
| bm install -r -p <hap-file-path> | 覆盖安装一个hap包 |
| bm install -r -p <hap-file-path> -u <user-id> | 给指定用户覆盖安装一个hap包 |
M
mamingshuai 已提交
76

W
wangtiantian 已提交
77 78 79
* 示例
```Bash
# 安装一个hap
M
mamingshuai 已提交
80
bm install -p /data/app/ohosapp.hap
W
wangtiantian 已提交
81
# 覆盖安装一个hap
W
wangtiantian 已提交
82
bm install -p /data/app/ohosapp.hap -r
M
mamingshuai 已提交
83
```
W
wangtiantian 已提交
84 85 86
#### 卸载命令
命令可以组合,下面列出部分命令。-u未指定情况下,默认为所有用户。
| 命令                          | 描述                     |
M
mamingshuai 已提交
87
| ----------------------------- | ------------------------ |
W
wangtiantian 已提交
88 89
| bm uninstall -h | 显示uninstall支持的命令信息 |
| bm uninstall -n <bundle-name> | 通过指定包名卸载应用 |
张悦诶 已提交
90
| bm uninstall -n <bundle-name> -k | 通过指定包名卸载应用时保留数据目录 |
W
wangtiantian 已提交
91 92
| bm uninstall -n <bundle-name> -u <user-id>| 通过指定包名和用户卸载应用 |
| bm uninstall -n <bundle-name> -m <moudle-name> | 通过指定包名卸载应用的一个模块 |
W
wangtiantian 已提交
93 94 95 96

* 示例
```Bash
# 卸载一个hap
M
mamingshuai 已提交
97
bm uninstall -n com.ohos.app
张悦诶 已提交
98 99
# 卸载一个hap,保留数据目录
bm uninstall -n com.ohos.app -k
W
wangtiantian 已提交
100
# 卸载一个hap下面的ability
W
wangtiantian 已提交
101
bm uninstall -n com.ohos.app -m com.ohos.app.MainAbility
M
mamingshuai 已提交
102
```
W
wangtiantian 已提交
103 104 105
#### 查询命令
命令可以组合,下面列出部分命令。-u未指定情况下,默认为所有用户。
| 命令       | 描述                       |
M
mamingshuai 已提交
106
| ---------- | -------------------------- |
W
wangtiantian 已提交
107 108 109 110 111 112 113
| bm dump -h | 显示dump支持的命令信息 |
| bm dump -a | 查询系统已经安装的所有应用 |
| bm dump -i | 查询系统已经安装的所有应用的详细信息 |
| bm dump -n <bundle-name> | 查询指定包名的详细信息 |
| bm dump -n <bundle-name> -s | 查询指定包名下的快捷方式信息 |
| bm dump -n <bundle-name> -d <device-id> | 跨设备查询包信息 |
| bm dump -n <bundle-name> -u <user-id> | 查询指定用户下指定包名的详细信息 |
W
wangtiantian 已提交
114 115 116 117

* 示例
```Bash
# 显示所有已安装的包名
W
wangtiantian 已提交
118
bm dump -a
W
wangtiantian 已提交
119
# 显示该应用的详细信息
W
wangtiantian 已提交
120 121 122 123 124 125 126 127 128 129 130
bm dump -n com.ohos.app
```
#### 清理命令
-u未指定情况下,默认为当前活跃用户。
| 命令       | 描述                       |
| ---------- | -------------------------- |
| bm clean -h | 显示clean支持的命令信息 |
| bm clean -n <bundle-name> -c | 清除指定包名的缓存数据 |
| bm clean -n <bundle-name> -d | 清除指定包名的数据目录 |
| bm clean -n <bundle-name> -c -u <user-id> | 清除指定用户下包名的缓存数据 |
| bm clean -n <bundle-name> -d -u <user-id> | 清除指定用户下包名的数据目录 |
W
wangtiantian 已提交
131 132 133 134

* 示例
```Bash
# 清理该应用下的缓存数据
W
wangtiantian 已提交
135
bm clean -n com.ohos.app -c
W
wangtiantian 已提交
136
# 清理该应用下的用户数据
W
wangtiantian 已提交
137 138 139 140 141 142 143 144 145 146
bm clean -n com.ohos.app -d
```
#### 使能命令
-u未指定情况下,默认为当前活跃用户。
| 命令       | 描述                       |
| ---------- | -------------------------- |
| bm enable -h | 显示enable支持的命令信息 |
| bm enable -n <bundle-name> | 使能指定包名的应用 |
| bm enable -n <bundle-name> -a <ability-name> | 使能指定包名下的元能力模块 |
| bm enable -n <bundle-name> -u <user-id>| 使能指定用户和包名的应用 |
W
wangtiantian 已提交
147 148 149 150

* 示例
```Bash
# 使能该应用
W
wangtiantian 已提交
151 152 153 154 155 156 157 158 159 160
bm enable -n com.ohos.app
```
#### 禁用命令
-u未指定情况下,默认为当前活跃用户。
| 命令       | 描述                       |
| ---------- | -------------------------- |
| bm disable -h | 显示disable支持的命令信息 |
| bm disable -n <bundle-name> | 禁用指定包名的应用 |
| bm disable -n <bundle-name> -a <ability-name> | 禁用指定包名下的元能力模块 |
| bm disable -n <bundle-name> -u <user-id>| 禁用指定用户和包名下的应用 |
W
wangtiantian 已提交
161 162 163 164

* 示例
```Bash
# 禁用该应用
W
wangtiantian 已提交
165 166 167 168 169 170 171
bm disable -n com.ohos.app
```
#### 获取udid命令
| 命令       | 描述                       |
| ---------- | -------------------------- |
| bm get -h | 显示get支持的命令信息 |
| bm get -u | 获取设备的udid |
W
wangtiantian 已提交
172 173 174 175

* 示例
```Bash
# 获取设备的udid
W
wangtiantian 已提交
176 177
bm get -u
```
M
mamingshuai 已提交
178 179 180

## 相关仓

W
wanghang 已提交
181
包管理子系统
M
mamingshuai 已提交
182

183
[**appexecfwk_standard**](https://gitee.com/openharmony/appexecfwk_standard)
M
mamingshuai 已提交
184

185
[developtools_packing_tool](https://gitee.com/openharmony/developtools_packing_tool)