1# **包管理子系统** 2 3## 简介 4 5包管理子系统负责应用安装包的管理,提供安装包的信息查询、安装、更新、卸载和包信息存储等能力。具体功能如下: 6 7包管理子系统架构如下图所示: 8 9![](figures/appexecfwk.png) 10 11 12## 部件内子模块职责 13 14| 子模块名称 | 职责 | 15| ---------------- | ------------------------------------------------------------ | 16| 包管理接口模块 | 1.对外提供的安装更新卸载及通知接口;<br>2.对外提供的包/组件信息/权限信息查询接口;<br>3.对外提供的应用权限查询接口;<br>4.对外提供的清除数据的接口; | 17| 扫描模块 | 1.预置应用的扫描;<br>2.已安装三方应用的扫描;<br>3.包配置文件的解析; | 18| 安全管理模块 | 1.安装过程中的签名校验;<br>2.安装过程中应用所申请权限的授予;<br>3.应用运行中权限的校验; | 19| DBMS模块 | 1.获取指定设备ability信息; | 20| 安装管理模块 | 1.安装、更新、卸载逻辑处理及结果通知; | 21| 包信息管理模块 | 1.包信息、组件信息的存储及同步; | 22| 设备状态监听模块 | 1.监听设备的上下线; | 23| Installed模块 | 特权进程:<br>1)用于创建、删除等目录操作;<br>2)用于创建、删除等文件操作;<br>3)用于设备目录的沙箱uid/gid等操作 | 24| DFX | 1.包管理维测工具 | 25 26 27## 目录 28 29``` 30foundation/bundlemanager/bundle_framework 31├── bundle_tool # bm工具存放目录 32├── distributed_bundle_framework # 分布式包管理服务框架代码 33├── common 34│ └── log # 日志组件目录 35├── interfaces 36│ ├── inner_api # 内部接口存放目录 37│ └── kits # 应用接口 38│ ├── js # JS接口 39│ └── native # C/C++接口 40├── services # 包管理服务框架代码 41└── test # 测试目录 42``` 43 44 45### bm工具命令 46bm是用来方便开发者调试的一个工具。bm工具被hdc工具封装,进入hdc shell命令后,就可以使用bm工具。 47| 命令 | 描述 | 48| ------- | ---------- | 49| help | 帮助命令,显示bm支持的命令信息 | 50| install | 安装命令,用来安装应用| 51| uninstall | 卸载命令,用来卸载应用| 52| dump | 查询命令,用来查询应用的相关信息| 53| clean | 清理命令,用来清理应用的缓存和数据 | 54| enable | 使能命令,用来使能应用 | 55| disable | 禁用命令,用来禁用应用 | 56| get | 获取udid命令,用来获取设备的udid | 57#### 帮助命令 58| 命令 | 描述 | 59| ------- | ---------- | 60| bm help | 显示bm工具的能够支持的命令信息 | 61 62* 示例 63```Bash 64# 显示帮助信息 65bm help 66``` 67#### 安装命令 68命令可以组合,下面列出部分命令。 69| 命令 | 描述 | 70| ----------------------------------- | -------------------------- | 71| bm install -h | 显示install支持的命令信息 | 72| bm install -p <hap-file-path> | 安装hap包,支持指定路径和多个hap同时安装 | 73| bm install -p <hap-file-path> -u <user-id> |给指定用户安装一个hap包 | 74| bm install -r -p <hap-file-path> | 覆盖安装一个hap包 | 75| bm install -r -p <hap-file-path> -u <user-id> | 给指定用户覆盖安装一个hap包 | 76 77* 示例 78```Bash 79# 安装一个hap 80bm install -p /data/app/ohosapp.hap 81# 覆盖安装一个hap 82bm install -p /data/app/ohosapp.hap -r 83``` 84#### 卸载命令 85命令可以组合,下面列出部分命令。-u未指定情况下,默认为所有用户。 86| 命令 | 描述 | 87| ----------------------------- | ------------------------ | 88| bm uninstall -h | 显示uninstall支持的命令信息 | 89| bm uninstall -n <bundle-name> | 通过指定包名卸载应用 | 90| bm uninstall -n <bundle-name> -k | 通过指定包名卸载应用时保留数据目录 | 91| bm uninstall -n <bundle-name> -u <user-id>| 通过指定包名和用户卸载应用 | 92| bm uninstall -n <bundle-name> -m <moudle-name> | 通过指定包名卸载应用的一个模块 | 93 94* 示例 95```Bash 96# 卸载一个hap 97bm uninstall -n com.ohos.app 98# 卸载一个hap,保留数据目录 99bm uninstall -n com.ohos.app -k 100# 卸载一个hap下面的ability 101bm uninstall -n com.ohos.app -m com.ohos.app.MainAbility 102``` 103#### 查询命令 104命令可以组合,下面列出部分命令。-u未指定情况下,默认为所有用户。 105| 命令 | 描述 | 106| ---------- | -------------------------- | 107| bm dump -h | 显示dump支持的命令信息 | 108| bm dump -a | 查询系统已经安装的所有应用 | 109| bm dump -n <bundle-name> | 查询指定包名的详细信息 | 110| bm dump -n <bundle-name> -s | 查询指定包名下的快捷方式信息 | 111| bm dump -n <bundle-name> -d <device-id> | 跨设备查询包信息 | 112| bm dump -n <bundle-name> -u <user-id> | 查询指定用户下指定包名的详细信息 | 113 114* 示例 115```Bash 116# 显示所有已安装的包名 117bm dump -a 118# 显示该应用的详细信息 119bm dump -n com.ohos.app 120``` 121#### 清理命令 122-u未指定情况下,默认为当前活跃用户。 123| 命令 | 描述 | 124| ---------- | -------------------------- | 125| bm clean -h | 显示clean支持的命令信息 | 126| bm clean -n <bundle-name> -c | 清除指定包名的缓存数据 | 127| bm clean -n <bundle-name> -d | 清除指定包名的数据目录 | 128| bm clean -n <bundle-name> -c -u <user-id> | 清除指定用户下包名的缓存数据 | 129| bm clean -n <bundle-name> -d -u <user-id> | 清除指定用户下包名的数据目录 | 130 131* 示例 132```Bash 133# 清理该应用下的缓存数据 134bm clean -n com.ohos.app -c 135# 清理该应用下的用户数据 136bm clean -n com.ohos.app -d 137``` 138#### 使能命令 139-u未指定情况下,默认为当前活跃用户。 140| 命令 | 描述 | 141| ---------- | -------------------------- | 142| bm enable -h | 显示enable支持的命令信息 | 143| bm enable -n <bundle-name> | 使能指定包名的应用 | 144| bm enable -n <bundle-name> -a <ability-name> | 使能指定包名下的元能力模块 | 145| bm enable -n <bundle-name> -u <user-id>| 使能指定用户和包名的应用 | 146 147* 示例 148```Bash 149# 使能该应用 150bm enable -n com.ohos.app 151``` 152#### 禁用命令 153-u未指定情况下,默认为当前活跃用户。 154| 命令 | 描述 | 155| ---------- | -------------------------- | 156| bm disable -h | 显示disable支持的命令信息 | 157| bm disable -n <bundle-name> | 禁用指定包名的应用 | 158| bm disable -n <bundle-name> -a <ability-name> | 禁用指定包名下的元能力模块 | 159| bm disable -n <bundle-name> -u <user-id>| 禁用指定用户和包名下的应用 | 160 161* 示例 162```Bash 163# 禁用该应用 164bm disable -n com.ohos.app 165``` 166#### 获取udid命令 167| 命令 | 描述 | 168| ---------- | -------------------------- | 169| bm get -h | 显示get支持的命令信息 | 170| bm get -u | 获取设备的udid | 171 172* 示例 173```Bash 174# 获取设备的udid 175bm get -u 176``` 177 178## 相关仓 179 180包管理子系统 181 182[**appexecfwk_standard**](https://gitee.com/openharmony/appexecfwk_standard) 183 184[developtools_packing_tool](https://gitee.com/openharmony/developtools_packing_tool) 185