# aa工具 Ability assistant(Ability助手,简称为aa),是用于启动应用和启动测试用例的工具,为开发者提供基本的应用调试和测试能力,例如启动应用组件、强制停止进程、打印应用组件相关信息等。 ## 环境要求 在使用本工具前,开发者需要先获取[hdc工具](../dfx/hdc.md#环境准备),执行hdc shell。 本文中命令介绍均基于交互式命令环境。如果直接执行hdc shell [aa命令],则需要采用""来包裹aa命令,确保命令中的传参能被正确识别。示例如下: ```bash # 启动命令 hdc shell "aa start -A ohos.want.action.viewData -U 'https://www.example.com'" # 应用调试/调优命令 hdc shell "aa process -b com.example.myapplication -a EntryAbility -p perf-cmd" ``` ## aa工具命令列表 | 命令 | 描述 | |--------|--------| | -h/help | 帮助命令。用于查询aa支持的命令信息。| | start | 启动命令。用于启动一个应用组件,目标组件可以是FA模型的PageAbility和ServiceAbility组件,也可以是Stage模型的UIAbility和ServiceExtensionAbility组件,且目标组件相应配置文件中的exported标签不能配置为false。| | stop-service | 停止命令。用于停止ServiceAbility。 | | dump(deprecated) | 打印命令。用于打印应用组件的相关信息。| | force-stop | 强制停止进程命令。通过bundleName强制停止一个进程。| | test | 启动测试框架命令。根据所携带的参数启动测试框架。 | | attach | 进入调试模式命令。通过bundleName使指定应用进入调试模式。| | detach | 退出调试模式命令。通过bundleName使指定应用退出调试模式。| | appdebug | 等待调试命令。用于设置、取消设置应用等待调试状态,以及获取处于等待调试状态的应用包名和持久化信息。等待调试状态只对debug类型应用生效。appdebug的设置命令只对单个应用生效,当重复设置时,应用包名与持久化状态会替换成最新设置内容。| | process | 应用调试/调优命令。对应用进行调试或调优,IDE用该命令集成调试和调优工具。| | send-memory-level | onMemoryLevel回调命令。指定进程的pid和内存使用级别来触发该进程的onMemoryLevel生命周期回调。| ## 帮助命令(help) ```bash # 显示帮助信息 aa help ``` ## 启动命令(start) 启动一个应用组件,目标组件可以是FA模型的PageAbility和ServiceAbility组件,也可以是Stage模型的UIAbility和ServiceExtensionAbility组件,且目标组件相应配置文件中的exported标签不能配置为false。 ```bash # 显示启动Ability aa start [-d ] [-a -b ] [-m ] [-D] [-R] [-S] [-W] [--pi ] [--pb ] [--psn ] [--wl ] [--wt ] [--wh ] [--ww ] [-p ] # 隐式启动Ability。如果命令中的参数都不填,会导致启动失败。 aa start [-d ] [-U ] [-t ] [-A ] [-e ] [-D] [-R] [--pi ] [--pb ] [--psn ] [--wl ] [--wt ] [--wh ] [--ww ] [-p ] ``` **启动命令参数列表** | 参数 | 参数说明 | | -------- |-------------------| | -h/--help | 帮助信息。 | | -d | 可选参数,deviceId。 | | -a | 可选参数,abilityName。 | | -b | 可选参数,bundleName。 | | -m | 可选参数,moduleName。 | | -U | 可选参数,URI。 | | -A | 可选参数,action。 | | -e | 可选参数,entity。 | | -t | 可选参数,type。 | | --pi | 可选参数,整型类型键值对。 | | --pb | 可选参数,布尔类型键值对。 | | --ps | 可选参数,字符串类型键值对。 | | --psn | 可选参数,空字符串关键字。 | | --wl | 可选参数,windowLeft,窗口左边距,单位px。
**约束:**
仅当2in1设备处于开发者模式下,且被启动应用采用调试签名时,该字段生效。| | --wt | 可选参数,windowTop,窗口上边距,单位px。
**约束:**
仅当2in1设备处于开发者模式下,且被启动应用采用调试签名时,该字段生效。| | --wh | 可选参数,windowHeight,窗口高度,单位px。
**约束:**
仅当2in1设备处于开发者模式下,且被启动应用采用调试签名时,该字段生效。| | --ww | 可选参数,windowWidth,窗口宽度,单位px。
**约束:**
仅当2in1设备处于开发者模式下,且被启动应用采用调试签名时,该字段生效。| | -R | 可选参数,调试时是否开启多线程错误检测。携带该参数代表开启,不携带代表关闭。
**说明:** 从API version 14开始,支持该参数。 | | -S | 可选参数,调试时是否进入应用沙箱。携带该参数代表进入,不携带代表不进入。 | | -D | 可选参数,调试模式。 | | -p | 可选参数,调优命令。命令由调用方自定义。 | | -W | 可选参数,调优命令。用于测量UIAbility从启动到切换至前台状态耗时。
**说明:**
  - 从API version 20开始支持,支持该参数。
  - 仅当显式启动UIAbility(必须携带-b和-a参数)时,该参数生效。
