1# **bm工具命令组件** 2 3## 简介 4 5bm是用来方便开发者调试的一个工具。bm工具被hdc工具封装,进入hdc shell命令后,就可以使用bm工具。 6 7 8## 目录 9 10``` 11foundation/bundlemanager/bundle_tool 12├── frameworks # bm工具服务框架代码 13└── test # 测试目录 14``` 15 16### bm工具命令 17 18 **表1** bm工具命令列表 19 20| 命令 | 描述 | 21| -------- | -------- | 22| help | 帮助命令,显示bm支持的命令信息。 | 23| install | 安装命令,用来安装应用。 | 24| uninstall | 卸载命令,用来卸载应用。 | 25| dump | 查询命令,用来查询应用的相关信息。 | 26| clean | 清理命令,用来清理应用的缓存和数据。此命令在root版本下可用,在user版本下打开开发者模式可用。其它情况不可用。| 27| enable | 使能命令,用来使能应用,使能后应用可以继续使用。此命令在root版本下可用,在user版本下不可用。 | 28| disable | 禁用命令,用来禁用应用,禁用后应用无法使用。此命令在root版本下可用,在user版本下不可用。 | 29| get | 获取udid命令,用来获取设备的udid。 | 30| quickfix | 快速修复相关命令,用来执行补丁相关操作,如补丁安装、补丁查询。 | 31| compile | 应用执行编译AOT命令。 | 32| copy-ap | 把应用的ap文件拷贝到/data/local/pgo目录下,供shell用户读取文件。 | 33| dump-dependencies | 查询应用依赖的模块信息。 | 34| dump-shared | 查询应用间HSP应用信息。 | 35| dump-overlay | 打印overlay应用的overlayModuleInfo。 | 36| dump-target-overlay | 打印目标应用的所有关联overlay应用的overlayModuleInfo。 | 37 38 39#### 帮助命令 40```bash 41bm help 42``` 43 44 **表2** help命令列表 45 46| 命令 | 描述 | 47| ------- | ---------- | 48| bm help | 显示bm工具的能够支持的命令信息。 | 49 50示例: 51 52 53```bash 54# 显示帮助信息 55bm help 56``` 57 58 59#### 安装命令 60 61```bash 62bm install [-h] [-p filePath] [-u userId] [-r] [-w waitingTime] [-s hspDirPath] 63``` 64安装命令可以组合,下面列出部分命令。 65 66 67 **表3** 安装命令列表 68 69| 命令 | 描述 | 70| ----------------------------------- | -------------------------- | 71| bm install -h | 显示install支持的命令信息。-h为非必选字段。 | 72| bm install -p \<filePath\> | 安装应用,支持指定路径和多个hap、hsp同时安装。安装应用时,-p为必选字段。 | 73| bm install -p \<filePath\> -u \<userId\> |给指定用户安装一个应用。-u非必选字段,默认为当前活跃用户。 | 74| bm install -p \<filePath\> -r | 覆盖安装一个应用,-r为非必选字段,默认支持覆盖安装。 | 75| bm install -p \<filePath\> -r -u \<userId\> | 给指定用户覆盖安装一个应用。 | 76| bm install -p \<filePath\> -r -u \<userId\> -w \<waitingTime\> | 安装时指定bm工具等待时间,-w非必选字段,最小的等待时长为180s,最大的等待时长为600s,默认缺省为5s。 | 77| bm install -s \<hspDirPath\> | 安装应用间共享库, 每个路径目录下只能存在一个同包名的HSP。-s为安装应用间HSP时为必选字段,其他场景为可选字段。 | 78| bm install -p \<filePath\> -s \<hspDirPath\> | 同时安装使用方应用和其依赖的应用间共享库。 | 79 80 81 82示例: 83```bash 84# 安装一个hap 85bm install -p /data/app/ohos.app.hap 86# 覆盖安装一个hap 87bm install -p /data/app/ohos.app.hap -r 88# 安装一个应用间共享库 89bm install -s xxx.hsp 90# 同时安装多个应用间共享库 91bm install -s xxx.hsp yyy.hsp 92# 同时安装使用方应用和其依赖的应用间共享库 93bm install -p aaa.hap -s xxx.hsp yyy.hsp 94``` 95 96#### 卸载命令 97 98```bash 99bm uninstall [-h] [-n bundleName] [-m moduleName] [-u userId] [-k] [-s] [-v versionCode] 100``` 101 102命令可以组合,下面列出部分命令。 103 104 105 **表4** 卸载命令列表 106 107| 命令 | 描述 | 108| ----------------------------- | ------------------------ | 109| bm uninstall -h | 显示uninstall支持的命令信息。-h为非必选字段。 | 110| bm uninstall -n \<bundleName\> | 通过指定包名卸载应用。-n为必选字段。 | 111| bm uninstall -n \<bundleName\> -u \<userId\>| 通过指定包名和用户卸载应用。-u非必选字段,默认为当前活跃用户。 | 112| bm uninstall -n \<bundleName\> -u \<userId\> -k| 通过指定包名和用户以保留用户数据方式卸载应用。-k为非必选字段。 | 113| bm uninstall -n \<bundleName\> -m \<moduleName\> | 通过指定包名卸载应用的一个模块。-m为非必选字段。 | 114| bm uninstall -n \<bundleName\> -s | 卸载指定的shared bundle。-s为非必选字段,卸载共享库应用时为必选字段。 | 115| bm uninstall -n \<bundleName\> -s -v \<versionCode\> | 卸载指定的shared bundle的指定版本。-v为非必选字段。 | 116 117示例: 118 119```bash 120# 卸载一个应用 121bm uninstall -n com.ohos.app 122# 卸载应用的一个模块 123bm uninstall -n com.ohos.app -m entry 124# 卸载一个shared bundle 125bm uninstall -n com.ohos.example -s 126# 卸载一个shared bundle的指定版本 127bm uninstall -n com.ohos.example -s -v 100001 128# 卸载一个应用,并保留用户数据 129bm uninstall -n com.ohos.app -k 130``` 131 132 133#### 查询应用信息命令 134 135```bash 136bm dump [-h] [-a] [-n bundleName] [-s shortcutInfo] [-u userId] [-d deviceId] 137``` 138命令可以组合,下面列出部分命令。 139 140 141 **表5** 查询命令列表 142 143| 命令 | 描述 | 144| ---------- | -------------------------- | 145| bm dump -h | 显示dump支持的命令信息。-h为非必选字段。 | 146| bm dump -a | 查询系统已经安装的所有应用包名。-a为非必选字段。 | 147| bm dump -n \<bundleName\> | 查询指定包名的详细信息。-n为非必选字段。 | 148| bm dump -n \<bundleName\> -s | 查询指定包名下的快捷方式信息。-s为非必选字段。 | 149| bm dump -n \<bundleName\> -d \<deviceId\> | 跨设备查询包信息。-d为非必选字段。 | 150| bm dump -n \<bundleName\> -u \<userId\> | 查询指定用户下指定包名的详细信息。-u为非必选字段,默认为所有用户。 | 151 152 153示例: 154 155```bash 156# 显示所有已安装的Bundle名称 157bm dump -a 158# 查询该应用的详细信息 159bm dump -n com.ohos.app -u 100 160# 查询该应用的快捷方式信息 161bm dump -s -n com.ohos.app -u 100 162# 查询跨设备应用信息 163bm dump -n com.ohos.app -d xxxxx 164``` 165 166#### 清理命令 167 168```bash 169bm clean [-h] [-c] [-n bundleName] [-d] [-u userId] [-i appIndex] 170``` 171 172 **表6** 清理命令列表 173| 命令 | 描述 | 174| ---------- | -------------------------- | 175| bm clean -h | 显示clean支持的命令信息。-h为非必选字段。 | 176| bm clean -n \<bundleName\> -c | 清除指定包名的缓存数据。-n为必选字段,-c为非必选字段。 | 177| bm clean -n \<bundleName\> -d | 清除指定包名的数据目录。-d为非必选字段。 | 178| bm clean -n \<bundleName\> -c -u \<userId\> | 清除指定用户下包名的缓存数据。-u为非必选字段,默认为当前活跃用户。 | 179| bm clean -n \<bundleName\> -d -u \<userId\> | 清除指定用户下包名的数据目录。 | 180| bm clean -n \<bundleName\> -d -u \<userId\> -i \<appIndex\> | 清除指定用户下分身应用的数据目录。-i为非必选字段,默认为0。 | 181 182示例: 183 184```bash 185# 清理该应用下的缓存数据 186bm clean -c -n com.ohos.app -u 100 187# 清理该应用下的用户数据 188bm clean -d -n com.ohos.app -u 100 189// 执行结果 190clean bundle data files successfully. 191``` 192 193 194#### 使能命令 195 196```bash 197bm enable [-h] [-n bundleName] [-a abilityName] [-u userId] 198``` 199 200 201 **表7** 使能命令列表 202 203| 命令 | 描述 | 204| ---------- | -------------------------- | 205| bm enable -h | 显示enable支持的命令信息。-h为非必选字段。 | 206| bm enable -n \<bundleName\> | 使能指定包名的应用。-n为必选字段。 | 207| bm enable -n \<bundleName\> -a \<abilityName\> | 使能指定包名下的元能力模块。-a为非必选字段。 | 208| bm enable -n \<bundleName\> -u \<userId\>| 使能指定用户和包名的应用。-u为非必选字段,默认为当前活跃用户。 | 209 210 211示例: 212 213```bash 214# 使能该应用 215bm enable -n com.ohos.app -a com.ohos.app.EntryAbility -u 100 216// 执行结果 217enable bundle successfully. 218``` 219 220 221#### 禁用命令 222 223```bash 224bm disable [-h] [-n bundleName] [-a abilityName] [-u userId] 225``` 226 227 228 **表8** 禁用命令列表 229 230| 命令 | 描述 | 231| ---------- | -------------------------- | 232| bm disable -h | 显示disable支持的命令信息。-h为非必选字段。 | 233| bm disable -n \<bundleName\> | 禁用指定包名的应用。-n为必选字段。 | 234| bm disable -n \<bundleName\> -a \<abilityName\> | 禁用指定包名下的元能力模块。-a为非必选字段。 | 235| bm disable -n \<bundleName\> -u \<userId\>| 禁用指定用户和包名下的应用。-u为非必选字段,默认为当前活跃用户。 | 236 237 238示例: 239 240```bash 241# 禁用该应用 242bm disable -n com.ohos.app -a com.ohos.app.EntryAbility -u 100 243// 执行结果 244disable bundle successfully. 245``` 246 247 248#### 获取udid命令 249 250```bash 251bm get [-h] [-u] 252``` 253 254 **表9** 获取udid命令列表 255 256| 命令 | 描述 | 257| ---------- | -------------------------- | 258| bm get -h | 显示get支持的命令信息。-h为非必选字段。 | 259| bm get -u | 获取设备的udid。-u为必选字段。 | 260 261 262示例: 263 264```bash 265# 获取设备的udid 266bm get -u 267// 执行结果 268udid of current device is : 26923CADE0C 270``` 271 272 273#### 快速修复命令 274 275```bash 276bm quickfix [-h] [-a -f filePath [-t targetPath] [-d]] [-q -b bundleName] [-r -b bundleName] 277``` 278 279注:hqf文件制作方式可参考[HQF打包指令](packing-tool.md#hqf打包指令)。 280 281 **表10** 快速修复命令列表 282| 命令 | 描述 | 283| ---------- | -------------------------- | 284| bm quickfix -h | 显示quickfix支持的命令信息。-h为非必选字段。 | 285| bm quickfix -a -f \<filePath\> | 执行补丁安装命令。-a非必选字段,指定后,-f为必选字段,未指定-a,则-f为非必选字段。 | 286| bm quickfix -q -b \<bundleName\> | 根据包名查询补丁包信息。-q为非必选字段,指定后,-b为必选字段,未指定-q,则-b为非必选字段。 | 287| bm quickfix -a -f \<filePath\> -d | 选择debug模式执行补丁安装命令。-d为非必选字段。 | 288| bm quickfix -a -f \<filePath\> -t \<target-path\> | 指定补丁安装目录,且不使能。-t为非必选字段。 | 289| bm quickfix -r -b \<bundleName\> | 根据包名卸载未使能的补丁。-r为非必选字段,指定后,-b为必选字段,未指定-r,则-b为非必选字段。 | 290 291 292示例: 293 294```bash 295# 根据包名查询补丁包信息 296bm quickfix -q -b com.ohos.app 297// 执行结果 298// Information as follows: 299// ApplicationQuickFixInfo: 300// bundle name: com.ohos.app 301// bundle version code: xxx 302// bundle version name: xxx 303// patch version code: x 304// patch version name: 305// cpu abi: 306// native library path: 307// type: 308# 快速修复补丁安装 309bm quickfix -a -f /data/app/ 310// 执行结果 311apply quickfix succeed. 312# 快速修复补丁卸载 313bm quickfix -r -b com.ohos.app 314// 执行结果 315delete quick fix successfully 316``` 317 318#### 共享库查询命令 319 320```bash 321bm dump-shared [-h] [-a] [-n bundleName] [-m moduleName] 322``` 323 324 **表11** 共享库查询命令列表 325 326| 命令 | 描述 | 327| ------------------------------------------------ | -------------------------------------- | 328| bm dump-shared -h | 显示dump-shared支持的命令信息。-h为非必选字段。 | 329| bm dump-shared -a | 查询系统中已安装所有共享库。-a为非必选字段。 | 330| bm dump-shared -n \<bundleName\> | 查询指定共享库包名的详细信息。-n为非必选字段。 | 331| bm dump-shared -n \<bundleName\> -m \<moduleName\> | 查询指定共享库包名和模块名的详细信息。-m为非必选字段。 | 332 333 334示例: 335 336```bash 337# 显示所有已安装共享库包名 338bm dump-shared -a 339# 显示该共享库的详细信息 340bm dump-shared -n com.ohos.lib 341``` 342 343#### 共享库依赖关系查询命令 344 345显示指定应用和指定模块依赖的共享库信息 346```bash 347bm dump-dependencies [-h] [-n bundleName] [-m moduleName] 348``` 349 350 **表12** 共享库依赖关系查询命令列表 351| 命令 | 描述 | 352| ---------- | -------------------------- | 353| bm dump-dependencies -h | 显示bm dump-dependencies支持的命令信息。-h为非必选字段。 | 354| bm dump-dependencies -n \<bundleName\> | 查询指定应用依赖的共享库信息。-n为必选字段。 | 355| bm dump-dependencies -n \<bundleName\> -m \<moduleName\> | 查询指定应用指定模块依赖的共享库信息。-m为非必选字段。 | 356 357* 示例 358```Bash 359# 显示指定应用指定模块依赖的共享库信息 360bm dump-dependencies -n com.ohos.app -m entry 361``` 362 363 364#### 应用执行编译AOT命令 365 366应用执行编译AOT命令 367```bash 368bm compile [-h] [-m mode] [-r bundleName] 369``` 370 **表13** compile命令列表 371 372| 命令 | 描述 | 373| -------- | -------- | 374| bm compile -h| 显示compile支持的命令信息。-h为非必选字段。 | 375| bm compile -m \<mode-name\>| 根据包名编译应用。-m为非必选字段,可选值为partial或者full。 | 376| bm compile -m \<mode-name\> -a| 编译所有应用。-a为非必选字段。 | 377| bm compile -r -a| 移除所有编译应用的结果。-r为非必选字段。 | 378| bm compile -r \<bundleName\>| 移除应用的结果。 | 379 380示例: 381 382```bash 383# 根据包名编译应用 384bm compile -m partial com.example.myapplication 385``` 386 387#### 拷贝ap文件命令 388 389拷贝ap文件到指定应用的/data/local/pgo路径 390 391```bash 392bm copy-ap [-h] [-a] [-n bundleName] 393``` 394 395**表14** copy-ap命令列表 396 397| 命令 | 描述 | 398| -------- | -------- | 399| bm copy-ap -h| 显示copy-ap支持的命令信息。-h为非必选字段。 | 400| bm copy-ap -a| 拷贝所有包相关ap文件。-a为非必选字段。 | 401| bm copy-ap -n \<bundleName\>| 根据包名拷贝对应包相关的ap文件。-n为非必选字段。 | 402 403示例: 404 405```bash 406# 根据包名移动对应包相关的ap文件 407bm copy-ap -n com.example.myapplication 408``` 409 410#### 查询overlay应用信息命令 411 412打印overlay应用的overlayModuleInfo 413```bash 414bm dump-overlay [-h] [-b bundleName] [-m moduleName] [-u userId] [-t targetModuleName] 415``` 416 417**表15** dump-overlay命令列表 418| 命令 | 描述 | 419| -------- | -------- | 420| bm dump-overlay -h| 显示dump-overlay支持的命令信息。-h为非必选字段。 | 421| bm dump-overlay -b \<bundleName\>| 获取指定应用的所有OverlayModuleInfo信息。-b为必选字段。 | 422| bm dump-overlay -b \<bundleName\> -m \<moduleName\>| 根据指定的包名和module名查询OverlayModuleInfo信息。-m为非必选字段。 | 423| bm dump-overlay -b \<bundleName\> -t \<target-moduleName\>| 根据指定的包名和目标module名查询OverlayModuleInfo信息。-t为非必选字段。 | 424| bm dump-overlay -b \<bundleName\> -t \<target-moduleName\> -u \<userId\>| 根据指定的包名\目标module名和用户查询OverlayModuleInfo信息。-u为非必选字段,默认为当前活跃用户。 | 425 426示例: 427 428```bash 429# 根据包名来获取overlay应用com.ohos.app中的所有OverlayModuleInfo信息 430bm dump-overlay -b com.ohos.app 431 432# 根据包名和module来获取overlay应用com.ohos.app中overlay module为entry的所有OverlayModuleInfo信息 433bm dump-overlay -b com.ohos.app -m entry 434 435# 根据包名和module来获取overlay应用com.ohos.app中目标module为feature的所有OverlayModuleInfo信息 436bm dump-overlay -b com.ohos.app -m feature 437``` 438 439#### 查询应用的overlay相关信息命令 440 441查询目标应用的所有关联overlay应用的overlayModuleInfo信息。 442 443```bash 444bm dump-target-overlay [-h] [-b bundleName] [-m moduleName] [-u userId] 445``` 446 447**表16** dump-overlay命令列表 448| 命令 | 描述 | 449| -------- | -------- | 450| bm dump-target-overlay -h| 显示dump-target-overlay支持的命令信息。-h为非必选字段。 | 451| bm dump-target-overlay -b \<bundleName\> | 获取指定目标应用的所有OverlayBundleInfo信息。-b为必选字段。 | 452| bm dump-target-overlay -b \<bundleName\> -m \<moduleName\> | 根据指定的目标应用的包名和module名查询OverlayModuleInfo信息。-m为非必选字段。 | 453| bm dump-target-overlay -b \<bundleName\> -m \<moduleName\> -u \<userId\> | 根据指定的目标应用的包名、module名和用户查询OverlayModuleInfo信息。-u为非必选字段,默认为当前活跃用户。 | 454 455示例: 456 457```bash 458# 根据包名来获取目标应用com.ohos.app中的所有关联的OverlayBundleInfo信息 459bm dump-target-overlay-b com.ohos.app 460 461# 根据包名和module来获取目标应用com.ohos.app中目标module为entry的所有关联的OverlayModuleInfo信息 462bm dump-target-overlay -b com.ohos.app -m entry 463``` 464## 相关仓 465 466[bundlemanager_bundle_framework](https://gitee.com/openharmony/bundlemanager_bundle_framework) 467