1# aa工具 2 3Ability assistant(Ability助手,简称为aa),是用于启动应用和启动测试用例的工具,为开发者提供基本的应用调试和测试能力,例如启动应用组件、强制停止进程、打印应用组件相关信息等。 4 5## 环境要求 6 7在使用本工具前,开发者需要先获取<!--Del-->[<!--DelEnd-->hdc工具<!--Del-->](../../device-dev/subsystems/subsys-toolchain-hdc-guide.md)<!--DelEnd-->,执行hdc shell。 8 9本文中命令介绍均基于交互式命令环境。如果直接执行hdc shell [aa命令],则需要采用""来包裹aa命令,确保命令中的传参能被正确识别。示例如下: 10 11```bash 12# 启动命令 13hdc shell "aa start -A ohos.want.action.viewData -U 'https://www.example.com'" 14 15# 应用调试/调优命令 16hdc shell "aa process -b com.example.myapplication -a EntryAbility -p perf-cmd" 17``` 18 19## aa工具命令列表 20 21| 命令 | 描述 | 22|--------|--------| 23| -h/help | 帮助命令。用于查询aa支持的命令信息。| 24| start | 启动命令。用于启动一个应用组件,目标组件可以是FA模型的PageAbility和ServiceAbility组件,也可以是Stage模型的UIAbility和ServiceExtensionAbility组件,且目标组件相应配置文件中的exported标签不能配置为false。| 25| stop-service | 停止命令。用于停止ServiceAbility。 | 26| dump<sup>(deprecated)</sup> | 打印命令。用于打印应用组件的相关信息。| 27| force-stop | 强制停止进程命令。通过bundleName强制停止一个进程。| 28| test | 启动测试框架命令。根据所携带的参数启动测试框架。 | 29| attach | 进入调试模式命令。通过bundleName使指定应用进入调试模式。| 30| detach | 退出调试模式命令。通过bundleName使指定应用退出调试模式。| 31| appdebug | 等待调试命令。用于设置、取消设置应用等待调试状态,以及获取处于等待调试状态的应用包名和持久化信息。等待调试状态只对debug类型应用生效。appdebug的设置命令只对单个应用生效,当重复设置时,应用包名与持久化状态会替换成最新设置内容。| 32| process | 应用调试/调优命令。对应用进行调试或调优,IDE用该命令集成调试和调优工具。| 33 34## 帮助命令(help) 35 36```bash 37# 显示帮助信息 38aa help 39``` 40 41## 启动命令(start) 42 43启动一个应用组件,目标组件可以是FA模型的PageAbility和ServiceAbility组件,也可以是Stage模型的UIAbility和ServiceExtensionAbility组件,且目标组件相应配置文件中的exported标签不能配置为false。 44 45```bash 46# 显示启动Ability 47aa start [-d <deviceId>] [-a <abilityName> -b <bundleName>] [-m <moduleName>] [-D] [-R] [-S] [--pi <key> <integer-value>] [--pb <key> <bool-value: true/false/t/f大小写不敏感] [--ps <key> <value>] [--psn <key>] [--wl <windowLeft>] [--wt <windowTop>] [--wh <windowHeight>] [--ww <windowWidth>] [-p <perf-cmd>] 48 49# 隐式启动Ability。如果命令中的参数都不填,会导致启动失败。 50aa start [-d <deviceId>] [-U <URI>] [-t <type>] [-A <action>] [-e <entity>] [-D] [-R] [--pi <key> <integer-value>] [--pb <key> <bool-value: true/false/t/f大小写不敏感] [--ps <key> <value>] [--psn <key>] [--wl <windowLeft>] [--wt <windowTop>] [--wh <windowHeight>] [--ww <windowWidth>] [-p <perf-cmd>] 51``` 52 53 **启动命令参数列表** 54 55 | 参数 | 参数说明 | 56 | -------- |-------------------| 57 | -h/--help | 帮助信息。 | 58 | -d | 可选参数,deviceId。 | 59 | -a | 可选参数,abilityName。 | 60 | -b | 可选参数,bundleName。 | 61 | -m | 可选参数,moduleName。 | 62 | -U | 可选参数,URI。 | 63 | -A | 可选参数,action。 | 64 | -e | 可选参数,entity。 | 65 | -t | 可选参数,type。 | 66 | --pi | 可选参数,整型类型键值对。 | 67 | --pb | 可选参数,布尔类型键值对。 | 68 | --ps | 可选参数,字符串类型键值对。 | 69 | --psn | 可选参数,空字符串关键字。 | 70 | --wl | 可选参数,windowLeft,窗口左边距,单位px。<br>**约束:**<br>仅当2in1设备处于开发者模式下,且被启动应用采用调试签名时,该字段生效。| 71 | --wt | 可选参数,windowTop,窗口上边距,单位px。<br>**约束:**<br>仅当2in1设备处于开发者模式下,且被启动应用采用调试签名时,该字段生效。| 72 | --wh | 可选参数,windowHeight,窗口高度,单位px。<br>**约束:**<br>仅当2in1设备处于开发者模式下,且被启动应用采用调试签名时,该字段生效。| 73 | --ww | 可选参数,windowWidth,窗口宽度,单位px。<br>**约束:**<br>仅当2in1设备处于开发者模式下,且被启动应用采用调试签名时,该字段生效。| 74 | -R | 可选参数,调试时是否开启多线程错误检测。携带该参数代表开启,不携带代表关闭。<br>**说明:** 从API version 14开始,支持该参数。 | 75 | -S | 可选参数,调试时是否进入应用沙箱。携带该参数代表进入,不携带代表不进入。 | 76 | -D | 可选参数,调试模式。 | 77 | -p | 可选参数,调优命令。命令由调用方自定义。 | 78 79 **返回值**: 80 81 当启动成功时,返回"start ability successfully.";当启动失败时,返回"error: failed to start ability.",同时会包含相应的失败信息。 82 83 **错误码**: 84 85 | 错误码ID | 错误信息 | 86 | ------- | -------- | 87 | 10103001 | Failed to verify the visibility of the target ability. | 88 | 10104001 | The specified ability does not exist. | 89 | 10105001 | Failed to connect to the ability service. | 90 | 10105002 | Failed to obtain ability information. | 91 | 10106002 | The target application does not support debug mode. | 92 | 10100101 | Failed to obtain application information. | 93 | 10100102 | The aa start command cannot be used to launch a UIExtensionAbility. | 94 | 10103101 | Failed to find a matching application for implicit launch. | 95 | 10103102 | The passed appCloneIndex is invalid. | 96 | 10106101 | The current ability will be placed in the queue to wait for the previous ability to finish launching. | 97 | 10106102 | The device screen is locked during the application launch. | 98 | 10106103 | The target application is an expired crowdtesting application. | 99 | 10106105 | The target application is under control. | 100 | 10106106 | The target application is managed by EDM. | 101 | 10106107 | The current device does not support using window options. | 102 | 10107102 | Permission verification failed for the specified process. | 103 | 10108101 | An internal error occurs while attempting to launch the ability. | 104 105 **示例**: 106 107 以隐式启动Ability为例。 108 109 > **说明:** 110 > 111 > 本例中仅介绍了部分字段的使用。关于Ability匹配的详细规则参考[显式Want与隐式Want匹配规则](../application-models/explicit-implicit-want-mappings.md)。 112 113 114 - **目标应用**:修改module.json5配置,为目标Ability配置uris。 115 116 ```json 117 { 118 "name": "TargetAbility", 119 // ...... 120 "exported": true, 121 "skills": [ 122 { 123 "actions":[ 124 "ohos.want.action.viewData" 125 ], 126 "uris":[ 127 { 128 "scheme": "myscheme", 129 "host": "www.test.com", 130 "port": "8080", 131 "path": "path", 132 } 133 ] 134 } 135 ] 136 } 137 ``` 138 139 140 - **拉起方应用**: 隐式启动Ability。 141 142 - 如果需要拉起应用的页面,可以使用-U命令,示例如下: 143 144 ```bash 145 aa start -U myscheme://www.test.com:8080/path 146 ``` 147 148 - 在上述基础上,如果需要携带参数,可以使用如下命令: 149 150 ```bash 151 aa start -U myscheme://www.test.com:8080/path --pi paramNumber 1 --pb paramBoolean true --ps paramString teststring --psn paramNullString 152 ``` 153 154 UIAbility获取传入参数示例如下: 155 156 ```ts 157 import UIAbility from '@ohos.app.ability.UIAbility'; 158 import hilog from '@ohos.hilog'; 159 import Want from '@ohos.app.ability.Want'; 160 161 export default class TargetAbility extends UIAbility { 162 onCreate(want:Want, launchParam) { 163 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); 164 let paramNumber = want.parameters.paramNumber 165 let paramBoolean = want.parameters.paramBoolean 166 let paramString = want.parameters.paramString 167 let paramNullString = want.parameters.paramNullString 168 } 169 } 170 ``` 171 172 - 如果需要拉起浏览器并跳转指定页面,可以使用-A -U命令,示例如下: 173 174 本例中以`https://www.example.com`为例,请根据实际情况替换为真实的网址。 175 176 ```bash 177 aa start -A ohos.want.action.viewData -U https://www.example.com 178 ``` 179 180 181## 停止命令(stop-service) 182 183用于停止ServiceAbility。 184 185```bash 186aa stop-service [-d <deviceId>] -a <abilityName> -b <bundleName> [-m <moduleName>] 187``` 188 189 **停止命令参数列表** 190 | 参数 | 参数说明 | 191 | -------- | -------- | 192 | -h/--help | 帮助信息。 | 193 | -d | 可选参数,deviceId。 | 194 | -a | 必选参数,abilityName。 | 195 | -b | 必选参数,bundleName。 | 196 | -m | 可选参数,moduleName。 | 197 198 **返回值**: 199 200 当成功停止ServiceAbility时,返回"stop service ability successfully.";当停止失败时,返回"error: failed to stop service ability."。 201 202 **错误码**: 203 204 | 错误码ID | 错误信息 | 205 | ------- | -------- | 206 | 10103001 | Failed to verify the visibility of the target ability. | 207 | 10103201 | The target ability is not of the ServiceAbility type. | 208 | 10104001 | The specified ability does not exist. | 209 | 10105001 | Failed to connect to the ability service. | 210 | 10105002 | Failed to obtain ability information. | 211 212 **示例**: 213 214 ```bash 215 # 停止一个ServiceAbility 216 aa stop-service -a EntryAbility -b com.example.myapplication -m entry 217 ``` 218 219## 打印命令(dump<sup>(deprecated)</sup>) 220 221用于打印应用组件的相关信息。 222 223```bash 224aa dump -a 225``` 226 227> **说明:** 228> 229> aa dump命令从API version 7开始支持,从API version 9废弃,替换命令为[hidumper](../dfx/hidumper.md) -s AbilityManagerService。 230 231 **打印命令参数列表** 232 | 参数 | 二级参数 | 参数说明 | 233 | -------- | -------- | -------- | 234 | -h/--help | - | 帮助信息。 | 235 | -a/--all | - | 打印所有mission内的应用组件信息。 | 236 | -l/--mission-list | type(缺省打印全部) | 服务侧为了方便管理任务链,内部维护了4种类型的任务链。<br/>可取值:<br/>- NORMAL:正常启动的任务链(比如A拉起B拉起C, 则对应的任务链是A->B->C)<br/>- DEFAULT_STANDARD:已经被破坏的任务链中的任务, 启动模式为`multiton`的任务被放到该任务链中, 这里面的任务之间没有关联关系<br/>- DEFAULT_SINGLE:已经被破坏的任务链中的任务, 启动模式为`singleton`的任务被放到该任务链中, 这里面的任务之间没有关联关系<br/>- LAUNCHER:launcher的任务链 | 237 | -e/--extension | elementName | 打印扩展组件信息。 | 238 | -u/--userId | UserId | 打印指定UserId的栈信息,需要和其他参数组合使用,例如aa dump -a -u 100、aa dump -d -u 100。 | 239 | -d/--data | - | 打印DataAbility相关信息。 | 240 | -i/--ability | AbilityRecord ID | 打印指定应用组件详细信息。 | 241 | -c/--client | - | 打印应用组件详细信息,需要和其他参数组合使用,例如aa dump -a -c、aa dump -i 21 -c。 | 242 | -p/--pending | - | 打印pendingWant信息,需要和其他参数组合使用,例如aa dump -a -p。 | 243 | -r/--process | - | 打印应用进程信息,需要和其他参数组合使用,例如aa dump -a -r。 | 244 245 **错误码**: 246 247 | 错误码ID | 错误信息 | 248 | ------- | -------- | 249 | 10105001 | Failed to connect to the ability service. | 250 251 **示例**: 252 253 ```bash 254 # 打印所有mission内的应用组件信息 255 aa dump -a 256 ``` 257 258  259 260 261 ```bash 262 # 打印所有任务链 263 aa dump -l 264 ``` 265 266  267 268 269 ```bash 270 # 打印指定应用组件详细信息 271 aa dump -i 12 272 ``` 273 274  275 276## 强制停止进程命令(force-stop) 277 278通过bundleName强制停止一个进程。 279 280```bash 281aa force-stop <bundleName> 282``` 283 284 **返回值**: 285 286 当成功强制停止该进程时,返回"force stop process successfully.";当强制停止失败时,返回"error: failed to force stop process."。 287 288 **错误码**: 289 290 | 错误码ID | 错误信息 | 291 | ------- | -------- | 292 | 10105001 | Failed to connect to the ability service. | 293 | 10104002 | Failed to retrieve specified package information. | 294 | 10106401 | Failed to terminate the process. | 295 | 10106402 | Persistent processes cannot be terminated. | 296 297 **示例**: 298 299 ```bash 300 # 通过bundleName强制停止一个进程 301 aa force-stop com.example.myapplication 302 ``` 303 304## 启动测试框架命令(test) 305 306根据所携带的参数启动测试框架。 307 308```bash 309aa test -b <bundleName> [-m <module-name>] [-p <package-name>] [-s class <test-class>] [-s level <test-level>] [-s size <test-size>] [-s testType <test-testType>] [-s timeout <test-timeout>] [-s <any-key> <any-value>] [-w <wait-time>] -s unittest <testRunner> 310``` 311 312> **说明**: 313> 314> 关于class、level、size、testType等参数的详细说明请参见<!--RP2-->[aa test命令执行配置参数](../application-test/arkxtest-guidelines.md#cmd执行)<!--RP2End-->。 315 316 **启动测试框架命令参数列表** 317 | 参数 | 参数说明 | 318 | -------- | -------- | 319 | -h/--help | 帮助信息。 | 320 | -b | 必选参数,bundleName。 | 321 | -s unittest | 必选参数,testRunner。 | 322 | -p | 可选参数,testRunner的packageName。<br>**说明**:该可选参数仅可在FA模型下使用。 | 323 | -m | 可选参数,testRunner的moduleName。<br>**说明**:该可选参数仅可在Stage模型下使用。 | 324 | -s class | 可选参数,指定要执行的测试套或测试用例。 | 325 | -s level | 可选参数,指定要执行用例的用例级别。 | 326 | -s size | 可选参数,指定要执行用例的用例规模。 | 327 | -s testType | 可选参数,指定要执行用例的用例类型。 | 328 | -s timeout | 可选参数,测试用例执行的超时时间(单位ms),默认为5000。 | 329 | -s \<any-key> | 可选参数,任意键值对。 | 330 | -w | 可选参数,指定测试运行时间(单位ms)。 | 331 | -D | 可选参数,调试模式。 | 332 333 **返回值**: 334 335 当成功启动测试框架时,返回"user test started.";当启动失败时,返回"error: failed to start user test."和对应的错误信息。 336 337 **错误码**: 338 339 | 错误码ID | 错误信息 | 340 | ------- | -------- | 341 | 10104002 | Failed to retrieve specified package information. | 342 | 10105001 | Failed to connect to the ability service. | 343 | 10106002 | The target application does not support debug mode. | 344 | 10108501 | An internal error occurs during the execution of the aa test command. | 345 346 **示例**: 347 348 ```bash 349 # 启动测试框架 350 aa test -b com.example.myapplication -s unittest ActsAbilityTest 351 # 启动测试框架并设置moduleName 352 aa test -b com.example.myapplication -m entry_test -s unittest ActsAbilityTest 353 # 启动测试框架并指定超时时间 354 aa test -b com.example.myapplication -m entry_test -s timeout 10000 -s unittest ActsAbilityTest 355 ``` 356 357## 进入调试模式命令(attach) 358 359通过bundleName使指定应用进入调试模式。 360 361```bash 362aa attach -b <bundleName> 363``` 364 365 **进入调试模式命令参数列表** 366 | 参数 | 参数说明 | 367 | -------- |-------------------| 368 | -h/--help | 帮助信息。 | 369 | -b | 必选参数,bundleName。 | 370 371 **返回值**: 372 373 当应用成功进入调试模式时,返回"attach app debug successfully.";当给定参数不合法时,返回"fail: unknown option."并打印帮助信息。 374 375 **错误码**: 376 377 | 错误码ID | 错误信息 | 378 | ------- | -------- | 379 | 10105001 | Failed to connect to the ability service. | 380 | 10106001 | The current device is not in developer mode. | 381 | 10106002 | The target application does not support debug mode. | 382 | 10103601 | The specified bundleName does not exist. | 383 | 10108601 | An internal error occurs while attempting to enter/exit debug mode. | 384 385 **示例**: 386 387 ```bash 388 # 通过bundleName使指定应用进入调试模式 389 aa attach -b com.example.myapplication 390 ``` 391 392## 退出调试模式命令(detach) 393 394通过bundleName使指定应用退出调试模式。 395 396```bash 397aa detach -b <bundleName> 398``` 399 400 **退出调试模式命令参数列表** 401 | 参数 | 参数说明 | 402 | -------- |-------------------| 403 | -h/--help | 帮助信息。 | 404 | -b | 必选参数,bundleName。 | 405 406 **返回值**: 407 408 当应用成功退出调试模式时,返回"detach app debug successfully.";当给定参数不合法时,返回"fail: unknown option."并打印帮助信息。 409 410 **错误码**: 411 412 | 错误码ID | 错误信息 | 413 | ------- | -------- | 414 | 10105001 | Failed to connect to the ability service.| 415 | 10106001 | The current device is not in developer mode. | 416 | 10106002 | The target application does not support debug mode. | 417 | 10103601 | The specified bundleName does not exist. | 418 | 10108601 | An internal error occurs while attempting to enter/exit debug mode. | 419 420 **示例**: 421 422 ```bash 423 # 通过bundleName使指定应用退出调试模式 424 aa detach -b com.example.myapplication 425 ``` 426 427## 等待调试命令(appdebug) 428 429用于设置、取消设置应用等待调试状态,以及获取处于等待调试状态的应用包名和持久化信息。等待调试状态只对debug类型应用生效。appdebug的设置命令只对单个应用生效,当重复设置时,应用包名与持久化状态会替换成最新设置内容。 430 431```bash 432aa appdebug -b <bundleName> [-p] 433``` 434 435 **等待调试命令参数列表** 436 | 参数 | 二级参数 | 参数说明 | 437 | -------- | -------- | -------- | 438 | -h/--help | - | 帮助信息。 | 439 | -b/--bundlename | bundleName | 为指定应用设置等待调试状态。设置时,不会进行包名合法化的校验。 | 440 | -p/--persist | - | 可选参数;持久化标志位,加入该参数,代表持续设置应用为等待调试状态,无论重启设备、重装应用都可以持续生效;不加入该参数,代表等待调试状态仅可以在重启设备前生效一次。需要和-b参数组合使用,例如:aa appdebug -b <bundleName> -p。 | 441 | -c/--cancel | - | 取消等待调试状态。 | 442 | -g/--get | - | 获取等待调试状态的应用包名和持久化信息。 | 443 444 **返回值**: 445 446 当执行成功时,返回"app debug successfully.";当执行失败时,返回"error: failed to app debug.";当失败原因为非开发者模式时,返回"error: not developer mode."。 447 448 **错误码**: 449 450 | 错误码ID | 错误信息 | 451 | ------- | -------- | 452 | 10105003 | Failed to connect to the app service. | 453 | 10106001 | The current device is not in developer mode. | 454 | 10106701 | Cannot debug applications using a release certificate. | 455 456 **示例**: 457 458 ```bash 459 # 显示帮助信息 460 aa appdebug -h 461 462 # 为指定应用设置等待调试状态 463 aa appdebug -b com.example.myapplication [-p] 464 465 # 取消等待调试状态 466 aa appdebug -c 467 468 # 获取等待调试状态的应用包名和持久化信息 469 # 获取信息例: bundle name : com.example.publishsystem, persist : false 470 aa appdebug -g 471 ``` 472 473## 应用调试/调优命令(process) 474 475对应用进行调试或调优,IDE用该命令集成调试和调优工具。 476 477```bash 478# 调试应用 479aa process -b <bundleName> -a <abilityName> [-m <moduleName>] [-D <debug-cmd>] [-S] 480 481# 调优应用 482aa process -b <bundleName> -a <abilityName> [-m <moduleName>] [-p <perf-cmd>] [-S] 483``` 484 485 **应用调试/调优命令参数列表** 486 | 参数 | 参数说明 | 487 | -------- | -------- | 488 | -h/--help | 帮助信息。 | 489 | -b | 必选参数,bundleName。 | 490 | -a | 必选参数,abilityName。 | 491 | -m | 可选参数,moduleName。 | 492 | -p | 可选参数,调优命令,与-D必须二选一。命令由调用方自定义。 | 493 | -D | 可选参数,调试命令,与-p必须二选一。命令由调用方自定义。 | 494 | -S | 可选参数,进入应用沙箱。 | 495 496 **返回值**: 497 498 当执行成功时,返回"start native process successfully.";当执行失败时,返回"error: failed to start native process.";当给定参数不合法时,返回"error: option requires a value."并打印帮助信息。 499 500 | 错误码ID | 错误信息 | 501 | ------- | -------- | 502 | 10105002 | Failed to obtain ability information. | 503 | 10105003 | Failed to connect to the app service. | 504 | 10106002 | The target application does not support debug mode. | 505 506 **示例**: 507 508 ```bash 509 # 调试应用 510 aa process -b com.example.myapplication -a EntryAbility -D debug_cmd [-S] 511 512 # 调优应用 513 aa process -b com.example.myapplication -a EntryAbility -p perf-cmd [-S] 514 ``` 515 516## aa工具错误码 517 518### 10103001 目标Ability可见性校验失败 519 520**错误信息** 521 522Failed to verify the visibility of the target ability. 523 524**错误描述** 525 526目标Ability可见性校验失败时,aa工具将返回该错误码。 527 528**可能原因** 529 530当目标应用在module.json5配置文件中的[abilities标签](../quick-start/module-configuration-file.md#abilities标签)/[extensionAbilities标签](../quick-start/module-configuration-file.md#extensionabilities标签)中的exported字段配置为false时,表示对应UIAbility组件/ExtensionAbility组件不可以被其他应用调用,也无法被aa工具命令拉起。 531 532**处理步骤** 533 534需要检查目标应用module.json5中对应Ability字段的exported配置是否为true,如果不为true,改为true重试即可。 535 536### 10104001 指定的Ability不存在 537**错误信息** 538 539The specified ability does not exist. 540 541**错误描述** 542 543当指定的Ability名称不存在时,aa工具将返回该错误码。 544 545**可能原因** 546 547指定的Ability未安装。 548 549**处理步骤** 550 5511. 检查aa命令的-a的参数abilityName和-b的参数bundleName是否正确。 5522. 检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 553 ``` 554 hdc shell bm dump -a 555 ``` 5563. 多HAP应用需确认Ability所属的HAP是否已被安装。可使用如下命令查询应用的包信息,若安装的应用中没有对应的HAP和Ability,说明Ability所属的HAP未被安装。 557 ``` 558 hdc shell bm dump -n 包名 559 ``` 560 561### 10105001 Ability服务连接失败 562 563**错误信息** 564 565Failed to connect to the ability service. 566 567**错误描述** 568 569连接Ability服务失败。 570 571**可能原因** 572 573调用接口时Ability服务断开。 574 575**处理步骤** 576 577尝试重启设备重新执行。 578 579### 10105002 获取Ability信息失败 580 581**错误信息** 582 583Failed to obtain ability information. 584 585**错误描述** 586 587获取Ability信息失败。 588 589**可能原因** 590 591生成Ability请求时通过BMS获取AbilityInfo为空。 592 593**处理步骤** 594 595检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 596 597 ``` 598 hdc shell bm dump -a 599 ``` 600 601### 10105003 App服务连接失败 602 603**错误信息** 604 605Failed to connect to the app service. 606 607**错误描述** 608 609App服务连接失败。 610 611**可能原因** 612 613调用接口时App服务断开。 614 615**处理步骤** 616 617尝试重启设备。 618 619### 10106001 当前设备不是开发者模式 620 621**错误信息** 622 623The current device is not in developer mode. 624 625**错误描述** 626 627当前设备不是开发者模式。 628 629**可能原因** 630 631当前设备不是开发者模式。 632 633**处理步骤** 634 635在设置中打开开发者模式。 636 637### 10106002 目标应用不支持Debug模式 638 639**错误信息** 640 641The target application does not support debug mode. 642 643**错误描述** 644 645目标应用不支持Debug模式。 646 647**可能原因** 648 649目标应用当前使用签名工具中“type”参数不为“debug”。 650 651**处理步骤** 652 653使用Debug签名证书重新签名,安装新签名出的HAP后,再尝试执行该该命令。 654 655### 10100101 获取应用信息失败 656 657**错误信息** 658 659Failed to obtain application information. 660 661**错误描述** 662 663从BMS查询到的App信息异常。 664 665**可能原因** 666 667从BMS查询到的App信息中应用名或包名异常。 668 669**处理步骤** 670 6711. 检查aa命令的-a的参数abilityName和-b的参数bundleName是否正确。 6722. 检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 673 ``` 674 hdc shell bm dump -a 675 ``` 6763. 多HAP应用需确认Ability所属的HAP是否已被安装。可使用如下命令查询应用的包信息,若安装的应用中没有对应的HAP和Ability,说明Ability所属的HAP未被安装。 677 ``` 678 hdc shell bm dump -n 包名 679 ``` 680 681### 10100102 aa start命令无法拉起UIExtensionAbility 682 683**错误信息** 684 685The aa start command cannot be used to launch a UIExtensionAbility. 686 687**错误描述** 688 689aa工具无法拉起UIExtensionAbility。 690 691**可能原因** 692 693aa start命令不支持启动UIExtensionAbility。 694 695**处理步骤** 696 697确认目标Ability是否为UIExtensionAbility,aa start命令无法拉起UIExtensionAbility。 698 699### 10103101 隐式启动未查找到匹配应用 700 701**错误信息** 702 703Failed to find a matching application for implicit launch. 704 705**错误描述** 706 707隐式启动无法查找到匹配的Ability。 708 709**可能原因** 710 711* 如果为隐式启动,可能是启动参数配置有误或指定的HAP包未安装。 712* 如果为显式启动,可能是命令中指定了bundleName、却未指定abilityName。 713 714**处理步骤** 715 716* 如果为隐式启动,需要确保启动参数配置正确,且指定的HAP包已安装。 717* 如果为显式启动,需要确保abilityName传参正确。 718 719### 10103102 传入的AppCloneIndex是一个无效值 720 721**错误信息** 722 723The passed appCloneIndex is invalid. 724 725**错误描述** 726 727传入一个无效的AppCloneIndex,返回该错误码。 728 729**可能原因** 730 731aa start命令的参数中携带的AppCloneIndex是一个无效值,则返回该错误码。 732 733**处理步骤** 734 735确认AppCloneIndex是否合法。 736 737### 10106101 上一个Ability未启动完成,先缓存在队列中等待后续启动 738 739**错误信息** 740 741The current ability will be placed in the queue to wait for the previous ability to finish launching. 742 743**错误描述** 744 745需要启动的Ability过多,由于系统处理能力有限,会先将请求缓存在队列中,按照顺序依次处理。 746 747**可能原因** 748 749系统并发大。 750 751**处理步骤** 752 753无需处理,等待启动即可。 754 755### 10106102 启动应用时,设备处于锁屏状态 756 757**错误信息** 758 759The device screen is locked during the application launch. 760 761**错误描述** 762 763启动应用时,设备处于锁屏状态。 764 765**可能原因** 766 767启动应用时无法解锁屏幕。 768 769**处理步骤** 770 771解释屏幕后重新尝试即可。 772 773### 10106103 目标应用为到期众测应用 774 775**错误信息** 776 777The target application is an expired crowdtesting application. 778 779**错误描述** 780 781当目标应用为众测应用并且到达测试期限时,方法将返回该错误码。 782 783**可能原因** 784 785众测应用到期,无法打开。 786 787**处理步骤** 788 789请检查应用是否众测到期,已过有效期的众测应用无法启动。 790 791### 10106105 目标应用被管控 792 793**错误信息** 794 795The target application is under control. 796 797**错误描述** 798 799当目标应用受到应用市场管控时,方法将返回该错误码。 800 801**可能原因** 802 803目标应用疑似存在恶意行为,受到应用市场管控不允许启动。 804 805**处理步骤** 806 807建议卸载该应用。 808 809### 10106106 目标应用被EDM管控 810 811**错误信息** 812 813The target application is managed by EDM. 814 815**错误描述** 816 817当目标应用受到企业设备管理管控时,方法将返回该错误码。 818 819**可能原因** 820 821目标应用被企业管理服务设置为禁止启动。 822 823**处理步骤** 824 825该设备是一个企业设备,目标应用被设置为禁止启动,开发者无法处理。 826 827### 10106107 当前设备不支持使用窗口选项 828 829**错误信息** 830 831The current device does not support using window options. 832 833**错误描述** 834 835尝试使用窗口选项但设备不支持。 836 837**可能原因** 838 839用户使用aa start命令指定了WindowOptions,但设备不支持。 840 841**处理步骤** 842 843删除aa start命令中代表WindowOptions的参数wl、wt、wh、ww后重试。 844 845### 10107102 指定的进程权限校验失败 846 847**错误信息** 848 849Permission verification failed for the specified process. 850 851**错误描述** 852 853当指定的进程权限校验失败时,方法将返回该错误码。 854 855**可能原因** 856 857指定的进程权限校验失败。 858 859**处理步骤** 860 861确认指定进程的权限是否正确。 862 863### 10108101 拉起Ability时内部错误 864 865**错误信息** 866 867An internal error occurs while attempting to launch the ability. 868 869**错误描述** 870 871当内存申请、多线程处理异常等内部处理错误时,方法将返回该错误码。 872 873**可能原因** 874 875内存申请、多线程处理等内核通用错误。具体原因可能包括:内部对象为空、处理超时、包管理获取应用信息失败、系统服务获取失败、启动的Ability实例已达到上限等原因。 876 877**处理步骤** 878 879内部错误是系统运行过程中出现的内部错误,开发者无法处理。 880 881### 10103201 目标Ability不是ServiceAbility类型 882 883**错误信息** 884 885The target ability is not of the ServiceAbility type. 886 887**错误描述** 888 889操作的目标Ability不是ServiceAbility类型。 890 891**可能原因** 892 893aa stop命令停止ServiceAbility时,-a的参数abilityName对应的Ability不是Service类型。 894 895**处理步骤** 896 897检查aa -a的参数abilityName对应的Abiility是否为ServiceAbility类型。 898 899### 10104002 获取指定包信息失败 900 901**错误信息** 902 903Failed to retrieve specified package information. 904 905**错误描述** 906 907获取指定包信息失败。 908 909**可能原因** 910 911指定的包名对应的应用没有安装。 912 913**处理步骤** 914 9151. 检查指定的包名是否正确。 9162. 检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 917 ``` 918 hdc shell bm dump -a 919 ``` 920 921### 10106401 杀死进程失败 922 923**错误信息** 924 925Failed to terminate the process. 926 927**错误描述** 928 929杀死进程失败。 930 931**可能原因** 932 9331. aa force-stop命令指定的应用不存在。 9342. 未成功连接到AppManagerService。 935 936**处理步骤** 937 9381. 检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 939 940 ``` 941 hdc shell bm dump -a 942 ``` 9432. 尝试重启设备。 944 945### 10106402 常驻进程无法被杀死 946 947**错误信息** 948 949Persistent processes cannot be terminated. 950 951**错误描述** 952 953常驻进程无法被杀死。 954 955**可能原因** 956 957aa force-stop命令指定的bundleName是常驻进程。 958 959**处理步骤** 960 961检查目标应用是否为常驻进程,常驻进程无法通过命令杀死。 962 963### 10108501 aa test命令内部错误 964 965**错误信息** 966 967An internal error occurs during the execution of the aa test command. 968 969**错误描述** 970 971当内存申请、多线程处理异常等内部处理错误时,方法将返回该错误码。 972 973**可能原因** 974 975内存申请、多线程处理等内核通用错误。具体原因可能包括:内部对象为空、处理超时、系统服务获取失败等原因。 976 977**处理步骤** 978 979内部错误是系统运行过程中出现的内部错误,开发者无法处理。 980 981### 10108601 进入/退出调试模式时内部错误 982 983**错误信息** 984 985An internal error occurs while attempting to enter/exit debug mode. 986 987**错误描述** 988 989当内存申请、多线程处理异常等内部处理错误时,方法将返回该错误码。 990 991**可能原因** 992 993内存申请、多线程处理等内核通用错误。具体原因可能包括:内部对象为空、处理超时、系统服务获取失败等原因。 994 995**处理步骤** 996 997内部错误是系统运行过程中出现的内部错误,开发者无法处理。 998 999### 10103601 指定的包名不存在 1000 1001**错误信息** 1002 1003The specified bundleName does not exist. 1004 1005**错误描述** 1006 1007用户指定的包名未找到时返回该错误码。 1008 1009**可能原因** 1010 1011aa attach/detach命令指定的包名不存在。 1012 1013**处理步骤** 1014 1015检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 1016 1017 ``` 1018 hdc shell bm dump -a 1019 ``` 1020 1021### 10106701 目标应用不是Debug应用 1022 1023**错误信息** 1024 1025Cannot debug applications using a release certificate. 1026 1027**错误描述** 1028 1029目标应用不是Debug应用。 1030 1031**可能原因** 1032 1033当前使用签名工具中“type”参数不为“debug”。 1034 1035**处理步骤** 1036 1037使用Debug签名证书重新签名,安装新签名出的HAP后,再尝试执行该该命令。 1038签名工具及签名证书的生成方式可以参考:[签名工具指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-signing)。