• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# bm工具
2
3
4Bundle Manager(包管理工具,简称bm)是实现应用安装、卸载、更新、查询等功能的工具,bm为开发者提供基本的应用安装包的调试能力,例如:安装应用,卸载应用,查询安装包信息等。
5
6> **说明:**
7>
8> 在使用本工具前,开发者需要先获取[hdc工具](../../device-dev/subsystems/subsys-toolchain-hdc-guide.md),执行hdc shell。
9
10
11  **表1** bm工具命令列表
12
13| 命令 | 描述 |
14| -------- | -------- |
15| help | 帮助命令,显示bm支持的命令信息 |
16| install | 安装命令,用来安装应用 |
17| uninstall | 卸载命令,用来卸载应用 |
18| dump | 查询命令,用来查询应用的相关信息 |
19| clean | 清理命令,用来清理应用的缓存和数据 |
20| enable | 使能命令,用来使能应用,使能后应用可以继续使用 |
21| disable | 禁用命令,用来禁用应用,禁用后应用无法使用 |
22| get | 获取udid命令,用来获取设备的udid |
23| quickfix | 快速修复相关命令,用来执行补丁相关操作,如补丁安装、补丁查询 |
24
25
26## 帮助命令
27
28  **表2** help命令列表
29
30| 命令 | 描述 |
31| -------- | -------- |
32| bm help | 显示bm工具的能够支持的命令信息 |
33
34示例:
35
36
37```bash
38# 显示帮助信息
39bm help
40```
41
42
43## 安装命令
44
45```bash
46bm install [-h] [-p path] [-u userId] [-r] [-w waitting-time]
47```
48
49
50  **表3** 安装命令列表
51
52| 命令 | 是否必选 | 描述 |
53| -------- | -------- | -------- |
54| -h | 否,默认输出帮助信息 | 显示install支持的命令信息 |
55| -p | 是 | 安装HAP路径,支持指定路径和多个HAP同时安装 |
56| -u | 否,默认安装到当前所有用户上 | 给指定用户安装一个HAP |
57| -r | 否,默认值为覆盖安装 | 覆盖安装一个HAP |
58| -w | 否,默认等待5s | 安装HAP时指定bm工具等待时间,最小的等待时长为5s,最大的等待时长为600s, 默认缺省为5s |
59
60
61示例:
62
63```bash
64bm install -p /data/app/ohosapp.hap -u 100 -w 5s -r
65// 执行结果
66install bundle successfully.
67```
68
69
70## 卸载命令
71
72```bash
73bm uninstall [-h help] [-n bundleName] [-m moduleName] [-u userId] [-k]
74```
75
76
77  **表4** 卸载命令列表
78
79| 命令 | 是否必选 | 描述 |
80| -------- | -------- | -------- |
81| -h | 否,默认输出帮助信息 | 显示uninstall支持的命令信息 |
82| -n | 是 | 指定Bundle名称卸载应用 |
83| -m | 否,默认卸载所有模块 | 指定卸载应用的一个模块 |
84| -u | 否,默认卸载当前所有用户下该应用 | 指定用户卸载应用 |
85| -k | 否,默认卸载应用时不保存应用数据 | 卸载应用时保存应用数据 |
86| -v | 否,默认卸载同包名的所有共享包 | 指示共享包的版本号 |
87
88
89示例:
90
91```bash
92bm uninstall -n com.ohos.app -m com.ohos.app.EntryAbility -u 100 -k
93// 执行结果
94uninstall bundle successfully.
95```
96
97
98## 查询命令
99
100```bash
101bm dump [-h help] [-a] [-n bundleName] [-s shortcutInfo] [-u userId] [-d deviceId]
102```
103
104
105注:-u未指定情况下,默认为所有用户。
106
107
108  **表5** 查询命令列表
109
110| 命令 | 是否必选 | 描述 |
111| -------- | -------- | -------- |
112| -h | 否,默认输出帮助信息 | 显示dump支持的命令信息 |
113| -a | 是 | 查询系统已经安装的所有应用 |
114| -n | 是 | 查询指定Bundle名称的详细信息 |
115| -s | 是 | 查询指定Bundle名称下的快捷方式信息 |
116| -d | 否,默认查询当前设备 | 查询指定设备中的包信息 |
117| -u | 否,默认查询当前设备上的所有用户 | 查询指定用户下指定Bundle名称的详细信息 |
118
119
120示例:
121
122```bash
123# 显示所有已安装的Bundle名称
124bm dump -a
125# 查询该应用的详细信息
126bm dump -n com.ohos.app -u 100
127# 查询该应用的快捷方式信息
128bm dump -s com.ohos.app -u 100
129# 查询跨设备应用信息
130bm dump -n com.ohos.app -d xxxxx
131```
132
133
134## 清理命令
135
136```bash
137bm clean [-h] [-c] [-n  bundleName] [-d] [-u userId]
138```
139
140
141注:-u未指定情况下,默认为当前活跃用户。
142
143
144  **表6** 清理命令列表
145
146| 命令 | 描述 |
147| -------- | -------- |
148| -h | 显示clean支持的命令信息 |
149| -c -n | 清除指定Bundle名称的缓存数据 |
150| -d -n | 清除指定Bundle名称的数据目录 |
151| -u | 清除指定用户下Bundle名称的缓存数据 |
152
153
154示例:
155
156```bash
157# 清理该应用下的缓存数据
158bm clean -c -n com.ohos.app -u 100
159// 执行结果
160clean bundle cache files successfully.
161# 清理该应用下的用户数据
162bm clean -d -n com.ohos.app -u 100
163// 执行结果
164clean bundle data files successfully.
165```
166
167
168## 使能命令
169
170```bash
171bm enable [-h] [-n bundleName] [-a abilityName] [-u userId]
172```
173
174
175注:-u未指定情况下,默认为当前活跃用户。
176
177
178  **表7** 使能命令列表
179
180| 命令 | 描述 |
181| -------- | -------- |
182| -h | 显示enable支持的命令信息 |
183| -n | 使能指定Bundle名称的应用 |
184| -a | 使能指定Bundle名称下的元能力模块 |
185| -u | 使能指定用户和Bundle名称的应用 |
186
187
188示例:
189
190```bash
191# 使能该应用
192bm enable -n com.ohos.app -a com.ohos.app.EntryAbility -u 100
193// 执行结果
194enable bundle successfully.
195```
196
197
198## 禁用命令
199
200```bash
201bm disable [-h] [-n bundleName] [-a abilityName] [-u userId]
202```
203
204
205注:-u未指定情况下,默认为当前活跃用户。
206
207
208  **表8** 禁用命令列表
209
210| 命令 | 描述 |
211| -------- | -------- |
212| -h | 显示disable支持的命令信息 |
213| -n | 禁用指定Bundle名称的应用 |
214| -a | 禁用指定Bundle名称下的元能力模块 |
215| -u | 禁用指定用户和Bundle名称下的应用 |
216
217示例:
218
219```bash
220# 禁用该应用
221bm disable -n com.ohos.app -a com.ohos.app.EntryAbility -u 100
222// 执行结果
223disable bundle successfully.
224```
225
226
227## 获取udid
228
229```bash
230bm get [-h] [-u]
231```
232
233
234  **表9** 获取udid命令列表
235
236| 命令 | 描述 |
237| -------- | -------- |
238| -h | 显示get支持的命令信息 |
239| -u | 获取设备的udid |
240
241
242示例:
243
244```bash
245# 获取设备的udid
246bm get -u
247// 执行结果
248udid of current device is :
24923CADE0C
250```
251
252
253## 快速修复
254
255```bash
256bm quickfix [-h] [-a -f filePath] [-q -b bundleName]
257```
258
259
260  **表10** 快速修复命令列表
261
262| 命令 | 描述 |
263| -------- | -------- |
264| -h | 显示quickfix支持的命令信息 |
265| -a -f | 执行快速修复补丁安装命令,file-path对应hqf文件,支持传递1个或多个hqf文件,或传递hqf文件所在的目录。 |
266| -q -b | 根据包名查询补丁信息,bundle-name对应包名。 |
267
268
269示例:
270
271```bash
272# 根据包名查询补丁包信息
273bm quickfix -q -b com.ohos.app
274// 执行结果
275// Information as follows:
276// ApplicationQuickFixInfo:
277//  bundle name: com.ohos.app
278//  bundle version code: xxx
279//  bundle version name: xxx
280//  patch version code: x
281//  patch version name:
282//  cpu abi:
283//  native library path:
284//  type:
285# 快速修复补丁安装
286bm quickfix -a -f /data/app/
287//执行结果
288apply quickfix succeed.
289```
290
291## 共享库查询命令
292
293```bash
294bm dump-shared [-h help] [-a] [-n bundleName] [-m moudleName]
295```
296
297  **表11** 共享库查询命令列表
298
299| 命令                                             | 描述                                   |
300| ------------------------------------------------ | -------------------------------------- |
301| bm dump-shared -h                                | 显示dump-shared支持的命令信息          |
302| bm dump-shared -a                                | 查询系统中已安装所有共享库             |
303| bm dump-shared -n                                | 查询指定共享库包名的详细信息           |
304| bm dump-dependencies -h                          | 显示bm dump-dependencies支持的命令信息 |
305| bm dump-dependencies -n bundleName -m moudleName | 查询指定应用指定模块依赖的共享库信息   |
306
307示例:
308
309```bash
310# 显示所有已安装共享库包名
311bm dump-shared -a
312# 显示该共享库的详细信息
313bm dump-shared -n com.ohos.lib
314# 显示指定应用指定模块依赖的共享库信息
315bm dump-dependencies -n com.ohos.app -m entry
316```
317
318## 常见问题
319
320### 安装HAP时提示“code:9568320 error: no signature file”
321**问题现象**
322
323对HAP包签名后,在设备中运行HAP时提示“failed to install bundle. error: install no signature info”或“failed to install bundle. error: no signature file”。
324
325![示例图](figures/zh-cn_image_0000001389116960.png)
326
327**解决措施**
328
329该问题是由于签名工具与设备运行的镜像版本不匹配导致,需要开发者手动更新设备的镜像,可参考如下步骤进行更新。
3301. 获取[OpenHarmony 最新镜像文件](https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/Readme.md),下载对应开发板的镜像文件。
3312. 将下载的镜像文件烧录到开发板中,关于各开发板的烧录,可以使用DevEco Device Tool工具进行烧录,具体请参考[DevEco Device Tool使用指南](../../device-dev/quick-start/quickstart-ide-env-win.md)。
3323. 重新运行应用/服务。
333
334### 安装HAP时提示“code:9568347 error: install parse native so failed”错误
335**问题现象**
336
337在启动调试或运行C++应用/服务时,安装HAP出现错误,提示“error: install parse native so failed”错误信息。
338
339**解决措施**
340
341该问题可能是由于设备支持的Abi类型与C++工程中配置的Abi类型不匹配,请通过如下步骤进行解决。
342
3431. 将设备与DevEco Studio进行连接。
3442. 打开命令行工具,并进入SDK安装目录下的toolchains\{版本号}目录下。
345    ```
346    若不清楚OpenHarmony SDK安装目录,可单击File > Settings > SDK界面查看安装路径。
347    ```
3483. 执行如下命令,查询设备支持的Abi列表,返回结果为default/armeabi-v7a/armeabi/arm64-v8a/x86/x86_64中的一个或多个Abi类型。
349    ```
350    hdc shell
351    param get const.product.cpu.abilist
352    ```
3534. 根据查询返回结果,检查[模块级build-profile.json5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V1/build_config-0000001052902431-V1#section1940185593114)文件中的“abiFilters”参数中的配置,规则如下:
354    * 若返回结果为default,请执行如下命令,查询是否存在lib64文件夹。
355      ```
356      cd /system/
357      ls
358      ```
359      ![示例图](figures/zh-cn_image_0000001609001262.png)
360      * 存在lib64文件夹:则“abiFilters”参数中需要包含arm64-v8a类型。
361      * 不存在lib64文件夹:则“abiFilters”参数中需要至少包含armeabi/armeabi-v7a中的一个类型。
362    * 若返回结果为armeabi-v7a/armeabi/arm64-v8a/x86/x86_64中的一个或多个,需要在“abiFilters”参数中至少包含返回结果中的一个Abi类型。
363
364### 安装HAP时提示“code:9568344 error: install parse profile prop check error”错误
365**问题现象**
366
367在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install parse profile prop check error”错误信息。
368
369![示例图](figures/zh-cn_image_0000001585361412.png)
370
371**解决措施**
372
373该问题可能是由于应用使用了应用特权,但应用的签名文件发生变化后未将新的签名指纹重新配置到设备的特权管控白名单文件install_list_capability.json中,请通过如下步骤进行解决。
374
3751. 获取新的签名指纹。
376
377    a. 在项目级build-profile.json5文件中,signingConfigs字段内的profile的值即为签名文件的存储路径。
378
379    b. 打开该签名文件(后缀为.p7b),打开后在文件内搜索“development-certificate”,将“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”以及中间的信息拷贝到新的文本中,注意换行并去掉换行符,保存为一个新的.cer文件,如命名为xxx.cer380
381    新的.cer文件格式如下图(仅作为格式示意,内容以实际为准):
382
383    ![示例图](figures/zh-cn_image_0000001585521364.png)
384
385
386
387    c. 使用keytool工具(在DevEco Studio安装目录下的jbr/bin文件夹内),执行如下命令通过.cer文件获取证书指纹的SHA256值。
388      ```
389      keytool -printcert -file xxx.cer
390      ```
391    d. 将证书指纹中SHA256的内容去掉冒号,即为最终要获得的签名指纹。
392
393    如SHA256值为下图(仅作为格式示意,内容以实际为准):
394    ![示例图](figures/zh-cn_image_0000001635921233.png)
395
396    去掉冒号后的签名指纹为:5753DDBC1A8EF88A62058A9FC4B6AFAFC1C5D8D1A1B86FB3532739B625F8F3DB
397
3982. 获取设备的特权管控白名单文件install_list_capability.json399
400    a. 连接设备。
401
402    b. 执行如下命令查看设备的特权管控白名单文件install_list_capability.json403    ```
404    find /system -name install_list_capability.json
405    ```
406    HarmonyOS设备上install_list_capability.json的位置通常为以下几种,选取其中一个即可:
407    ```
408    /system/variant/phone/base/etc/app/install_list_capability.json
409    /system/etc/app/install_list_capability.json
410    ```
411    OpenHarmony设备上install_list_capability.json的位置通常为:
412    ```
413    /system/etc/app/install_list_capability.json
414    ```
415    c. 执行如下命令拉取install_list_capability.json416    ```
417    hdc shell mount -o rw,remount /
418    hdc file recv /system/variant/phone/base/etc/app/install_list_capability.json
419    ```
420
4213. 将步骤1获取到的签名指纹配置到install_list_capability.json文件的app_signature中,注意要配置到对应的bundleName下。
422![示例图](figures/zh-cn_image_0000001635641893.png)
4234. 将修改后的install_list_capability.json文件重新推到设备上,并重启设备。
424
425    ```
426    hdc shell mount -o rw,remount /
427    hdc file send install_list_capability.json /system/variant/phone/base/etc/app/install_list_capability.json
428    hdc shell chmod 777 /system/variant/phone/base/etc/app/install_list_capability.json
429    hdc shell reboot
430    ```
4315. 设备重启后,重新安装新的应用即可。
432
433### 安装HAP时提示“code:9568305 error: dependent module does not exist”错误
434**问题现象**
435
436在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: dependent module does not exist”错误信息。
437
438![示例图](figures/zh-cn_image_0000001560338986.png)
439
440**解决措施**
441
442该问题是由于运行/调试的应用依赖的动态共享包(SharedLibrary)模块未安装导致安装报错,您可以通过如下方式进行解决:
443
444* 先安装依赖的动态共享包(SharedLibrary)模块,再在应用运行配置页勾选Keep Application Data,点击OK保存配置,再运行/调试。
445![示例图](figures/zh-cn_image_0000001560201786.png)
446
447* 在运行配置页,选择Deploy Multi Hap标签页,勾选Deploy Multi Hap Packages,选择依赖的模块,点击OK保存配置,再进行运行/调试。
448![示例图](figures/zh-cn_image_0000001610761941.png)
449
450### 安装HAP时提示“code:9568259 error: install parse profile missing prop”
451**问题现象**
452
453在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install parse profile missing prop”错误信息。
454
455![示例图](figures/zh-cn_image_0000001559130596.png)
456
457**解决措施**
458
459出现该问题的原因是配置文件app.json5module.json5中必填字段缺失。
460
461* 方法1:请参考[app.json5配置文件](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V1/app-configuration-file-0000001579865930-V1)和[module.json5配置文件](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V1/module-configuration-file-0000001580185138-V1)查看并补充必填字段。
462* 方法2:通过hilog日志判断缺失字段。
463
464    开启落盘命令:
465    ```
466    hilog -w start
467    ```
468
469    落盘位置:/data/log/hilog
470
471    打开日志查看“profile prop %{public}s is mission”。如“profile prop icon is mission”表示“icon”字段缺失。
472
473### 安装HAP时提示“code:9568258 error: install releaseType target not same”
474**问题现象**
475
476在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install releaseType target not same”错误信息。
477
478![示例图](figures/zh-cn_image_0000001609976041.png)
479
480**解决措施**
481
482出现该问题的原因是设备上已安装的旧HAP和现在要安装的新HAP所使用的SDK中的releaseType值不一样。请先卸载设备上已安装的HAP,再安装新的HAP。
483
484### 安装HAP时提示“code:9568322 error: signature verification failed due to not trusted app source”
485**问题现象**
486
487在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: signature verification failed due to not trusted app source”错误信息。
488
489![示例图](figures/zh-cn_image_0000001585042216.png)
490
491**解决措施**
492
493该问题是由于签名中未包含该调试设备的UDID,请通过如下步骤进行解决。
494
495* 使用[自动签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V1/signing-0000001587684945-V1#section18815157237)。在连接设备后,重新为应用进行签名。
496* 如果使用的是手动签名,对于HarmonyOS应用,请在AppGallery Connect中先将该调试设备[注册调试设备](https://developer.huawei.com/consumer/cn/doc/distribution/app/agc-help-harmonyos-debugapp-manual-0000001177608893#section7732152932911)并在[申请Profile文件](https://developer.huawei.com/consumer/cn/doc/distribution/app/agc-help-harmonyos-debugapp-manual-0000001177608893?ha_linker=eyJ0cyI6MTY4NzkzNDEzOTk1OSwiaWQiOiJhZjdhYzI0MDlkMGQ5MzQ1MzFlNDE3NDQ5MmY4MjJkMyJ9#section1774717395304)选择设备时添加该调试设备,重新申请Profile证书;对于OpenHarmony应用,请参考[OpenHarmony应用手动签名](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/hapsigntool-guidelines.md),在UnsgnedDebugProfileTemplate.json文件中添加该调试设备的[UDID](https://developer.huawei.com/consumer/cn/doc/distribution/app/agc-help-harmonyos-debugapp-manual-0000001177608893#section1835412326017)497
498### 安装HAP时提示“code:9568289 error: install failed due to grant request permissions failed”
499**问题现象**
500
501在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install failed due to grant request permissions failed”错误信息。
502
503![示例图](figures/zh-cn_image_0000001585201996.png)
504
505**解决措施**
506
507该问题是由于默认应用等级为normal,只能使用normal等级的权限,如果使用了system_basic或system_core等级的权限,将导致报错。
508
509对于HarmonyOS应用,请参考[使用ACL签名配置指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V1/signing-0000001587684945-V1#section157591551175916)完成ACL提权。
510
511### 安装HAP时提示“code:9568297 error: install failed due to older sdk version in the device”
512**问题现象**
513
514在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install failed due to older sdk version in the device”错误信息。
515
516![示例图](figures/zh-cn_image_0000001635521909.png)
517
518**解决措施**
519
520该问题是由于编译打包所使用的SDK版本与设备镜像版本不匹配。不匹配的场景包括:
521
522* 场景一:设备上的镜像版本低于编译打包的SDK版本,请更新设备镜像版本。查询设备镜像版本命令:
523  ```
524  hdc shell param get const.ohos.apiversion
525  ```
526  如果镜像提供的api版本为10,且应用编译所使用的SDK版本也为10,仍出现该报错,可能是由于镜像版本较低,未兼容新版本SDK校验规则,请将镜像版本更新为最新版本。
527
528* 场景二:对于需要运行在OpenHarmony设备上的应用,请确认runtimeOS已改为OpenHarmony。
529
530### 安装HAP时提示“code:9568332 error: install sign info inconsistent”
531**问题现象**
532
533在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install sign info inconsistent”错误信息。
534
535![示例图](figures/zh-cn_image_0000001635761329.png)
536
537**解决措施**
538
539该问题是由于设备上已安装的应用与新安装的应用中签名不一致。如果在**Edit Configurations**中勾选了“Keep Application Data”(不卸载应用,覆盖安装),并且重新进行了签名,将导致该报错。
540
541请卸载设备上已安装的应用,或取消勾选“Keep Application Data”后,重新安装新的应用。
542
543### 安装HAP时提示“code:9568257 error: fail to verify pkcs7 file”
544**问题现象**
545
546在启动调试或者运行应用/服务时,安装HAP出现错误,提示”error: fail to verify pkcs7 file“错误信息。
547
548![示例图](figures/zh-cn_image_00000016359212344.png)
549
550**解决措施**
551
552出现该问题的原因是应用当前使用的签名不符合HarmonyOS应用签名的要求。通常是由于当前使用的是OpenHarmony应用的签名,需替换为HarmonyOS应用的签名。
553
554请在[为应用/服务签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V1/signing-0000001587684945-V1)时勾选”Support HarmonyOS“,完成HarmonyOS应用签名后再次启动调试或者运行应用。
555
556![示例图](figures/zh-cn_image_00000016359212311.png)