**正常情况的返回信息如下:**
  - StartMode:UIAbility启动模式,值:Cold(冷启动)/Hot(热启动)。
  - BundleName:目标应用bundleName。
  - AbilityName:目标应用abilityName。
  - ModuleName:目标应用moduleName,命令中带有"-m"参数时会打印moduleName,否则不打印。
  - TotalTime:
    冷启动场景下,系统侧接收到aa启动UIAbility请求到该UIAbility完成首帧绘制的耗时,单位毫秒(ms)。
    热启动场景下,系统侧接收到aa启动UIAbility请求到该UIAbility状态切换至前台的耗时,单位毫秒(ms)。
  - WaitTime:命令启动到命令执行结束的耗时,单位毫秒(ms)。
**异常情况的返回信息如下:**
  - "The wait option does not support starting implict" :不支持隐式启动。
  - "The wait option does not support starting non-uiability" :不支持启动非UIAbility组件。 | **返回值**: 当启动成功时,返回"start ability successfully.";当启动失败时,返回"error: failed to start ability.",同时会包含相应的失败信息。 **错误码**: | 错误码ID | 错误信息 | | ------- | -------- | | 10103001 | Failed to verify the visibility of the target ability. | | 10104001 | The specified ability does not exist. | | 10105001 | Failed to connect to the ability service. | | 10105002 | Failed to obtain ability information. | | 10106002 | The aa start command's window option or the aa test command does not support app with release signature. | | 10100101 | Failed to obtain application information. | | 10100102 | The aa start command cannot be used to launch a UIExtensionAbility. | | 10103101 | Failed to find a matching application for implicit launch. | | 10103102 | The passed appCloneIndex is invalid. | | 10106101 | The current ability will be placed in the queue to wait for the previous ability to finish launching. | | 10106102 | The device screen is locked during the application launch. | | 10106103 | The target application is an expired crowdtesting application. | | 10106105 | The target application is under control. | | 10106106 | The target application is managed by EDM. | | 10106107 | The current device does not support using window options. | | 10107102 | Permission verification failed for the specified process. | | 10108101 | An internal error occurs while attempting to launch the ability. | **示例**: 以隐式启动Ability为例。 > **说明:** > > 本例中仅介绍了部分字段的使用。关于Ability匹配的详细规则参考[显式Want与隐式Want匹配规则](../application-models/explicit-implicit-want-mappings.md)。 - **目标应用**:修改module.json5配置,为目标Ability配置uris。 ```json { "name": "TargetAbility", // ...... "exported": true, "skills": [ { "actions":[ "ohos.want.action.viewData" ], "uris":[ { "scheme": "myscheme", "host": "www.test.com", "port": "8080", "path": "path" } ] } ] } ``` - **拉起方应用**:隐式启动Ability。 - 如果需要拉起应用的页面,可以使用-U命令,示例如下: ```bash aa start -U myscheme://www.test.com:8080/path ``` - 在上述基础上,如果需要携带参数,可以使用如下命令: ```bash aa start -U myscheme://www.test.com:8080/path --pi paramNumber 1 --pb paramBoolean true --ps paramString teststring --psn paramNullString ``` UIAbility获取传入参数示例如下: ```ts import { UIAbility, Want, AbilityConstant } from '@kit.AbilityKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; export default class TargetAbility extends UIAbility { onCreate(want:Want, launchParam: AbilityConstant.LaunchParam) { hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); let paramNumber = want.parameters?.paramNumber; let paramBoolean = want.parameters?.paramBoolean; let paramString = want.parameters?.paramString; let paramNullString = want.parameters?.paramNullString; } } ``` - 如果需要拉起浏览器并跳转指定页面,可以使用-A -U命令,示例如下: 本例中以`https://www.example.com`为例,请根据实际情况替换为真实的网址。 ```bash aa start -A ohos.want.action.viewData -U https://www.example.com ``` ## 停止命令(stop-service) 用于停止ServiceAbility。 ```bash aa stop-service [-d ] -a -b [-m ] ``` **停止命令参数列表** | 参数 | 参数说明 | | -------- | -------- | | -h/--help | 帮助信息。 | | -d | 可选参数,deviceId。 | | -a | 必选参数,abilityName。 | | -b | 必选参数,bundleName。 | | -m | 可选参数,moduleName。 | **返回值**: 当成功停止ServiceAbility时,返回"stop service ability successfully.";当停止失败时,返回"error: failed to stop service ability."。 **错误码**: | 错误码ID | 错误信息 | | ------- | -------- | | 10103001 | Failed to verify the visibility of the target ability. | | 10103201 | The target ability is not of the ServiceAbility type. | | 10104001 | The specified ability does not exist. | | 10105001 | Failed to connect to the ability service. | | 10105002 | Failed to obtain ability information. | **示例**: ```bash # 停止一个ServiceAbility aa stop-service -a EntryAbility -b com.example.myapplication -m entry ``` ## 打印命令(dump(deprecated)) 用于打印应用组件的相关信息。 ```bash aa dump -a ``` > **说明:** > > aa dump命令从API version 7开始支持,从API version 9废弃,替换命令为[hidumper](../dfx/hidumper.md) -s AbilityManagerService。 **打印命令参数列表** | 参数 | 二级参数 | 参数说明 | | -------- | -------- | -------- | | -h/--help | - | 帮助信息。 | | -a/--all | - | 打印所有mission内的应用组件信息。 | | -l/--mission-list | type(缺省打印全部) | 服务侧为了方便管理任务链,内部维护了4种类型的任务链。
