1# bm工具
2
3Bundle Manager(包管理工具,简称bm)是实现应用安装、卸载、更新、查询等功能的工具,bm为开发者提供基本的应用安装包的调试能力。
4
5## 环境要求
6
7在使用本工具前,开发者需要先获取<!--Del-->[<!--DelEnd-->hdc工具<!--Del-->](../../device-dev/subsystems/subsys-toolchain-hdc-guide.md)<!--DelEnd-->,执行hdc shell。
8
9
10## bm工具命令列表
11
12| 命令 | 描述 |
13| -------- | -------- |
14| help | 帮助命令,用于查询bm支持的命令信息。 |
15| install | 安装命令,用于安装应用。 |
16| uninstall | 卸载命令,用于卸载应用。 |
17| dump | 查询命令,用于查询应用的相关信息。 |
18| clean | 清理命令,用于清理应用的缓存和数据。此命令在root版本下可用,在user版本下打开开发者模式可用。其它情况不可用。|
19| <!--DelRow-->enable | 使能命令,用于使能应用,使能后应用可以继续使用。此命令在root版本下可用,在user版本下不可用。 |
20| <!--DelRow-->disable | 禁用命令,用于禁用应用,禁用后应用无法使用。此命令在root版本下可用,在user版本下不可用。 |
21| get | 获取udid命令,用于获取设备的udid。 |
22| quickfix | 快速修复相关命令,用于执行补丁相关操作,如补丁安装、补丁查询。 |
23| compile | 应用执行编译AOT命令。 |
24| copy-ap | 把应用的ap文件拷贝到/data/local/pgo目录下,供shell用户读取文件。 |
25| dump-dependencies | 查询应用依赖的模块信息。 |
26| dump-shared | 查询应用间HSP应用信息。 |
27| dump-overlay | 打印overlay应用的overlayModuleInfo。 |
28| dump-target-overlay | 打印目标应用的所有关联overlay应用的overlayModuleInfo。 |
29
30
31## 帮助命令(help)
32
33```bash
34# 显示帮助信息
35bm help
36```
37
38
39## 安装命令(install)
40
41```bash
42bm install [-h] [-p filePath] [-r] [-w waitingTime] [-s hspDirPath]
43```
44
45  **安装命令参数列表**
46
47
48| 参数 | 参数说明 |
49| -------- | -------- |
50| -h | 帮助信息。 |
51| -p | 必选参数,指定路径和多个HAP同时安装。 |
52| -r | 可选参数,覆盖安装一个HAP。默认值为覆盖安装。 |
53| -s | 根据场景判断,安装应用间HSP时为必选参数,其他场景为可选参数。安装应用间共享库, 每个路径目录下只能存在一个同包名的HSP。 |
54| -w | 可选参数,安装HAP时指定bm工具等待时间,最小的等待时长为5s,最大的等待时长为600s,&nbsp;默认缺省为5s。 |
55
56
57示例:
58```bash
59# 安装一个hap
60bm install -p /data/app/ohos.app.hap
61# 覆盖安装一个hap
62bm install -p /data/app/ohos.app.hap -r
63# 安装一个应用间共享库
64bm install -s xxx.hsp
65# 同时安装使用方应用和其依赖的应用间共享库
66bm install -p aaa.hap -s xxx.hsp yyy.hsp
67# 安装一个hap,等待时间为10s
68bm install -p /data/app/ohos.app.hap -w 10
69```
70
71## 卸载命令(uninstall)
72
73```bash
74bm uninstall [-h] [-n bundleName] [-m moduleName] [-k] [-s] [-v versionCode]
75```
76
77  **卸载命令参数列表**
78
79| 参数 | 参数说明 |
80| -------- | -------- |
81| -h | 帮助信息。 |
82| -n | 必选参数,指定Bundle名称卸载应用。|
83| -m | 可选参数,指定卸载应用的一个模块。默认卸载所有模块。 |
84| -k | 可选参数,卸载应用时保存应用数据。默认卸载应用时不保存应用数据。 |
85| -s | 根据场景判断,安装应用间HSP时必选参数,其他场景为可选参数。卸载指定的共享库。|
86| -v | 可选参数,指定共享包的版本号。默认卸载同包名的所有共享包。 |
87
88
89示例:
90
91```bash
92# 卸载一个应用
93bm uninstall -n com.ohos.app
94# 卸载应用的一个模块
95bm uninstall -n com.ohos.app -m com.ohos.app.EntryAbility
96# 卸载一个shared bundle
97bm uninstall -n com.ohos.example -s
98# 卸载一个shared bundle的指定版本
99bm uninstall -n com.ohos.example -s -v 100001
100# 卸载一个应用,并保留用户数据
101bm uninstall -n com.ohos.app -k
102```
103
104
105## 查询应用信息命令(dump)
106
107```bash
108bm dump [-h] [-a] [-n bundleName] [-s shortcutInfo] [-d deviceId]
109```
110
111  **查询命令参数列表**
112
113| 参数 | 参数说明 |
114| -------- | -------- |
115| -h | 帮助信息。 |
116| -a | 可选参数,查询系统已经安装的所有应用。 |
117| -n | 可选参数,查询指定Bundle名称的详细信息。 |
118| -s | 可选参数,查询指定Bundle名称下的快捷方式信息。 |
119| -d | 可选参数,查询指定设备中的包信息。默认查询当前设备。 |
120
121
122示例:
123
124```bash
125# 显示所有已安装的Bundle名称
126bm dump -a
127# 查询该应用的详细信息
128bm dump -n com.ohos.app
129# 查询该应用的快捷方式信息
130bm dump -s -n com.ohos.app
131# 查询跨设备应用信息
132bm dump -n com.ohos.app -d xxxxx
133```
134
135## 清理命令(clean)
136
137```bash
138bm clean [-h] [-c] [-n bundleName] [-d] [-i appIndex]
139```
140**清理命令参数列表**
141
142| 参数 | 参数说明 |
143| -------- | --------- |
144| -h | 帮助信息。 |
145| -c&nbsp;-n | -n为必选参数,-c为可选参数。清除指定Bundle名称的缓存数据。 |
146| -d&nbsp;-n | -n为必选参数,-d为可选参数。清除指定Bundle名称的数据目录。 |
147| -i | 可选参数,清除分身应用的数据目录。默认为0。|
148
149
150示例:
151
152```bash
153# 清理该应用下的缓存数据
154bm clean -c -n com.ohos.app
155# 清理该应用下的用户数据
156bm clean -d -n com.ohos.app
157// 执行结果
158clean bundle data files successfully.
159```
160
161<!--Del-->
162## 使能命令(enable)
163
164```bash
165bm enable [-h] [-n bundleName] [-a abilityName]
166```
167
168
169  **使能命令参数列表**
170
171| 参数 | 参数说明 |
172| -------- | -------- |
173| -h | 帮助信息。 |
174| -n | 必选参数,使能指定Bundle名称的应用。 |
175| -a | 可选参数,使能指定Bundle名称下的元能力模块。 |
176
177
178示例:
179
180```bash
181# 使能该应用
182bm enable -n com.ohos.app -a com.ohos.app.EntryAbility
183// 执行结果
184enable bundle successfully.
185```
186
187
188## 禁用命令(disable)
189
190```bash
191bm disable [-h] [-n bundleName] [-a abilityName]
192```
193
194
195  **禁用命令参数列表**
196
197| 参数 | 参数说明 |
198| -------- | -------- |
199| -h | 帮助信息。 |
200| -n | 必选参数,禁用指定Bundle名称的应用。 |
201| -a | 可选参数,禁用指定Bundle名称下的元能力模块。 |
202
203
204示例:
205
206```bash
207# 禁用该应用
208bm disable -n com.ohos.app -a com.ohos.app.EntryAbility
209// 执行结果
210disable bundle successfully.
211```
212<!--DelEnd-->
213
214
215## 获取udid命令(get)
216
217```bash
218bm get [-h] [-u]
219```
220
221  **获取udid命令参数列表**
222
223| 参数 | 参数说明 |
224| -------- | -------- |
225| -h |帮助信息。 |
226| -u | 必选参数,获取设备的udid。|
227
228
229示例:
230
231```bash
232# 获取设备的udid
233bm get -u
234// 执行结果
235udid of current device is :
23623CADE0C
237```
238
239
240## 快速修复命令(quickfix)
241
242```bash
243bm quickfix [-h] [-a -f filePath [-t targetPath] [-d]] [-q -b bundleName] [-r -b bundleName]
244```
245
246注:hqf文件制作方式可参考[HQF打包指令](packing-tool.md#hqf打包指令)。
247
248  **快速修复命令参数列表**
249|   参数  | 参数说明 |
250| -------- | -------- |
251| -h | 帮助信息。 |
252| -a&nbsp;-f | -a为可选参数,指定-a后,-f为必选参数。执行快速修复补丁安装命令,file-path对应hqf文件,支持传递1个或多个hqf文件,或传递hqf文件所在的目录。 |
253| -q&nbsp;-b | -q为可选参数,指定-q后,-b为必选参数,未指定-q。根据包名查询补丁信息。 |
254| -r&nbsp;-b | -r为可选参数,指定-r后,-b为必选参数。根据包名卸载未使能的补丁。|
255| -t | 可选参数,快速修复应用到指定目标路径。|
256| -d | 可选参数,应用快速修复调试模式。|
257
258
259
260示例:
261
262```bash
263# 根据包名查询补丁包信息
264bm quickfix -q -b com.ohos.app
265// 执行结果
266// Information as follows:
267// ApplicationQuickFixInfo:
268//  bundle name: com.ohos.app
269//  bundle version code: xxx
270//  bundle version name: xxx
271//  patch version code: x
272//  patch version name:
273//  cpu abi:
274//  native library path:
275//  type:
276# 快速修复补丁安装
277bm quickfix -a -f /data/app/
278// 执行结果
279apply quickfix succeed.
280# 快速修复补丁卸载
281bm quickfix -r -b com.ohos.app
282// 执行结果
283delete quick fix successfully
284```
285
286## 共享库查询命令(dump-shared)
287
288```bash
289bm dump-shared [-h] [-a] [-n bundleName] [-m moduleName]
290```
291
292  **共享库查询命令参数列表**
293
294| 参数 | 参数说明 |
295| -------- | -------- |
296| -h | 帮助信息。 |
297| -a | 可选参数,查询系统中已安装所有共享库。|
298| -n | 可选参数,查询指定共享库包名的详细信息。|
299| -m | 可选参数,查询指定共享库包名和模块名的详细信息。|
300
301
302示例:
303
304```bash
305# 显示所有已安装共享库包名
306bm dump-shared -a
307# 显示该共享库的详细信息
308bm dump-shared -n com.ohos.lib
309# 显示指定应用指定模块依赖的共享库信息
310bm dump-dependencies -n com.ohos.app -m entry
311```
312
313## 共享库依赖关系查询命令(dump-dependencies)
314
315显示指定应用和指定模块依赖的共享库信息。
316```bash
317bm dump-dependencies [-h] [-n bundleName] [-m moduleName]
318```
319
320  **共享库依赖关系查询命令参数列表**
321| 参数 | 参数说明 |
322| -------- | -------- |
323| -h | 帮助信息。 |
324| -n | 必选参数,查询指定共享库包名的详细信息。|
325| -m | 可选参数,查询指定应用指定模块依赖的共享库信息。|
326
327示例:
328```Bash
329# 显示指定应用指定模块依赖的共享库信息
330bm dump-dependencies -n com.ohos.app -m entry
331```
332
333
334## 应用执行编译AOT命令(compile)
335
336应用执行编译AOT命令。
337```bash
338bm compile [-h] [-m mode] [-r bundleName]
339```
340  **compile命令参数列表**
341
342| 参数 | 参数说明 |
343| -------- | -------- |
344| -h | 帮助信息。 |
345| -a | 可选参数,编译所有应用。|
346| -m | 可选参数,可选值为partial或者full。根据包名编译应用。|
347| -r | 可选参数,移除应用的结果。|
348
349示例:
350
351```bash
352# 根据包名编译应用
353bm compile -m partial com.example.myapplication
354```
355
356## 拷贝ap文件命令(copy-ap)
357
358拷贝ap文件到指定应用的/data/local/pgo路径。
359
360```bash
361bm copy-ap [-h] [-a] [-n bundleName]
362```
363
364**copy-ap命令参数列表**
365
366| 参数 | 参数说明 |
367| -------- | -------- |
368| -h | 帮助信息。 |
369| -a | 可选参数,默认所有包相关ap文件。拷贝所有包相关ap文件。|
370| -n | 可选参数,默认当前应用包名。根据包名拷贝对应包相关的ap文件。|
371
372示例:
373
374```bash
375# 根据包名移动对应包相关的ap文件
376bm copy-ap -n com.example.myapplication
377```
378
379## 查询overlay应用信息命令(dump-overlay)
380
381打印overlay应用的overlayModuleInfo。
382```bash
383bm dump-overlay [-h] [-b bundleName] [-m moduleName] [-t targetModuleName]
384```
385
386**dump-overlay命令参数列表**
387| 参数 | 参数说明 |
388| -------- | -------- |
389| -h | 帮助信息。 |
390| -b | 必选参数,获取指定应用的所有OverlayModuleInfo信息。|
391| -m | 可选参数,默认当前应用主模块名。根据指定的包名和module名查询OverlayModuleInfo信息。|
392| -t | 可选参数,根据指定的包名和目标module名查询OverlayModuleInfo信息。|
393
394示例:
395
396```bash
397# 根据包名来获取overlay应用com.ohos.app中的所有OverlayModuleInfo信息
398bm dump-overlay -b com.ohos.app
399
400# 根据包名和module来获取overlay应用com.ohos.app中overlay module为entry的所有OverlayModuleInfo信息
401bm dump-overlay -b com.ohos.app -m entry
402
403# 根据包名和module来获取overlay应用com.ohos.app中目标module为feature的所有OverlayModuleInfo信息
404bm dump-overlay -b com.ohos.app -m feature
405```
406
407## 查询应用的overlay相关信息命令(dump-target-overlay)
408
409查询目标应用的所有关联overlay应用的overlayModuleInfo信息。
410
411```bash
412bm dump-target-overlay [-h] [-b bundleName] [-m moduleName]
413```
414
415**dump-target-overlay命令参数列表**
416| 参数 | 参数说明 |
417| -------- | -------- |
418| -h | 帮助信息。 |
419| -b | 必选参数,获取指定应用的所有OverlayBundleInfo信息。|
420| -m | 可选参数,默认当前应用主模块名。根据指定的包名和module名查询OverlayBundleInfo信息。|
421
422示例:
423
424```bash
425# 根据包名来获取目标应用com.ohos.app中的所有关联的OverlayBundleInfo信息
426bm dump-target-overlay-b com.ohos.app
427
428# 根据包名和module来获取目标应用com.ohos.app中目标module为entry的所有关联的OverlayModuleInfo信息
429bm dump-target-overlay -b com.ohos.app -m entry
430```
431
432## bm工具错误码
433
434### 9568320 签名文件不存在
435**错误信息**
436
437Failed to install bundle, no signature file.
438
439![示例图](figures/zh-cn_image_0000001389116960.png)
440
441**错误描述**
442
443用户安装未签名的HAP包。
444
445**可能原因**
446
447HAP包没有签名。
448
449**处理步骤**
450
4511. 使用[自动签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-signing-V13#section18815157237)。在连接设备后,重新为应用进行签名。
4522. 使用手动签名,请参考[手动签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-signing-V13#section297715173233)453<br></br>
454
455### 9568347 解析本地so文件失败
456**错误信息**
457
458Error: install parse native so failed.
459
460**错误描述**
461
462在启动调试或运行C++应用/服务时,安装HAP包出现错误,提示“error: install parse native so failed”错误信息。
463
464**可能原因**
465
466设备支持的Abi类型与C++工程中配置的Abi类型不匹配。
467
468**处理步骤**
469
4701. 将设备与DevEco Studio进行连接。
4712. 打开命令行工具,并进入SDK安装目录下的toolchains\{版本号}目录下。
472    ```
473    若不清楚OpenHarmony SDK安装目录,可单击File > Settings > SDK界面查看安装路径。
474    ```
4753. 执行如下命令,查询设备支持的Abi列表,返回结果为default/armeabi-v7a/armeabi/arm64-v8a/x86/x86_64中的一个或多个Abi类型。
476    ```
477    hdc shell
478    param get const.product.cpu.abilist
479    ```
4804. 根据查询返回结果,检查[模块级build-profile.json5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-hvigor-compilation-options-customizing-sample-V13#section4322212200)文件中的“abiFilters”参数中的配置,规则如下:
481    * 若返回结果为default,请执行如下命令,查询是否存在lib64文件夹。
482      ```
483      cd /system/
484      ls
485      ```
486      ![示例图](figures/zh-cn_image_0000001609001262.png)
487      * 存在lib64文件夹:则“abiFilters”参数中需要包含arm64-v8a类型。
488      * 不存在lib64文件夹:则“abiFilters”参数中需要至少包含armeabi/armeabi-v7a中的一个类型。
489    * 若返回结果为armeabi-v7a/armeabi/arm64-v8a/x86/x86_64中的一个或多个,需要在“abiFilters”参数中至少包含返回结果中的一个Abi类型。
490<br></br>
491
492
493### 9568344 解析配置文件失败
494**错误信息**
495
496Error: install parse profile prop check error.
497
498![示例图](figures/zh-cn_image_0000001585361412.png)
499
500**错误描述**
501
502在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install parse profile prop check error”错误信息。
503
504**可能原因**
505
506应用使用了应用特权,但应用的签名文件发生变化后未将新的签名指纹重新配置到设备的特权管控白名单文件install_list_capability.json中。
507
508**处理步骤**
509
5101. 获取新的签名指纹。
511
512    a. 在[项目级build-profile.json5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-hvigor-compilation-options-customizing-sample-V13#section1448071082016)文件中,signingConfigs字段内的profile的值即为签名文件的存储路径。
513
514    b. 打开该签名文件(后缀为.p7b),打开后在文件内搜索“development-certificate”,将“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”以及中间的信息拷贝到新的文本中,注意换行并去掉换行符,保存为一个新的.cer文件,如命名为xxx.cer515
516    新的.cer文件格式如下图(仅作为格式示意,内容以实际为准):
517
518    ![示例图](figures/zh-cn_image_0000001585521364.png)
519
520
521
522    c. 使用keytool工具(在DevEco Studio安装目录下的jbr/bin文件夹内),执行如下命令通过.cer文件获取证书指纹的SHA256值。
523      ```
524      keytool -printcert -file xxx.cer
525      ```
526    d. 将证书指纹中SHA256的内容去掉冒号,即为最终要获得的签名指纹。
527
528    如SHA256值为下图(仅作为格式示意,内容以实际为准):
529    ![示例图](figures/zh-cn_image_0000001635921233.png)
530
531    去掉冒号后的签名指纹为:5753DDBC1A8EF88A62058A9FC4B6AFAFC1C5D8D1A1B86FB3532739B625F8F3DB
532
5332. 获取设备的特权管控白名单文件install_list_capability.json534
535    a. 连接设备。
536
537    b. 执行如下命令查看设备的特权管控白名单文件install_list_capability.json538    ```
539    find /system -name install_list_capability.json
540    ```
541    设备上install_list_capability.json的位置通常为以下目录地址,通过bundleName找到对应的配置文件:
542    ```
543    /system/etc/app/install_list_capability.json
544    ```
545    c. 执行如下命令拉取install_list_capability.json546    ```
547    hdc shell mount -o rw,remount /
548    hdc file recv /system/etc/app/install_list_capability.json
549    ```
550
5513. 将步骤1获取到的签名指纹配置到install_list_capability.json文件的app_signature中,注意要配置到对应的bundleName下。
552![示例图](figures/zh-cn_image_0000001635641893.png)
5534. 将修改后的install_list_capability.json文件重新推到设备上,并重启设备。
554
555    ```
556    hdc shell mount -o rw,remount /
557    hdc file send install_list_capability.json /system/etc/app/install_list_capability.json
558    hdc shell chmod 644 /system/etc/app/install_list_capability.json
559    hdc shell reboot
560    ```
5615. 设备重启后,重新安装新的应用即可。
562
563
564### 9568305 依赖的模块不存在
565**错误信息**
566
567Error: dependent module does not exist.
568
569![示例图](figures/zh-cn_image_0000001560338986.png)
570
571**错误描述**
572
573在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: dependent module does not exist”错误信息。
574
575**可能原因**
576
577运行/调试的应用依赖的动态共享包(SharedLibrary)模块未安装导致安装报错。
578
579**处理步骤**
580
5811. 先安装依赖的动态共享包(SharedLibrary)模块,再在应用运行配置页勾选Keep Application Data,点击OK保存配置,再运行/调试。
582![示例图](figures/zh-cn_image_0000001560201786.png)
5832. 在运行配置页,选择Deploy Multi Hap标签页,勾选Deploy Multi Hap Packages,选择依赖的模块,点击OK保存配置,再进行运行/调试。
584![示例图](figures/zh-cn_image_0000001610761941.png)
5853. 单击Run > Edit Configurations,在General中,勾选Auto Dependencies。点击OK保存配置,再运行/调试。
586![示例图](figures/zh-cn_image_9568305.png)
587
588### 9568259 安装解析配置文件缺少字段
589**错误信息**
590
591Error: install parse profile missing prop.
592
593![示例图](figures/zh-cn_image_0000001559130596.png)
594
595**错误描述**
596
597在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install parse profile missing prop”错误信息。
598
599**可能原因**
600
601配置文件app.json5module.json5中必填字段缺失。
602
603**处理步骤**
604
605* 方法1:请参考[app.json5配置文件](../quick-start/app-configuration-file.md)和[module.json5配置文件](../quick-start/module-configuration-file.md)查看并补充必填字段。
606* 方法2:通过hilog日志判断缺失字段。
607
608    开启落盘命令:
609    ```
610    hilog -w start
611    ```
612
613    落盘位置:/data/log/hilog614
615    打开日志查看“profile prop %{public}s is mission”。如“profile prop icon is mission”表示“icon”字段缺失。
616
617
618### 9568258 安装应用的releaseType与已安装应用的releaseType不相同
619**错误信息**
620
621Error: install releaseType target not same.
622
623![示例图](figures/zh-cn_image_0000001609976041.png)
624
625**错误描述**
626
627在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install releaseType target not same”错误信息。
628
629**可能原因**
630
631* 场景一:设备上已安装的旧HAP和现在要安装的新HAP所使用的SDK中的releaseType值不一样。
632* 场景二:安装的应用为多HAP时,每个HAP所使用的SDK中的releaseType值不一致。
633
634**处理步骤**
635
636* 场景一:请先卸载设备上已安装的HAP,再安装新的HAP。
637* 场景二:使用相同版本的SDK对HAP重新打包,保证多HAP的releaseType值一致。
638
639
640### 9568322 由于应用来源不可信,签名验证失败
641**错误信息**
642
643Error: signature verification failed due to not trusted app source.
644
645![示例图](figures/zh-cn_image_0000001585042216.png)
646
647**错误描述**
648
649在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: signature verification failed due to not trusted app source”错误信息。
650
651**可能原因**
652
653* 场景一:签名中未包含该调试设备的UDID。
654
655* 场景二:签名时使用了[发布证书和发布profile文件](https://developer.huawei.com/consumer/cn/doc/app/agc-help-releaseharmony-0000001933963166)。发布证书签名的应用不能启动调试或运行。
656
657**处理步骤**
658
659* 场景一:
660	1. 使用[自动签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-signing-V13#section18815157237)。在连接设备后,重新为应用进行签名。
661	2. 如果使用的是手动签名,对于OpenHarmony应用,请参考<!--RP2-->[OpenHarmony应用手动签名](../security/hapsigntool-guidelines.md)<!--RP2End-->,在UnsgnedDebugProfileTemplate.json文件中添加该调试设备的**UDID**。
662		```
663		//UDID获取命令
664		hdc shell bm get -u
665		```
666* 场景二:使用[调试证书和调试profile文件](https://developer.huawei.com/consumer/cn/doc/app/agc-help-debug-app-0000001914423098)重新签名应用。
667
668
669### 9568289 权限请求失败导致安装失败
670**错误信息**
671
672Error: install failed due to grant request permissions failed.
673
674![示例图](figures/zh-cn_image_0000001585201996.png)
675
676**错误描述**
677
678在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install failed due to grant request permissions failed”错误信息。
679
680**可能原因**
681
682默认应用等级为normal,只能使用normal等级的权限,如果使用了system_basic或system_core等级的权限,将导致报错。
683
684**处理步骤**
685
6861. 在UnsgnedDebugProfileTemplate.json文件中修改APL等级,调整成system_basic或system_core等级,重新签名打包即可。
687
688
689### 9568297 由于设备sdk版本较低导致安装失败
690**错误信息**
691
692Error: install failed due to older sdk version in the device.
693
694![示例图](figures/zh-cn_image_0000001635521909.png)
695
696**错误描述**
697
698在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install failed due to older sdk version in the device”错误信息。
699
700**可能原因**
701
702该问题是由于编译打包所使用的SDK版本与设备镜像版本不匹配。
703
704**处理步骤**
705
706* 场景一:设备上的镜像版本低于编译打包的SDK版本,请更新设备镜像版本。查询设备镜像版本命令:
707  ```
708  hdc shell param get const.ohos.apiversion
709  ```
710  如果镜像提供的api版本为10,且应用编译所使用的SDK版本也为10,仍出现该报错,可能是由于镜像版本较低,未兼容新版本SDK校验规则,请将镜像版本更新为最新版本。
711
712* 场景二:对于需要运行在OpenHarmony设备上的应用,请确认runtimeOS已改为OpenHarmony。
713
714### 9568332 签名不一致导致安装失败
715**错误信息**
716
717Error: install sign info inconsistent.
718
719![示例图](figures/zh-cn_image_0000001635761329.png)
720
721**错误描述**
722
723在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install sign info inconsistent”错误信息。
724
725**可能原因**
726
7271. 设备上已安装的应用与新安装的应用中签名不一致或者多个包(HAP和HSP)之间的签名存在差异。如果在“Edit Configurations”中勾选了“Keep Application Data”(即不卸载应用,直接覆盖安装),并且重新进行了签名,将导致该报错。
7282. 如果某个应用被卸载但是保留了数据,那么后面安装相同包名的应用时,需要校验其身份信息的一致性。如果两者的签名信息皆不一致,则会导致该报错。
729
730
731**处理步骤**
732
7331. 请卸载设备上已安装的应用,或取消勾选“Keep Application Data”后,重新安装新的应用。
7342. 如果是因不同团队提供的HSP导致签名不一致问题,可以采用[集成态HSP](../quick-start/integrated-hsp.md)的方式统一提供HSP;在多HAP包的情况下,必须确保所有HAP包的签名一致。
7353. 如果某个应用被卸载但是保留了数据,后面安装相同包名但签名信息不一致的应用时,安装失败。如果出现这种情况,则需要把之前已卸载掉的应用重新安装之后,执行不保留数据地卸载,这样相同包名但签名信息不一致的应用才能安装成功。
736
737### 9568329 签名信息验证失败
738**错误信息**
739
740Error: verify signature failed.
741
742![示例图](figures/zh-cn_image_155401.png)
743
744**错误描述**
745
746签名信息中的包名与应用的包名(bundleName)不一致。
747
748**可能原因**
749
750* 场景一:用户导入了三方提供的HSP模块,且该HSP既非[集成态HSP](../quick-start/integrated-hsp.md),又非同包名的HSP,造成包名不一致。
751
752* 场景二:用户使用了错误的签名文件(后缀为.p7b)进行签名,造成包名不一致。
753
754
755**处理步骤**
756
757* 场景一:HSP只能给同包名的应用使用,只有集成态HSP可以给不同包名的应用使用。需要用户与三方开发者确认,三方开发者应提供集成态HSP、或同包名的HSP给用户使用。
758
759* 场景二:检查签名流程和签名证书,参考[应用/服务签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-signing-V13)760
761
762### 9568266 安装权限拒绝
763**错误信息**
764
765Error: install permission denied.
766
767![示例图](figures/zh-cn_image_9568266.png)
768
769**错误描述**
770
771使用hdc install安装HAP时出现错误,提示“code:9568266 error: install permission denied”错误信息。
772
773**可能原因**
774
775hdc install不能安装release签名的企业应用。
776
777**处理步骤**
778
7791. 请使用hdc install指令安装调试debug签名的企业应用。
780
781
782### 9568337 安装解析失败
783**错误信息**
784
785Error: install parse unexpected.
786
787**错误描述**
788
789应用推送到设备安装时,报错包管理打开hap文件失败。
790
791**可能原因**
792
793* 场景一:设备system分区存储空间已满,导致hdc file send文件后,因存储空间不足导致设备中文件损坏。
794
795* 场景二:推送hap包到设备过程hap包损坏。
796
797**处理步骤**
798
799* 场景一:查看设备system分区存储空间,若已满,清理存储满足安装所需空间。
800  ```bash
801  hdc shell df -h /system
802  ```
803
804* 场景二:查看本地hap与推送到设备上hap的md5值,若不一致则表示推送过程hap损毁,请尝试重传。
805
806
807### 9568316 数据代理中APL权限字段描述权限低
808**错误信息**
809
810Error: apl of required permission in proxy data is too low.
811
812**错误描述**
813
814proxyData标签requiredReadPermission和requiredWritePermission属性验证失败。
815
816**可能原因**
817
818用户工程module.json中,proxyData标签requiredReadPermission和requiredWritePermission属性验证失败,这两个属性要求system_basic或system_core权限等级。
819
820**处理步骤**
821
8221. 检查应用定义的proxyData内容是否符合要求,参考[proxyData标签](../quick-start/module-configuration-file.md#proxydata标签)。
823
824
825### 9568315 数据代理URI错误
826**错误信息**
827
828Error: uri in proxy data is wrong.
829
830**错误描述**
831
832proxyData标签uri属性验证失败。
833
834**可能原因**
835
836用户工程module.json中,proxyData标签uri属性验证失败,不满足uri格式要求。
837
838**处理步骤**
839
8401. 检查应用定义的proxyData内容是否符合要求,参考[proxyData标签](../quick-start/module-configuration-file.md#proxydata标签)。
841
842
843### 9568336 应用调试类型与已安装应用不一致
844**错误信息**
845
846Error: install debug type not same.
847
848**错误描述**
849
850应用调试类型(app.json的debug字段)与已安装应用不一致。
851
852**可能原因**
853
854开发者使用DevEco Studio的debug按钮安装了应用,后面打包之后又通过hdc install方式安装。
855
856**处理步骤**
857
8581. 卸载已安装的应用,重新安装新应用。
859
860
861### 9568296 包类型错误
862**错误信息**
863
864Error: install failed due to error bundle type.
865
866**错误描述**
867
868bundleType错误导致应用安装失败。
869
870**可能原因**
871
872新安装应用的bundleType与已安装的有相同bundleName应用不一致。
873
874**处理步骤**
875
876* 方法一:卸载已安装的应用,重新安装新应用。
877
878* 方法二:修改应用的bundleType,与已安装应用保持一致。
879
880
881### 9568292 UserID为0的用户只能安装singleton应用
882**错误信息**
883
884Error: install failed due to zero user can only install singleton app.
885
886**错误描述**
887
888UserID 0用户只允许安装singleton权限应用,singleton权限应用只允许被UserID 0用户安装。
889
890**可能原因**
891
892singleton权限应用安装未指定UserID 0。
893
894**处理步骤**
895
8961. 应用是singleton权限,安装时指定UserID 0。
897	```
898	//指定userId安装命令
899	hdc install -p hap名.hap -u 0
900	```
901
902
903### 9568263 无法降级安装
904**错误信息**
905
906Error: install version downgrade.
907
908**错误描述**
909
910正在安装应用的VersionCode小于系统中已安装应用的VersionCode,安装失败。
911
912**可能原因**
913
914正在安装应用的VersionCode小于系统中已安装应用的VersionCode。
915
916**处理步骤**
917
9181. 卸载已安装的应用,重新安装新应用。
919
920
921### 9568304 应用不支持当前设备类型
922**错误信息**
923
924Error: device type is not supported.
925
926**错误描述**
927
928正在安装的应用不支持当前设备类型,安装失败。
929
930**可能原因**
931
932正在安装的应用不支持当前设备类型。
933
934**处理步骤**
935
9361. 如需要适配当前设备,请在应用设备类型配置中增加当前设备类型。应用deviceTypes配置包含phone(手机)、tablet(平板)、2in1(2合1设备)、tv(智慧屏)、wearable(智能手表)和car(车机)。
937
938
939### 9568317 应用的多进程配置与系统配置不匹配
940**错误信息**
941
942Error: isolationMode does not match the system.
943
944**错误描述**
945
946安装应用时,设置的isolationMode与系统配置项允许的系统配置不匹配。
947
948**可能原因**
949
950* 场景一:设备支持隔离模式,即persist.bms.supportIsolationMode为true时,HAP配置的isolationMode为nonisolationOnly。
951
952* 场景二:设备不支持隔离模式,即persist.bms.supportIsolationMode为false时,HAP配置的isolationMode为isolationOnly。
953
954**处理步骤**
955
9561. 按照设备的隔离模式配置HAP配置文件isolationMode属性。
957	```
958	//查询设备persist.bms.supportIsolationMode值,若返回errNum is:106说明没配置
959	hdc shell
960	param get persist.bms.supportIsolationMode
961	//配置设备persist.bms.supportIsolationMode962	hdc shell
963	param set persist.bms.supportIsolationMode [true|false]
964	```
965
966
967### 9568315 数据代理的uri属性错误
968**错误信息**
969
970Error: uri in proxy data is wrong.
971
972**错误描述**
973
974应用module.json文件中proxyData标签的uri属性验证失败。
975
976**可能原因**
977
978uri不满足格式规范。
979
980**处理步骤**
981
9821. 确认uri满足格式规范。
983	```
984	//uri格式规范
985	不同数据代理的uri不可重复,且需要满足datashareproxy://当前应用包名/xxx的格式
986	```
987
988
989### 9568310 兼容策略不同
990**错误信息**
991
992Error: compatible policy not same.
993
994**错误描述**
995
996新包与已安装包兼容策略不同。
997
998**可能原因**
999
10001. 应用已安装,再安装一个同包名的应用间共享库。
10012. 应用间共享库已安装,再安装一个同包名的应用。
1002
1003**处理步骤**
1004
10051. 卸载已安装的应用或应用间共享库,再安装新包。
1006
1007
1008### 9568391 包管理服务已停止
1009**错误信息**
1010
1011Error: bundle manager service is died.
1012
1013**错误描述**
1014
1015包管理服务已停止。
1016
1017**可能原因**
1018
1019系统出现未知的异常,导致系统服务重启。
1020
1021**处理步骤**
1022
10231.查询设备/data/log/faultlog/faultlogger/目录下是否存在crash文件。
1024
10252.crash文件中是否包含foundation字样的文件。
1026
10273.请多次重试安装,如果还是报同样的错误,观察是否会多出包含foundation字样的crash文件生成。
1028
10294.若多次重试都无法解决,请导出crash文件和日志文件提[在线工单](https://developer.huawei.com/consumer/cn/support/feedback/#/)获取帮助。
1030
1031
1032### 9568393 验证代码签名失败
1033**错误信息**
1034
1035Error: verify code signature failed.
1036
1037**错误描述**
1038
1039验证代码签名失败。
1040
1041**可能原因**
1042
1043包没有代码签名信息。
1044
1045**处理步骤**
1046
10471. 安装最新版本DevEco Studio,重新签名。
1048
1049
1050### 9568257 验证pkcs7文件失败
1051**错误信息**
1052
1053Error: fail to verify pkcs7 file.
1054
1055**错误描述**
1056
1057验证pkcs7文件失败。
1058
1059**可能原因**
1060<!--RP3-->
1061应用当前使用的签名不符合HarmonyOS应用签名要求,通常是由于当前使用的是OpenHarmony应用的签名,应该替换为HarmonyOS应用的签名。<!--RP3End-->
1062
1063**处理步骤**
1064
10651. 在为应用/服务签名时勾选“Support HarmonyOS”,完成HarmonyOS应用签名后再次启动调试或运行应用。
1066![示例图](figures/zh-cn_image_9868257_1.png)
1067
1068### 9568401 调试包仅支持运行在开发者模式设备
1069**错误信息**
1070
1071Error: debug bundle can only be installed in developer mode.
1072
1073**错误描述**
1074
1075调试包仅支持运行在开发者模式设备。
1076
1077**可能原因**
1078
1079终端设备未开启“开发者模式”。
1080
1081**处理步骤**
1082
10831. 终端系统查看“设置 > 系统”中是否有“开发者选项”,如果不存在,可在“设置 > 关于本机”连续七次单击“版本号”,直到提示“开启开发者模式”,点击“确认开启”后输入PIN码(如果已设置),设备将自动重启。
10842. USB数据线连接终端和PC,在“设置 > 系统 > 开发者选项”中,打开“USB调试”开关,弹出的“允许USB调试”的弹框,点击“允许”。
10853. 启动调试或运行应用。
1086
1087### 9568386 卸载的应用不存在
1088**错误信息**
1089
1090Error: uninstall missing installed bundle.
1091
1092**错误描述**
1093
1094卸载的应用不存在。
1095
1096**可能原因**
1097
1098要卸载的应用没有安装。
1099
1100**处理步骤**
1101
11021. 确认要卸载的应用是否已经安装。
1103
1104### 9568388 企业设备管理不允许卸载该应用
1105**错误信息**
1106
1107Error: Failed to uninstall the HAP because the uninstall is forbidden by enterprise device management.
1108
1109**错误描述**
1110
1111企业设备管理不允许卸载该应用。
1112
1113**可能原因**
1114
1115应用被设置为不允许被卸载。
1116
1117**处理步骤**
1118
11191. 由设置方取消该应用的卸载管控。
1120
1121### 9568284 安装版本不匹配
1122**错误信息**
1123
1124Error: install version not compatible.
1125
1126**错误描述**
1127
1128安装版本不匹配。
1129
1130**可能原因**
1131
1132当前安装HSP的版本信息与已安装HAP的版本信息不匹配。
1133安装HSP时会做如下校验:
11341. bundleName和HAP的一致。
11352. version和HAP的一致。
11363. 签名和HAP的一致。
1137
1138**处理步骤**
1139
11401. 卸载版本信息不匹配的HAP,再安装HSP。
11412. 修改HSP版本信息与HAP一致,再安装HSP。
1142
1143### 9568287 安装包entry模块数量不合规
1144**错误信息**
1145
1146Error: install invalid number of entry hap.
1147
1148**错误描述**
1149
1150安装包entry模块数量不合规。
1151
1152**可能原因**
1153
1154安装包中entry模块有多个。一个应用只能有一个entry模块,可以有多个feature模块。
1155
1156**处理步骤**
1157
11581. 保留一个entry模块,其余entry模块修改为feature(修改module.json5中type字段)。
1159
1160
1161### 9568281 安装包vendor不一致
1162**错误信息**
1163
1164Error: install vendor not same.
1165
1166**错误描述**
1167
1168安装包vendor不一致。
1169
1170**可能原因**
1171
1172app.json5文件中app的vendor字段配置不一致。
1173
1174**处理步骤**
1175
11761. 若只有一个HAP,要求与已安装应用vendor字段一致,卸载重装即可。
11772. 若包含集成态HSP,要求集成态HSP与使用方HAP的vendor字段保持一致。
1178
1179
1180### 9568274 安装服务错误
1181**错误信息**
1182
1183Error: install installd service error.
1184
1185**错误描述**
1186
1187安装服务错误。
1188
1189**可能原因**
1190
1191安装服务异常。
1192
1193**处理步骤**
1194
11951. 清除缓存,重启设备。
1196
1197
1198### 9568314 安装应用间共享库失败
1199**错误信息**
1200
1201Error: Failed to install the HSP because installing a shared bundle specified by hapFilePaths is not allowed.
1202
1203**错误描述**
1204
1205安装应用间共享库失败。
1206
1207**可能原因**
1208
1209安装应用间共享HSP时使用“hdc app install ***”指令。
1210
1211**处理步骤**
1212
12131. 安装应用间HSP时使用“hdc install -s ***”指令。
1214
1215
1216### 9568359 安装设置selinux失败
1217**错误信息**
1218
1219Error: installd set selinux label failed.
1220
1221**错误描述**
1222
1223安装设置selinux失败。
1224
1225**可能原因**
1226
1227签名配置文件中APL字段错误。APL有“normal”、“system_basic”和“system_core”三种等级。
1228
1229**处理步骤**
1230
12311. 确认签名文件p7b中apl字段是否有误。
1232
1233    ![示例图](figures/zh-cn_image_9568359.png)
1234
12352. 若apl字段有误,修改UnsgnedReleasedProfileTemplate.json文件中apl字段,并重新签名。
1236
1237    ![示例图](figures/zh-cn_image_9568359_2.png)
1238
1239
1240### 9568403 安装加密校验失败
1241**错误信息**
1242
1243Error: check encryption failed.
1244
1245**错误描述**
1246
1247安装加密校验失败。
1248
1249**可能原因**
1250
1251可能是镜像版本较老;或者HAP包lib目录内非so文件导致。
1252
1253**处理步骤**
1254
12551. 安装新版本镜像。
12562. 删除HAP工程中lib目录内非so文件,重新签名打包。
1257
1258### 9568417 签名校验失败
1259**错误信息**
1260
1261Error: bundle cannot be installed because the appId is not same with preinstalled bundle.
1262
1263**错误描述**
1264
1265签名校验失败。
1266
1267**可能原因**
1268
1269安装的应用与已经预置的同包名应用签名不一致。
1270
1271**处理步骤**
1272
12731. 如果安装的应用是预置应用,需要保证安装应用的签名与预置应用的一致。