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