可取值:
- NORMAL:正常启动的任务链(比如A拉起B拉起C, 则对应的任务链是A->B->C)
- DEFAULT_STANDARD:已经被破坏的任务链中的任务, 启动模式为`multiton`的任务被放到该任务链中, 这里面的任务之间没有关联关系
- DEFAULT_SINGLE:已经被破坏的任务链中的任务, 启动模式为`singleton`的任务被放到该任务链中, 这里面的任务之间没有关联关系
- LAUNCHER:launcher的任务链 | | -e/--extension | elementName | 打印扩展组件信息。 | | -u/--userId | UserId | 打印指定UserId的栈信息,需要和其他参数组合使用,例如aa dump -a -u 100、aa dump -d -u 100。 | | -d/--data | - | 打印DataAbility相关信息。 | | -i/--ability | AbilityRecord ID | 打印指定应用组件详细信息。 | | -c/--client | - | 打印应用组件详细信息,需要和其他参数组合使用,例如aa dump -a -c、aa dump -i 21 -c。 | | -p/--pending | - | 打印pendingWant信息,需要和其他参数组合使用,例如aa dump -a -p。 | | -r/--process | - | 打印应用进程信息,需要和其他参数组合使用,例如aa dump -a -r。 | **错误码**: | 错误码ID | 错误信息 | | ------- | -------- | | 10105001 | Failed to connect to the ability service. | **示例**: ```bash # 打印所有mission内的应用组件信息 aa dump -a ``` ![aa-dump-a](figures/aa-dump-a.png) ```bash # 打印所有任务链 aa dump -l ``` ![aa-dump-l](figures/aa-dump-l.png) ```bash # 打印指定应用组件详细信息 aa dump -i 105 ``` ![aa-dump-i](figures/aa-dump-i.png) ## 强制停止进程命令(force-stop) 通过bundleName强制停止一个进程。 ```bash aa force-stop ``` **返回值**: 当成功强制停止该进程时,返回"force stop process successfully.";当强制停止失败时,返回"error: failed to force stop process."。 **错误码**: | 错误码ID | 错误信息 | | ------- | -------- | | 10105001 | Failed to connect to the ability service. | | 10104002 | Failed to retrieve specified package information. | | 10106401 | Failed to terminate the process. | | 10106402 | Persistent processes cannot be terminated. | **示例**: ```bash # 通过bundleName强制停止一个进程 aa force-stop com.example.myapplication ``` ## 启动测试框架命令(test) 根据所携带的参数启动测试框架。 ```bash aa test -b [-m ] [-p ] [-s class ] [-s level ] [-s size ] [-s testType ] [-s timeout ] [-s ] [-w ] -s unittest ``` > **说明**: > > 关于class、level、size、testType等参数的详细说明请参见[aa test命令执行配置参数](../application-test/arkxtest-guidelines.md#在cmd执行)。 **启动测试框架命令参数列表** | 参数 | 参数说明 | | -------- | -------- | | -h/--help | 帮助信息。 | | -b | 必选参数,bundleName。 | | -s unittest | 必选参数,testRunner。 | | -p | 可选参数,testRunner的packageName。
**说明**:该可选参数仅可在FA模型下使用。 | | -m | 可选参数,testRunner的moduleName。
**说明**:该可选参数仅可在Stage模型下使用。 | | -s class | 可选参数,指定要执行的测试套或测试用例。 | | -s level | 可选参数,指定要执行用例的用例级别。 | | -s size | 可选参数,指定要执行用例的用例规模。 | | -s testType | 可选参数,指定要执行用例的用例类型。 | | -s timeout | 可选参数,测试用例执行的超时时间(单位ms),默认为5000。 | | -s \ | 可选参数,任意键值对。 | | -w | 可选参数,指定测试运行时间(单位ms)。 | | -D | 可选参数,调试模式。 | **返回值**: 当成功启动测试框架时,返回"user test started.";当启动失败时,返回"error: failed to start user test."和对应的错误信息。 **错误码**: | 错误码ID | 错误信息 | | ------- | -------- | | 10104002 | Failed to retrieve specified package information. | | 10105001 | Failed to connect to the ability service. | | 10106002 | The aa start command's window option or the aa test command does not support app with release signature. | | 10108501 | An internal error occurs during the execution of the aa test command. | **示例**: ```bash # 启动测试框架 aa test -b com.example.myapplication -s unittest ActsAbilityTest # 启动测试框架并设置moduleName aa test -b com.example.myapplication -m entry_test -s unittest ActsAbilityTest # 启动测试框架并指定超时时间 aa test -b com.example.myapplication -m entry_test -s timeout 10000 -s unittest ActsAbilityTest ``` ## 进入调试模式命令(attach) 通过bundleName使指定应用进入调试模式。 ```bash aa attach -b ``` **进入调试模式命令参数列表** | 参数 | 参数说明 | | -------- |-------------------| | -h/--help | 帮助信息。 | | -b | 必选参数,bundleName。 | **返回值**: 当应用成功进入调试模式时,返回"attach app debug successfully.";当给定参数不合法时,返回"fail: unknown option."并打印帮助信息。 **错误码**: | 错误码ID | 错误信息 | | ------- | -------- | | 10105001 | Failed to connect to the ability service. | | 10106001 | The current device is not in developer mode. | | 10106002 | The aa start command's window option or the aa test command does not support app with release signature. | | 10103601 | The specified bundleName does not exist. | | 10108601 | An internal error occurs while attempting to enter/exit debug mode. | **示例**: ```bash # 通过bundleName使指定应用进入调试模式 aa attach -b com.example.myapplication ``` ## 退出调试模式命令(detach) 通过bundleName使指定应用退出调试模式。 ```bash aa detach -b ``` **退出调试模式命令参数列表** | 参数 | 参数说明 | | -------- |-------------------| | -h/--help | 帮助信息。 | | -b | 必选参数,bundleName。 | **返回值**: 当应用成功退出调试模式时,返回"detach app debug successfully.";当给定参数不合法时,返回"fail: unknown option."并打印帮助信息。 **错误码**: | 错误码ID | 错误信息 | | ------- | -------- | | 10105001 | Failed to connect to the ability service.| | 10106001 | The current device is not in developer mode. | | 10106002 | The aa start command's window option or the aa test command does not support app with release signature. | | 10103601 | The specified bundleName does not exist. | | 10108601 | An internal error occurs while attempting to enter/exit debug mode. | **示例**: ```bash # 通过bundleName使指定应用退出调试模式 aa detach -b com.example.myapplication ``` ## 等待调试命令(appdebug) 用于设置、取消设置应用等待调试状态,以及获取处于等待调试状态的应用包名和持久化信息。等待调试状态只对debug类型应用生效。appdebug的设置命令只对单个应用生效,当重复设置时,应用包名与持久化状态会替换成最新设置内容。 ```bash aa appdebug -b [-p] ``` **等待调试命令参数列表** | 参数 | 二级参数 | 参数说明 | | -------- | -------- | -------- | | -h/--help | - | 帮助信息。 | | -b/--bundlename | bundleName | 为指定应用设置等待调试状态。设置时,不会进行包名合法化的校验。 | | -p/--persist | - | 可选参数;持久化标志位,加入该参数,代表持续设置应用为等待调试状态,无论重启设备、重装应用都可以持续生效;不加入该参数,代表等待调试状态仅可以在重启设备前生效一次。需要和-b参数组合使用,例如:aa appdebug -b <bundleName> -p。 | | -c/--cancel | - | 取消等待调试状态。 | | -g/--get | - | 获取等待调试状态的应用包名和持久化信息。 | **返回值**: 当执行成功时,返回"app debug successfully.";当执行失败时,返回"error: failed to app debug.";当失败原因为非开发者模式时,返回"error: not developer mode."。 **错误码**: | 错误码ID | 错误信息 | | ------- | -------- | | 10105003 | Failed to connect to the app service. | | 10106001 | The current device is not in developer mode. | | 10106701 | Cannot debug applications using a release certificate. | **示例**: ```bash # 显示帮助信息 aa appdebug -h # 为指定应用设置等待调试状态 aa appdebug -b com.example.myapplication [-p] # 取消等待调试状态 aa appdebug -c # 获取等待调试状态的应用包名和持久化信息 # 获取信息例: bundle name : com.example.publishsystem, persist : false aa appdebug -g ``` ## 应用调试/调优命令(process) 对应用进行调试或调优,IDE用该命令集成调试和调优工具。 ```bash # 调试应用 aa process -b -a [-m ] [-D ] [-S] # 调优应用 aa process -b -a [-m ] [-p ] [-S] ``` **应用调试/调优命令参数列表** | 参数 | 参数说明 | | -------- | -------- | | -h/--help | 帮助信息。 | | -b | 必选参数,bundleName。 | | -a | 必选参数,abilityName。 | | -m | 可选参数,moduleName。 | | -p | 可选参数,调优命令,与-D必须二选一。命令由调用方自定义。 | | -D | 可选参数,调试命令,与-p必须二选一。命令由调用方自定义。 | | -S | 可选参数,进入应用沙箱。 | **返回值**: 当执行成功时,返回"start native process successfully.";当执行失败时,返回"error: failed to start native process.";当给定参数不合法时,返回"error: option requires a value."并打印帮助信息。 | 错误码ID | 错误信息 | | ------- | -------- | | 10105002 | Failed to obtain ability information. | | 10105003 | Failed to connect to the app service. | | 10106002 | The aa start command's window option or the aa test command does not support app with release signature. | **示例**: ```bash # 调试应用 aa process -b com.example.myapplication -a EntryAbility -D debug_cmd [-S] # 调优应用 aa process -b com.example.myapplication -a EntryAbility -p perf-cmd [-S] ``` ## onMemoryLevel回调命令(send-memory-level) 从API version 13开始,开发者可以通过该命令来调试应用的[onMemoryLevel](../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md#onmemorylevel)生命周期。通过在参数中指定进程的pid和内存使用级别来触发该进程的onMemoryLevel生命周期回调。 ```bash # 触发onMemoryLevel回调 aa send-memory-level -p -l ``` **参数列表** | 参数 | 参数说明 | | -------- | -------- | | -h/--help | 帮助信息。 | | -p | 必选参数,进程pid。 | | -l | 必选参数,内存使用级别,具体值参考[AbilityConstant.MemoryLevel](../reference/apis-ability-kit/js-apis-app-ability-abilityConstant.md#memorylevel)。 | **返回值**: 当执行成功时,返回"send memory level successfully.";当执行失败时,返回"error: failed to send memory level.";当给定参数值缺失时,返回"fail: unknown option."并打印帮助信息。 | 错误码ID | 错误信息 | | ------- | -------- | | 10104003 | The specified pid does not exist. | | 10104004 | The specified level does not exist. | **示例**: ```bash # 触发进程号为6066应用的onMemoryLevel回调,此时回调的level为0 aa send-memory-level -p 6066 -l 0 ``` ## aa工具错误码 ### 10103001 目标Ability可见性校验失败 **错误信息** Failed to verify the visibility of the target ability. **错误描述** 目标Ability可见性校验失败时,aa工具将返回该错误码。 **可能原因** 当目标应用在module.json5配置文件中的[abilities标签](../quick-start/module-configuration-file.md#abilities标签)/[extensionAbilities标签](../quick-start/module-configuration-file.md#extensionabilities标签)中的exported字段配置为false时,表示对应UIAbility组件/ExtensionAbility组件不可以被其他应用调用,也无法被aa工具命令拉起。 **处理步骤** 需要检查目标应用module.json5中对应Ability字段的exported配置是否为true,如果不为true,改为true重试即可。 ### 10104001 指定的Ability不存在 **错误信息** The specified ability does not exist. **错误描述** 当指定的Ability名称不存在时,aa工具将返回该错误码。 **可能原因** 指定的Ability未安装。 **处理步骤** 1. 检查aa命令的-a的参数abilityName和-b的参数bundleName是否正确。 2. 检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 ``` hdc shell bm dump -a ``` 3. 多HAP应用需确认Ability所属的HAP是否已被安装。可使用如下命令查询应用的包信息,若安装的应用中没有对应的HAP和Ability,说明Ability所属的HAP未被安装。 ``` hdc shell bm dump -n 包名 ``` ### 10104003 指定的pid不存在 **错误信息** The specified pid does not exist. **错误描述** 当指定的pid不存在时,aa工具将返回该错误码。 **可能原因** 指定的pid不存在。 **处理步骤** 检查-p参数指定的进程号在设备上是否存在。 ### 10104004 指定的内存使用级别不存在 **错误信息** The specified level does not exist. **错误描述** 当指定的内存使用级别不存在时,aa工具将返回该错误码。 **可能原因** 指定的内存使用级别不存在。 **处理步骤** 检查-l参数指定的内存使用级别是否为[0, 2]区间内的整数值。 ### 10105001 Ability服务连接失败 **错误信息** Failed to connect to the ability service. **错误描述** 连接Ability服务失败。 **可能原因** 调用接口时Ability服务断开。 **处理步骤** 尝试重启设备重新执行。 ### 10105002 获取Ability信息失败 **错误信息** Failed to obtain ability information. **错误描述** 获取Ability信息失败。 **可能原因** 生成Ability请求时通过BMS获取AbilityInfo为空。 **处理步骤** 检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 ``` hdc shell bm dump -a ``` ### 10105003 App服务连接失败 **错误信息** Failed to connect to the app service. **错误描述** App服务连接失败。 **可能原因** 调用接口时App服务断开。 **处理步骤** 尝试重启设备。 ### 10106001 当前设备不是开发者模式 **错误信息** The current device is not in developer mode. **错误描述** 当前设备不是开发者模式。 **可能原因** 当前设备不是开发者模式。 **处理步骤** 在设置中打开开发者模式。操作如下: 查看设备的“设置 > 系统”中是否有“开发者选项”。如果不存在,可在“设置 > 关于本机”连续七次单击“版本号”,直到提示“开启开发者模式”,点击“确认开启”后输入PIN码(如果已设置),设备将自动重启。请等待设备完成重启后,可以在“设置 > 系统”中查看。 ### 10106002 不支持release签名的应用程序 **错误信息** The aa start command's window option or the aa test command does not support app with release signature. **错误描述** aa start命令的参数wl、wt、wh、ww或aa test命令不支持release签名的应用程序。 **可能原因** 目标应用为release签名。 **处理步骤** 使用Debug签名证书重新签名,安装新签名出的HAP后,再尝试执行该该命令。 ### 10100101 获取应用信息失败 **错误信息** Failed to obtain application information. **错误描述** 从BMS查询到的App信息异常。 **可能原因** 从BMS查询到的App信息中应用名或包名异常。 **处理步骤** 1. 检查aa命令的-a的参数abilityName和-b的参数bundleName是否正确。 2. 检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 ``` hdc shell bm dump -a ``` 3. 多HAP应用需确认Ability所属的HAP是否已被安装。可使用如下命令查询应用的包信息,若安装的应用中没有对应的HAP和Ability,说明Ability所属的HAP未被安装。 ``` hdc shell bm dump -n 包名 ``` ### 10100102 aa start命令无法拉起UIExtensionAbility **错误信息** The aa start command cannot be used to launch a UIExtensionAbility. **错误描述** aa工具无法拉起UIExtensionAbility。 **可能原因** aa start命令不支持启动UIExtensionAbility。 **处理步骤** 确认目标Ability是否为UIExtensionAbility,aa start命令无法拉起UIExtensionAbility。 ### 10103101 隐式启动未查找到匹配应用 **错误信息** Failed to find a matching application for implicit launch. **错误描述** 隐式启动无法查找到匹配的Ability。 **可能原因** * 如果为隐式启动,可能是启动参数配置有误或指定的HAP包未安装。 * 如果为显式启动,可能是命令中指定了bundleName、却未指定abilityName。 **处理步骤** * 如果为隐式启动,需要确保启动参数配置正确,且指定的HAP包已安装。 * 如果为显式启动,需要确保abilityName传参正确。 ### 10103102 传入的AppCloneIndex是一个无效值 **错误信息** The passed appCloneIndex is invalid. **错误描述** 传入一个无效的AppCloneIndex,返回该错误码。 **可能原因** aa start命令的参数中携带的AppCloneIndex是一个无效值,则返回该错误码。 **处理步骤** 确认AppCloneIndex是否合法。 ### 10106101 上一个Ability未启动完成,先缓存在队列中等待后续启动 **错误信息** The current ability will be placed in the queue to wait for the previous ability to finish launching. **错误描述** 需要启动的Ability过多,由于系统处理能力有限,会先将请求缓存在队列中,按照顺序依次处理。 **可能原因** 系统并发大。 **处理步骤** 无需处理,等待启动即可。 ### 10106102 启动应用时,设备处于锁屏状态 **错误信息** The device screen is locked during the application launch. **错误描述** 启动应用时,设备处于锁屏状态。 **可能原因** 启动应用时无法解锁屏幕。 **处理步骤** 解锁屏幕后重新尝试即可。 ### 10106103 目标应用为到期众测应用 **错误信息** The target application is an expired crowdtesting application. **错误描述** 当目标应用为众测应用并且到达测试期限时,方法将返回该错误码。 **可能原因** 众测应用到期,无法打开。 **处理步骤** 请检查应用是否众测到期,已过有效期的众测应用无法启动。 ### 10106105 目标应用被管控 **错误信息** The target application is under control. **错误描述** 当目标应用受到应用市场管控时,方法将返回该错误码。 **可能原因** 目标应用疑似存在恶意行为,受到应用市场管控不允许启动。 **处理步骤** 建议卸载该应用。 ### 10106106 目标应用被EDM管控 **错误信息** The target application is managed by EDM. **错误描述** 当目标应用受到企业设备管理管控时,方法将返回该错误码。 **可能原因** 目标应用被企业管理服务设置为禁止启动。 **处理步骤** 该设备是一个企业设备,目标应用被设置为禁止启动,开发者无法处理。 ### 10106107 当前设备不支持使用窗口选项 **错误信息** The current device does not support using window options. **错误描述** 尝试使用窗口选项但设备不支持。 **可能原因** 用户使用aa start命令指定了WindowOptions,但设备不支持。 **处理步骤** 删除aa start命令中代表WindowOptions的参数wl、wt、wh、ww后重试。 ### 10107102 指定的进程权限校验失败 **错误信息** Permission verification failed for the specified process. **错误描述** 当指定的进程权限校验失败时,方法将返回该错误码。 **可能原因** 指定的进程权限校验失败。 **处理步骤** 确认指定进程的权限是否正确。 ### 10108101 拉起Ability时内部错误 **错误信息** An internal error occurs while attempting to launch the ability. **错误描述** 当内存申请、多线程处理异常等内部处理错误时,方法将返回该错误码。 **可能原因** 内存申请、多线程处理等内核通用错误。具体原因可能包括:内部对象为空、处理超时、包管理获取应用信息失败、系统服务获取失败、启动的Ability实例已达到上限等原因。 **处理步骤** 内部错误是系统运行过程中出现的内部错误,开发者无法处理。 ### 10103201 目标Ability不是ServiceAbility类型 **错误信息** The target ability is not of the ServiceAbility type. **错误描述** 操作的目标Ability不是ServiceAbility类型。 **可能原因** aa stop命令停止ServiceAbility时,-a的参数abilityName对应的Ability不是Service类型。 **处理步骤** 检查aa -a的参数abilityName对应的Ability是否为ServiceAbility类型。 ### 10104002 获取指定包信息失败 **错误信息** Failed to retrieve specified package information. **错误描述** 获取指定包信息失败。 **可能原因** 指定的包名对应的应用没有安装。 **处理步骤** 1. 检查指定的包名是否正确。 2. 检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 ``` hdc shell bm dump -a ``` ### 10106401 杀死进程失败 **错误信息** Failed to terminate the process. **错误描述** 杀死进程失败。 **可能原因** 1. aa force-stop命令指定的应用不存在。 2. 未成功连接到AppManagerService。 **处理步骤** 1. 检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 ``` hdc shell bm dump -a ``` 2. 尝试重启设备。 ### 10106402 常驻进程无法被杀死 **错误信息** Persistent processes cannot be terminated. **错误描述** 常驻进程无法被杀死。 **可能原因** aa force-stop命令指定的bundleName是常驻进程。 **处理步骤** 检查目标应用是否为常驻进程,常驻进程无法通过命令杀死。 **处理步骤** 关闭目标应用的多实例之后重新尝试。 ### 10108501 aa test命令内部错误 **错误信息** An internal error occurs during the execution of the aa test command. **错误描述** 当内存申请、多线程处理异常等内部处理错误时,方法将返回该错误码。 **可能原因** 内存申请、多线程处理等内核通用错误。具体原因可能包括:内部对象为空、处理超时、系统服务获取失败等原因。 **处理步骤** 内部错误是系统运行过程中出现的内部错误,开发者无法处理。 ### 10108601 进入/退出调试模式时内部错误 **错误信息** An internal error occurs while attempting to enter/exit debug mode. **错误描述** 当内存申请、多线程处理异常等内部处理错误时,方法将返回该错误码。 **可能原因** 内存申请、多线程处理等内核通用错误。具体原因可能包括:内部对象为空、处理超时、系统服务获取失败等原因。 **处理步骤** 内部错误是系统运行过程中出现的内部错误,开发者无法处理。 ### 10103601 指定的包名不存在 **错误信息** The specified bundleName does not exist. **错误描述** 用户指定的包名未找到时返回该错误码。 **可能原因** aa attach/detach命令指定的包名不存在。 **处理步骤** 检查指定的bundleName对应的应用是否安装。可使用如下命令查询已安装的应用列表,若该bundleName不在查询结果中,说明应用未安装成功。 ``` hdc shell bm dump -a ``` ### 10106701 目标应用不是Debug应用 **错误信息** Cannot debug applications using a release certificate. **错误描述** 目标应用不是Debug应用。 **可能原因** 当前使用签名工具中“type”参数不为“debug”。 **处理步骤** 使用Debug签名证书重新签名,安装新签名出的HAP后,再尝试执行该该命令。 签名工具及签名证书的生成方式可以参考:[签名工具指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-signing)。