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